diff --git a/.env.example b/.env.example
new file mode 100644
index 000000000..3d94fb811
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,5 @@
+# infura key created at infura.io
+INFURA_ID=XXXXXX
+NEXT_PUBLIC_JSON_RPC_URL=XXXXXX
+NEXT_PUBLIC_WALLET_CONNECT_ID=XXXXXX
+NEXT_PUBLIC_DEBUG=
diff --git a/.eslintignore b/.eslintignore
index f9bbb0e95..c3167b887 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,4 @@
dist/
.next/
dist/_next/
+!.solhint.json
diff --git a/.eslintrc b/.eslintrc.json
similarity index 81%
rename from .eslintrc
rename to .eslintrc.json
index 7be7ad443..ec19e9ecf 100644
--- a/.eslintrc
+++ b/.eslintrc.json
@@ -6,7 +6,12 @@
"rules": {
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-empty-function": "off",
- "prettier/prettier": "warn"
+ "prettier/prettier": [
+ "warn",
+ {
+ "endOfLine": "auto"
+ }
+ ]
},
"env": {
"browser": true,
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 000000000..ffa5b8821
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @rndquu
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 000000000..e7442e766
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,23 @@
+# Contributing
+- We welcome everybody to participate in improving the codebase.
+- We offer financial incentives for solved issues.
+- Please learn how to contribute via the DevPool [here](https://dao.ubq.fi/devpool).
+
+### Coding Styleguide
+
+- We use camelCase for identifiers (variable, function, method names) do not use snake_case
+- `NFT` should be `Nft` in identifers e.g. `creditNft`
+- Do not refer to token symbols directly in identifiers, instead write the intent of the token. We have the ability to update the names of the tokens (as we already have done on Ethereum mainnet) which leads to confusion.
+ - `uAD` ⮕ `dollar`
+ - `uCR` ⮕ `credit`
+ - `uCR-NFT` ⮕ `creditNft`
+ - `UBQ` ⮕ `governance`
+
+- We generally should not use "Ubiquity" in identifers and filenames. This is the Ubiquity Dollar repository so Ubiquity is implied.
+ - The exception is when we are working in third party contexts, for example the Curve (3pool) metapool related code, it is good to write ubiquityDollar because the other assets in the pool are USDC, USDT and DAI (other types of dollars!)
+
+#### Contract Renames
+
+- We rebranded "Bonding" to "Staking" to disambiguate our bonds (e.g. Chicken Bonds) branding.
+- We rebranded "Debts" to "Credits" because it has a positive connotation for the users.
+- We rebranded "Ubiquity Algorithmic Dollar" to "Ubiquity Dollar" because the term "algorithmic" is contentious in this context after Luna.
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 000000000..cde984363
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,6 @@
+Resolves #
+
+
diff --git a/.github/ubiquibot-config.yml b/.github/ubiquibot-config.yml
new file mode 100644
index 000000000..ca0ec82f0
--- /dev/null
+++ b/.github/ubiquibot-config.yml
@@ -0,0 +1,5 @@
+payments:
+ evmNetworkId: 100
+ basePriceMultiplier: 3
+ issueCreatorMultiplier: 3
+ maxPermitPrice: 1000
\ No newline at end of file
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
new file mode 100644
index 000000000..3cd8d391e
--- /dev/null
+++ b/.github/workflows/build-and-test.yml
@@ -0,0 +1,51 @@
+name: Build & Test
+
+on:
+ push:
+ pull_request:
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+jobs:
+ build-and-test:
+ name: Build & Test
+ runs-on: ubuntu-22.04
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "20.10.0"
+
+ - name: Install dependencies
+ run: sudo apt -y update && sudo apt -y install libusb-1.0-0-dev libudev-dev
+
+ - name: Setup Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly-5be158ba6dc7c798a6f032026fe60fc01686b33b
+
+ - name: Yarn Install
+ run: yarn install --mode=skip-build && yarn allow-scripts
+
+ - name: Setup Forge
+ run: yarn workspace @ubiquity/contracts forge:install
+
+ - name: Build All
+ env:
+ FOUNDRY_DENY_WARNINGS: true
+ run: yarn build
+
+ - name: Test All
+ run: yarn test:all
+
+ - name: Upload build artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: static
+ path: packages/dapp/dist
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 000000000..c79628ea1
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,35 @@
+name: CodeQL Analysis
+
+on:
+ pull_request:
+ push:
+ branches:
+ - development
+
+jobs:
+ code-ql-analysis:
+ name: CodeQL Analysis
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: ["javascript", "typescript"]
+ # CodeQL currently supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
+ # Modified to support codebase. Currently no support for Solidity Language
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ - name: Init CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
diff --git a/.github/workflows/conventional-commits.yml b/.github/workflows/conventional-commits.yml
new file mode 100644
index 000000000..6482cd5e2
--- /dev/null
+++ b/.github/workflows/conventional-commits.yml
@@ -0,0 +1,14 @@
+name: Conventional Commits
+
+on:
+ pull_request:
+ push:
+ branches: [development]
+
+jobs:
+ conventional-commits:
+ name: Conventional Commits
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: ubiquity/action-conventional-commits@master
diff --git a/.github/workflows/core-contracts-storage-check.yml b/.github/workflows/core-contracts-storage-check.yml
new file mode 100644
index 000000000..085e4d3bb
--- /dev/null
+++ b/.github/workflows/core-contracts-storage-check.yml
@@ -0,0 +1,71 @@
+name: Check For Core Contracts Storage Changes
+
+on:
+ push:
+ branches:
+ - development
+ pull_request:
+
+jobs:
+ provide_contracts:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Install Foundry
+ uses: onbjerg/foundry-toolchain@v1
+ with:
+ version: nightly
+
+ - name: Narrow down test matrix scope to changed contracts to limit API requests
+ id: changed-contracts
+ uses: tj-actions/changed-files@v42
+ with:
+ files_yaml: |
+ contracts:
+ - packages/contracts/src/dollar/core/*.sol
+
+ - name: Set contracts matrix
+ id: set-matrix
+ working-directory: packages/contracts
+ if: steps.changed-contracts.outputs.contracts_any_changed == 'true'
+ env:
+ CHANGED_CONTRACTS: ${{ steps.changed-contracts.outputs.contracts_all_changed_files }}
+ run: |
+ for CONTRACT in "$CHANGED_CONTRACTS"; do
+ echo ${CONTRACT} | xargs basename -a | cut -d'.' -f1 | xargs -I{} echo src/dollar/core/{}.sol:{} >> contracts.txt
+ done
+ echo "matrix=$(cat contracts.txt | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT
+
+ outputs:
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
+
+ check_storage_layout:
+ needs: provide_contracts
+ runs-on: ubuntu-latest
+ if: ${{ needs.provide_contracts.outputs.matrix != '[]' && needs.provide_contracts.outputs.matrix != '' }}
+
+ strategy:
+ matrix:
+ contract: ${{ fromJSON(needs.provide_contracts.outputs.matrix) }}
+
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Install Foundry
+ uses: onbjerg/foundry-toolchain@v1
+ with:
+ version: nightly
+
+ - name: Check For Core Contracts Storage Changes
+ uses: Rubilmax/foundry-storage-check@main
+ with:
+ workingDirectory: packages/contracts
+ contract: ${{ matrix.contract }}
+ failOnRemoval: true
+
diff --git a/.github/workflows/coverage-check.yml b/.github/workflows/coverage-check.yml
new file mode 100644
index 000000000..df4fd72bd
--- /dev/null
+++ b/.github/workflows/coverage-check.yml
@@ -0,0 +1,119 @@
+name: Compare Test Coverage
+# This compares test coverage and throws an error if test coverage is lower than the previous run.
+
+on:
+ push:
+ branches: [development]
+ pull_request:
+ branches: [development]
+
+jobs:
+ test-coverage:
+ name: Compare Test Coverage
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: read
+
+ steps:
+ - name: Checkout development branch
+ uses: actions/checkout@v3
+ with:
+ ref: development
+ path: development
+
+ - name: Setup Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly-5be158ba6dc7c798a6f032026fe60fc01686b33b
+
+ - name: Install dependencies
+ run: sudo apt-get install lcov
+
+ - name: Get development branch coverage
+ id: coverage-development
+ working-directory: development/packages/contracts
+ run: |
+ # generates lcov.info
+ forge build && forge coverage --report lcov
+
+ # Merge lcov files
+ lcov \
+ --rc lcov_branch_coverage=1 \
+ --add-tracefile lcov.info \
+ --output-file merged-lcov.info
+
+ # Filter out node_modules, test, and mock files
+ lcov \
+ --rc lcov_branch_coverage=1 \
+ --remove merged-lcov.info \
+ --output-file filtered-lcov.info \
+ "*node_modules*" \
+ "*test*" \
+ "*mock*" \
+ "*scripts*" \
+ "src/dollar/mocks/*" \
+ "src/dollar/utils/*" \
+ "src/deprecated/*" \
+ "test/*" \
+
+ # Generate summary
+ COVERAGE_DEVELOPMENT_OUTPUT=$(lcov \
+ --rc lcov_branch_coverage=1 \
+ --list filtered-lcov.info)
+
+ echo COVERAGE=$(echo "${COVERAGE_DEVELOPMENT_OUTPUT}" | tail -n 1 | cut -d % -f 1 | cut -d \| -f 2) >> $GITHUB_OUTPUT
+
+ - name: Delete development branch folder
+ run: rm -rf development
+
+ - name: Checkout code in PR branch
+ uses: actions/checkout@v3
+
+ - name: Get PR branch coverage
+ id: coverage-pr
+ working-directory: packages/contracts
+ run: |
+ # generates lcov.info
+ forge build && forge coverage --report lcov
+
+ # Merge lcov files
+ lcov \
+ --rc lcov_branch_coverage=1 \
+ --add-tracefile lcov.info \
+ --output-file merged-lcov.info
+
+ # Filter out node_modules, test, and mock files
+ lcov \
+ --rc lcov_branch_coverage=1 \
+ --remove merged-lcov.info \
+ --output-file filtered-lcov.info \
+ "*node_modules*" \
+ "*test*" \
+ "*mock*" \
+ "*scripts*" \
+ "src/dollar/mocks/*" \
+ "src/dollar/utils/*" \
+ "src/deprecated/*" \
+ "test/*" \
+
+ # Generate summary
+ COVERAGE_DEVELOPMENT_OUTPUT=$(lcov \
+ --rc lcov_branch_coverage=1 \
+ --list filtered-lcov.info)
+ echo COVERAGE=$(echo "${COVERAGE_DEVELOPMENT_OUTPUT}" | tail -n 1 | cut -d % -f 1 | cut -d \| -f 2) >> $GITHUB_OUTPUT
+
+ - name: Print coverages
+ run: |
+ echo Development branch coverage: ${{ steps.coverage-development.outputs.COVERAGE }}
+ echo PR branch coverage: ${{ steps.coverage-pr.outputs.COVERAGE }}
+
+ - name: Compare coverages
+ if: ${{ steps.coverage-development.outputs.COVERAGE > steps.coverage-pr.outputs.COVERAGE }}
+ run: |
+ echo "Error: test coverage decreased"
+ exit 1
+
+ - name: Upload test coverage report to coveralls.io
+ uses: coverallsapp/github-action@v2
+ with:
+ file: packages/contracts/filtered-lcov.info
diff --git a/.github/workflows/create-diagram.yml b/.github/workflows/create-diagram.yml
new file mode 100644
index 000000000..a77fa8087
--- /dev/null
+++ b/.github/workflows/create-diagram.yml
@@ -0,0 +1,27 @@
+name: Create Diagram
+on:
+ workflow_dispatch: {}
+ push:
+ branches:
+ - main
+jobs:
+ create-diagram:
+ name: Create Diagram
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@master
+ - name: Update Diagram (Contracts)
+ uses: githubocto/repo-visualizer@main
+ with:
+ excluded_paths: "ignore,.github"
+ output_file: "utils/diagram-contracts.svg"
+ root_path: "packages/contracts/"
+ commit_message: "docs(diagram): contracts"
+ - name: Update Diagram (User Interface)
+ uses: githubocto/repo-visualizer@main
+ with:
+ excluded_paths: "ignore,.github"
+ output_file: "utils/diagram-ui.svg"
+ root_path: "packages/dapp/"
+ commit_message: "docs(diagram): ui"
diff --git a/.github/workflows/deep-fuzz.yml b/.github/workflows/deep-fuzz.yml
new file mode 100644
index 000000000..d0329cb12
--- /dev/null
+++ b/.github/workflows/deep-fuzz.yml
@@ -0,0 +1,31 @@
+name: Deep Fuzz
+on:
+ push:
+ branches:
+ - development
+ paths:
+ - '**.sol'
+
+jobs:
+ deep-fuzz:
+ name: Deep Fuzz
+ runs-on: ubuntu-22.04
+ env:
+ FOUNDRY_PROFILE: intense
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly-5be158ba6dc7c798a6f032026fe60fc01686b33b
+
+ - name: Forge install
+ working-directory: packages/contracts
+ run: forge install
+
+ - name: Deep Fuzz Solidity Contracts
+ working-directory: packages/contracts
+ run: forge test
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 000000000..774d6cf96
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,26 @@
+name: Deploy to Cloudflare Pages
+
+on:
+ workflow_run:
+ workflows: ["Build & Test"]
+ types:
+ - completed
+
+jobs:
+ deploy-to-cloudflare:
+ name: Automatic Cloudflare Deploy
+ runs-on: ubuntu-22.04
+ steps:
+ - name: Deploy to Cloudflare
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ubiquity/cloudflare-deploy-action@main
+ with:
+ repository: ${{ github.repository }}
+ production_branch: ${{ github.event.repository.default_branch }}
+ build_artifact_name: "static"
+ output_directory: "static"
+ current_branch: ${{ github.event.workflow_run.head_branch }}
+ cloudflare_account_id: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
+ cloudflare_api_token: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+ commit_sha: ${{ github.event.workflow_run.head_sha }}
+ workflow_run_id: ${{ github.event.workflow_run.id }}
diff --git a/.github/workflows/development-ci.yml b/.github/workflows/development-ci.yml
new file mode 100644
index 000000000..207cdc05f
--- /dev/null
+++ b/.github/workflows/development-ci.yml
@@ -0,0 +1,37 @@
+name: Development to Development-CI Sync
+
+on:
+ push:
+ branches:
+ - development
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ sync:
+ runs-on: ubuntu-latest
+ name: Sync changes from development to development-ci
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - name: Run merge
+ run: |
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
+ git config --global user.name "github-actions[bot]"
+ git checkout development-ci
+ echo "debug information"
+ git status
+ git branch -avv
+ git log --graph --pretty=oneline --abbrev-commit --all -20
+ echo "git diff"
+ git diff development
+ echo "== merging =="
+ (git merge development\
+ && git push\
+ && echo "successfully rebased features to development-ci")\
+ || (echo "cannot automatically sync due to merge conflicts" && exit 1)
diff --git a/.github/workflows/diamond-storage-check.yml b/.github/workflows/diamond-storage-check.yml
new file mode 100644
index 000000000..d4f869098
--- /dev/null
+++ b/.github/workflows/diamond-storage-check.yml
@@ -0,0 +1,75 @@
+name: Check For Diamond Storage Changes
+
+on:
+ push:
+ branches:
+ - development
+ paths:
+ - '**.sol'
+ pull_request:
+ paths:
+ - '**.sol'
+
+jobs:
+ provide_contracts:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Install Foundry
+ uses: onbjerg/foundry-toolchain@v1
+ with:
+ version: nightly
+
+ - name: Narrow down test matrix scope to changed Dollar libraries to limit API requests
+ id: changed-libraries
+ uses: tj-actions/changed-files@v42
+ with:
+ files_yaml: |
+ libraries:
+ - packages/contracts/src/dollar/libraries/Lib*.sol
+
+ - name: Set contracts matrix
+ id: set-matrix
+ working-directory: packages/contracts
+ if: steps.changed-libraries.outputs.libraries_any_changed == 'true'
+ env:
+ CHANGED_LIBS: ${{ steps.changed-libraries.outputs.libraries_all_changed_files }}
+ run: |
+ for DIAMOND_LIB in "$CHANGED_LIBS"; do
+ echo ${DIAMOND_LIB} | xargs basename -a | cut -d'.' -f1 | xargs -I{} echo src/dollar/libraries/{}.sol:{} >> contracts.txt
+ done
+ echo "matrix=$(cat contracts.txt | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT
+
+ outputs:
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
+
+ check_storage_layout:
+ needs: provide_contracts
+ runs-on: ubuntu-latest
+ if: ${{ needs.provide_contracts.outputs.matrix != '[]' && needs.provide_contracts.outputs.matrix != '' }}
+
+ strategy:
+ matrix:
+ contract: ${{ fromJSON(needs.provide_contracts.outputs.matrix) }}
+
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ submodules: recursive
+
+ - name: Install Foundry
+ uses: onbjerg/foundry-toolchain@v1
+ with:
+ version: nightly
+
+ - name: Check For Diamond Storage Changes
+ uses: ubiquity/foundry-storage-check@main
+ with:
+ workingDirectory: packages/contracts
+ contract: ${{ matrix.contract }}
+ failOnRemoval: true
+ failOnLabelDiff: true
diff --git a/.github/workflows/enforce-kebab-case.yml b/.github/workflows/enforce-kebab-case.yml
new file mode 100644
index 000000000..71d9cef4c
--- /dev/null
+++ b/.github/workflows/enforce-kebab-case.yml
@@ -0,0 +1,30 @@
+name: Enforce kebab-case
+
+on: [push, pull_request]
+
+jobs:
+ check-filenames:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v2
+
+ - name: Check For Non Kebab-Cased File Names
+ run: |
+ non_compliant_files=()
+ while read -r file; do
+ basefile=$(basename "$file")
+ if echo "$file" | grep -q -E "^\.\/\..*\/|^\.\/[^\/]*$|^\.\/node_modules|^\.\/\.git|^\.\/dist|^\.\/build|^\.\/vendor|^\.\/\.next|\.sql$|\.md$|LICENSE|echidna\.config\.yml|\.env\.example|slither\.config\.json|\.solhint\.json|\.npmrc|global\.d\.ts|_app\.tsx|next-env\.d\.ts|next\.config\.js|docs|\.sol$"; then
+ continue
+ elif ! echo "$basefile" | grep -q -E "^([a-z0-9]+-)*[a-z0-9]+(\.[a-zA-Z0-9]+)?$|^([a-z0-9]+_)*[a-z0-9]+(\.[a-zA-Z0-9]+)?$"; then
+ non_compliant_files+=("$file")
+ echo "::warning file=$file::This file is not in kebab-case or snake_case"
+ fi
+ done < <(find . -type f)
+ if [ ${#non_compliant_files[@]} -ne 0 ]; then
+ echo "The following files are not in kebab-case or snake_case:"
+ for file in "${non_compliant_files[@]}"; do
+ echo " - $file"
+ done
+ exit 1
+ fi
diff --git a/.github/workflows/generate-doc.yml b/.github/workflows/generate-doc.yml
new file mode 100644
index 000000000..59795e903
--- /dev/null
+++ b/.github/workflows/generate-doc.yml
@@ -0,0 +1,52 @@
+name: Auto Generate Doc
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - development
+ paths:
+ - '**.sol'
+
+jobs:
+ generate-doc:
+ name: Generate Doc
+ if: github.repository == 'ubiquity/ubiquity-dollar'
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: write
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "20.10.0"
+
+ - name: Setup Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly-5be158ba6dc7c798a6f032026fe60fc01686b33b
+
+ - name: Yarn Install
+ run: yarn install --mode=skip-build && yarn allow-scripts
+
+ - name: Generate Docs
+ run: yarn workspace @ubiquity/contracts docs
+
+ - name: Push docs changed
+ run: |
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
+ git config --global user.name "github-actions[bot]"
+ echo "Check git information"
+ git status
+ git branch -avv
+ git log --graph --pretty=oneline --abbrev-commit --all -20
+ echo "git diff"
+ git diff
+ git add .
+ git commit -m "docs: auto generate NATSPEC docs"
+ echo "do git push to development branch"
+ git push origin development
diff --git a/.github/workflows/install-and-build-pr.yml b/.github/workflows/install-and-build-pr.yml
deleted file mode 100644
index b54577451..000000000
--- a/.github/workflows/install-and-build-pr.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-name: Install and Build Workflow
-
-on:
- pull_request:
- push:
- create:
- tag:
- - "v*"
-
-jobs:
- build-and-test:
- runs-on: ubuntu-latest
- permissions:
- contents: read
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Setup Node
- uses: actions/setup-node@v2
- with:
- node-version: "16"
-
- - name: Install dependencies
- run: sudo apt -y install libusb-1.0-0-dev libudev-dev
-
- - name: Install
- run: yarn install
-
- - name: Setup Env
- env:
- INFURA_ID: ${{ secrets.INFURA_ID }}
- API_KEY_ALCHEMY: ${{ secrets.API_KEY_ALCHEMY }}
- run: |
- echo "INFURA_ID=$INFURA_ID" > ./packages/dapp/.env
- echo "API_KEY_ALCHEMY=$API_KEY_ALCHEMY" >> ./packages/dapp/.env
-
- - name: Build
- run: yarn build:all
-
- - name: Save PR
- env:
- EVENT_NAME: ${{github.event_name}}
- PR_NUMBER: ${{ github.event.number }}
- SHA: ${{github.sha}}
- run: |
- echo "event_name=$EVENT_NAME,pr_number=$PR_NUMBER,sha=$SHA"
- mkdir -p ./pr
- echo "event_name=$EVENT_NAME,pr_number=$PR_NUMBER,sha=$SHA," > ./pr/pr_number
- cd ./packages/dapp && zip -r pull-request.zip ./dist && cp pull-request.zip ../../pr
- - uses: actions/upload-artifact@v2
- with:
- name: pr
- path: pr/
diff --git a/.github/workflows/received-workflow-and-deploy.yml b/.github/workflows/received-workflow-and-deploy.yml
deleted file mode 100644
index e9285b67a..000000000
--- a/.github/workflows/received-workflow-and-deploy.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Receive workflow and Deploy
-
-on:
- workflow_run:
- workflows: ["Install and Build Workflow"]
- types:
- - completed
-
-jobs:
- receive-pr-and-deploy:
- runs-on: ubuntu-latest
- env:
- NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: "Download artifact"
- uses: actions/github-script@v3.1.0
- with:
- script: |
- const fs = require("fs");
- const download_artifact = require('${{ github.workspace }}/utils/download_artifact.js');
- const workflow_run_id = '${{ github.event.workflow_run.id }}';
- const workspace = '${{ github.workspace }}';
- download_artifact({github, context, fs, workflow_run_id, workspace})
- - name: Extract files
- run: unzip pr.zip && unzip pull-request.zip && ls
-
- - name: Deploy Development
- run: |
- netlify link --id ${{ secrets.NETLIFY_SITE_ID_DEVELOPMENT }}
- netlify deploy --dir=./dist --prod > ./deployments.log
-
- - name: Print Logs
- uses: actions/github-script@v6
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- script: |
- const fs = require("fs");
- const print_deployments_log = require('${{ github.workspace }}/utils/print_deployments_logs.js');
- await print_deployments_log({github, context, fs});
diff --git a/.github/workflows/setup-anvil.yml b/.github/workflows/setup-anvil.yml
new file mode 100644
index 000000000..ed5373175
--- /dev/null
+++ b/.github/workflows/setup-anvil.yml
@@ -0,0 +1,31 @@
+on: workflow_dispatch
+
+name: Setup Anvil
+
+jobs:
+ setup-anvil:
+ name: Setup Anvil
+ runs-on: ubuntu-latest
+ steps:
+ - name: Install Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly
+ - name: Install Cloudflared
+ uses: supplypike/setup-bin@v3
+ with:
+ uri: "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64"
+ name: "cloudflared"
+ version: "latest"
+ - name: Tunnel Anvil
+ id: tunnel
+ run: cloudflared tunnel --url http://localhost:8545 --logfile cloudflared.log &
+ shell: bash
+ - name: Extract Cloudflared URL
+ run: |
+ grep -E "https://.*.trycloudflare.com" cloudflared.log | cut -d'|' -f2 | tr -d ' ' > cloudflare-url.txt
+ cat cloudflare-url.txt
+ shell: bash
+ - name: Run Anvil
+ run: anvil
+ shell: bash
diff --git a/.github/workflows/slither-analysis.yml b/.github/workflows/slither-analysis.yml
new file mode 100644
index 000000000..0d515a6b7
--- /dev/null
+++ b/.github/workflows/slither-analysis.yml
@@ -0,0 +1,40 @@
+name: Slither Analysis
+on:
+ push:
+ branches:
+ - development
+ - main
+ paths:
+ - '**.sol'
+ pull_request:
+ paths:
+ - '**.sol'
+
+jobs:
+ slither-analysis:
+ name: Slither Analysis
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Set up Python 3.10
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.10"
+
+ - name: Install Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly
+
+ - name: Install Slither
+ run: pip3 install slither-analyzer
+
+ - name: Install dependencies
+ run: |
+ yarn install
+ yarn workspace @ubiquity/contracts forge:install
+
+ - name: Test with Slither
+ run: yarn workspace @ubiquity/contracts run test:slither
diff --git a/.github/workflows/spell-check.yml b/.github/workflows/spell-check.yml
new file mode 100644
index 000000000..e8a902127
--- /dev/null
+++ b/.github/workflows/spell-check.yml
@@ -0,0 +1,27 @@
+name: Spell Check
+on:
+ push:
+ pull_request:
+ types: [opened, synchronize]
+
+jobs:
+ spell-check:
+ name: Spell Check
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ deployments: write
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "20.10.0"
+
+ - name: Spell Check
+ run: |
+ LIST="$(find . -type f \( -name '*.sol' -o -name '*.tsx' -o -name '*.ts' \) ! -path '*/node_modules/*' ! -path '*/lib/*' ! -path '*/types/*')"
+ yes | npx cspell $LIST
diff --git a/.github/workflows/yarn-audit.yml b/.github/workflows/yarn-audit.yml
new file mode 100644
index 000000000..ceb992a23
--- /dev/null
+++ b/.github/workflows/yarn-audit.yml
@@ -0,0 +1,25 @@
+name: Yarn Audit
+
+on:
+ pull_request:
+ push:
+
+jobs:
+ audit-and-fix:
+ name: Audit & Fix
+ runs-on: ubuntu-22.04
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3.1.0
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "20.10.0"
+
+ - name: Install dependencies
+ run: yarn install
+
+ - name: Audit
+ run: yes | yarn yarn-audit-fix
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 1c5948324..22ad3c50e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,7 +52,21 @@ fixtures/abi/types/
dist/
fixtures/contracts-addresses/*
+# Ignore all transaction logs except:
+# - latest development log
+# - mainnet logs
+# - sepolia testnet logs
+packages/contracts/broadcast/*/*/*
+!packages/contracts/broadcast/**/1/*
+!packages/contracts/broadcast/**/11155111/*
+
.yarn
.yarn/*
!.yarn/releases
!.yarn/plugins
+cache
+build
+out
+packages/dapp/types/
+.vscode/
+/packages/contracts/*.info
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..ff98ee869
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,40 @@
+[submodule "packages/contracts/lib/Uniswap/v2-periphery"]
+ path = packages/contracts/lib/Uniswap/v2-periphery
+ url = https://github.com/Uniswap/v2-periphery.git
+ branch= master
+[submodule "packages/contracts/lib/Uniswap/v2-core"]
+ path = packages/contracts/lib/Uniswap/v2-core
+ url = https://github.com/Uniswap/v2-core.git
+ branch= master
+[submodule "packages/contracts/lib/solidity-linked-list"]
+ path = packages/contracts/lib/solidity-linked-list
+ url = https://github.com/vittominacori/solidity-linked-list
+ branch= master
+[submodule "packages/contracts/lib/openzeppelin-contracts"]
+ path = packages/contracts/lib/openzeppelin-contracts
+ url = https://github.com/OpenZeppelin/openzeppelin-contracts
+ branch = release-v4.9
+[submodule "packages/contracts/lib/forge-std"]
+ path = packages/contracts/lib/forge-std
+ url = https://github.com/foundry-rs/forge-std
+ branch = chore/reorder-vm # v1.6.1
+[submodule "packages/contracts/lib/abdk-libraries-solidity"]
+ path = packages/contracts/lib/abdk-libraries-solidity
+ url = https://github.com/abdk-consulting/abdk-libraries-solidity
+ branch= master
+[submodule "packages/contracts/lib/operator-filter-registry"]
+ path = packages/contracts/lib/operator-filter-registry
+ url = https://github.com/ProjectOpenSea/operator-filter-registry
+ branch= v1.4.0
+[submodule "packages/contracts/lib/Uniswap/v3-periphery"]
+ path = packages/contracts/lib/Uniswap/v3-periphery
+ url = https://github.com/Uniswap/v3-periphery.git
+ branch= main
+[submodule "packages/contracts/lib/openzeppelin-contracts-upgradeable"]
+ path = packages/contracts/lib/openzeppelin-contracts-upgradeable
+ url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable
+ branch = release-v4.9
+[submodule "packages/contracts/lib/chainlink-brownie-contracts"]
+ path = packages/contracts/lib/chainlink-brownie-contracts
+ url = https://github.com/smartcontractkit/chainlink-brownie-contracts
+ branch= main
\ No newline at end of file
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100755
index 000000000..4c49ae6ae
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+yarn commitlint --edit $1
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 50ef7beca..cbd589fed 100755
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,3 +1,4 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-yarn lint-staged --verbose
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+yarn lint-staged --verbose
\ No newline at end of file
diff --git a/.nvmrc b/.nvmrc
index 7fd023741..016efd8a0 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v16.15.0
+v20.10.0
\ No newline at end of file
diff --git a/packages/dapp/.prettierignore b/.prettierignore
similarity index 71%
rename from packages/dapp/.prettierignore
rename to .prettierignore
index 0990caba6..5b5476ec1 100644
--- a/packages/dapp/.prettierignore
+++ b/.prettierignore
@@ -1,3 +1,5 @@
dist/
.next/
fixtures/
+lib/
+out/
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc.json
similarity index 80%
rename from .prettierrc
rename to .prettierrc.json
index f032c9645..9a8a0898c 100644
--- a/.prettierrc
+++ b/.prettierrc.json
@@ -5,7 +5,7 @@
"singleQuote": false,
"printWidth": 160,
"htmlWhitespaceSensitivity": "strict",
- "plugins": [],
+ "plugins": ["prettier-plugin-solidity"],
"overrides": [
{
"files": "*.sol",
@@ -14,8 +14,7 @@
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
- "bracketSpacing": false,
- "explicitTypes": "always"
+ "bracketSpacing": false
}
}
]
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 799ab6d97..000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "[shellscript]": {
- "editor.defaultFormatter": "foxundermoon.shell-format"
- },
- "[dotenv]": {
- "editor.defaultFormatter": "foxundermoon.shell-format"
- },
- "[ignore]": {
- "editor.defaultFormatter": "foxundermoon.shell-format"
- },
- "[typescript]": {
- "editor.defaultFormatter": "vscode.typescript-language-features"
- },
- "[typescriptreact]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode"
- },
- "files.autoSave": "onFocusChange",
- "prettier.requireConfig": false,
- "prettier.semi": false,
- "editor.codeActionsOnSave": { "source.fixAll": true },
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnPaste": true,
- "editor.formatOnSave": true,
- "editor.formatOnType": true,
- "eslint.alwaysShowStatus": true,
- "html.format.enable": false,
- "[html]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true
- },
- "[javascript]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true
- },
- "[json]": {
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.formatOnSave": true
- }
-}
diff --git a/.yarnrc.yml b/.yarnrc.yml
index 4ac0189a0..f19f67376 100644
--- a/.yarnrc.yml
+++ b/.yarnrc.yml
@@ -25,3 +25,37 @@ plugins:
spec: "https://yarn.build/latest"
yarnPath: .yarn/releases/yarn-3.2.3.cjs
+enableScripts: true
+
+packageExtensions:
+ "@tanstack/query-persist-client-core@4.22.0":
+ dependencies:
+ "@tanstack/query-core": "4.22.0"
+ "hardhat-watcher@^2.1.1":
+ dependencies:
+ "hardhat": "^2.0.0"
+ "@uniswap/widgets@^2.16.2":
+ dependencies:
+ "@walletconnect/ethereum-provider": "1.7.8"
+ "@uniswap/redux-multicall@^1.1.1":
+ dependencies:
+ "@ethersproject/abi": "5"
+ "@ethersproject/bignumber": "5.7.0"
+ "@ethersproject/contracts": "5.7.0"
+ "styled-components@>=5":
+ dependencies:
+ "react-is": "16.8.0"
+ "abitype@^0.1.8":
+ dependencies:
+ "typescript": "^4.7.4"
+ "eth-block-tracker@4.4.3":
+ dependencies:
+ "@babel/core": "7.4.0"
+
+logFilters:
+ - pattern: "@ubiquity/dapp@workspace:packages/dapp provides react * with version * which doesn't satisfy what @uniswap/widgets and some of its descendants request"
+ level: "discard"
+ - code: "YN0013"
+ level: "discard"
+ - code: "YN0007"
+ level: "discard"
diff --git a/README.md b/README.md
index be3233098..23864f1a3 100644
--- a/README.md
+++ b/README.md
@@ -1,69 +1,192 @@
+[![Build & Test](https://github.com/ubiquity/ubiquity-dollar/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/ubiquity/ubiquity-dollar/actions/workflows/build-and-test.yml)
+[![Coverage Status](https://coveralls.io/repos/github/ubiquity/ubiquity-dollar/badge.svg?branch=development&service=github)](https://coveralls.io/github/ubiquity/ubiquity-dollar?branch=development)
# Ubiquity Dollar
-
-Introducing the flagship product of [Ubiquity DAO](https://ubq.fi/). Ubiquity's Algorithmic Dollar (uAD) is an algorithmic stablecoin that maintains its peg by virtue of its monetary and fiscal policies.
-
-The deployed smart contracts can be found in the [docs](https://dao.ubq.fi/smart-contracts).
+Introducing the flagship product of [Ubiquity DAO](https://ubq.fi/). The Ubiquity Dollar (uAD) is a collateralized stablecoin.
+- The deployed smart contracts can be found in the [docs](https://dao.ubq.fi/smart-contracts).
+- The source code for those are archived [here](https://github.com/ubiquity/uad-contracts).
![Ubiquity Dollar Logo](https://user-images.githubusercontent.com/4975670/153777249-527395c0-0c52-4731-8b0a-77b7885fafda.png)
-
+## Contributing
+- We welcome everybody to participate in improving the codebase and provide feedback on opened issues.
+- We offer financial incentives for solved issues.
+- Learn how to contribute via the DevPool [here](https://dao.ubq.fi/devpool).
## Installation
+### Requirements:
+- NodeJS Version >=18
+- Yarn
+- We use [Foundry](https://github.com/foundry-rs/foundry), check their [docs](https://book.getfoundry.sh/). Please follow their installation guide for your OS before proceeding.
-Build the smart contracts first
+### Development Setup
-```bash
-#!/usr/bin/env bash
-# Ubiquity Dollar Installer
+```sh
+#!/bin/bash
git clone https://github.com/ubiquity/ubiquity-dollar.git
-yarn
-yarn start
+cd ubiquity-dollar
+yarn # fetch dependencies
+yarn build:all # builds the smart contracts and user interface
+
+# Optional
+yarn build:dapp # to only build the UI useful for debugging
+yarn build:contracts # to only build the Smart Contracts
+
+yarn start # starts the user interface and daemonize'd to continue to run tests in the background
+yarn test:all # We run all the tests!
```
-→ [localhost:3000](https://localhost:3000/)
+## Running workspace specific/individual commands
+Using yarn workspaces, you can invoke scripts for each workspace individually.
+```sh
+# SCRIPT_NAME=XXX
+
+yarn workspace @ubiquity/contracts $SCRIPT_NAME
+yarn workspace @ubiquity/dapp $SCRIPT_NAME
+
+# Some commands...
+
+yarn workspace @ubiquity/contracts build # Build smart contracts
+yarn workspace @ubiquity/contracts test # Run the smart contract unit tests
-## Committing Code
+yarn workspace @ubiquity/dapp build # Build the user interface
+yarn workspace @ubiquity/dapp start # Run the web application at http://localhost:3000
-1. We [automatically enforce](https://github.com/conventional-changelog/commitlint) the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) format for commit messages. This can be frustrating for junior developers, but I promise that you'll quickly get used to it!
+# check https://yarnpkg.com/features/workspaces for more yarn workspaces flexixble use cases
+
+```
+## Committing Code/Sending PRs
+
+1. We [automatically enforce](https://github.com/conventional-changelog/commitlint) the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) format for commit messages.
> The Conventional Commits specification is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history; which makes it easier to write automated tools on top of.
-2. We use [prettier](https://github.com/prettier/prettier) and [eslint](https://github.com/eslint/eslint) on [staged files](https://github.com/okonet/lint-staged) in order to enforce a uniform code style. Please do not circumvent these rules or else technical debt may generate quickly.
+2. We use [prettier](https://github.com/prettier/prettier), [eslint](https://github.com/eslint/eslint) and [cspell](https://github.com/streetsidesoftware/cspell) on [staged files](https://github.com/okonet/lint-staged) in order to enforce a uniform code style. Please do not circumvent these rules.
-## MetaMask Development Wallet Setup
+3. We require all PRs to meet the issues expectation and/or to follow the discussions accordingly and implement all necessary changes and feedback by reviewers.
-### Network Settings
+4. We run [CI jobs](https://github.com/ubiquity/ubiquity-dollar/actions) all CI jobs must pass before commiting/merging a PR with no exceptions (usually a few exceptions while the PR it's getting reviewed and the maintainers highlight a job run that may skip)
-Make sure you are using the following network configuration:
+5. We run Solhint to enforce a pre-set selected number of rules for code quality/style on Smart Contracts
+
+### Network Settings
+| Network | Chain ID | RPC Endpoint | Comment |
+|---------|----------|-------------------------------|---------|
+| `mainnet` | `1` | `https://rpc.ankr.com/eth` | Public Mainnet Gateway |
+| `anvil` | `31337` | `http://127.0.0.1:8545` | Used for local development |
+| `sepolia` | `11155111` | `https://ethereum-sepolia.publicnode.com` |Use any public available RPC for Sepolia testing |
+
+## Deploying Contracts (Ubiquity Dollar Core)
+
+You need to create a new `.env` file and set all necessary env variables, example:
+
+```sh
+# Admin private key (grants access to restricted contracts methods).
+# By default set to the private key from the 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 address
+# which is the 2nd address derived from test mnemonic "test test test test test test test test test test test junk".
+ADMIN_PRIVATE_KEY="0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"
+
+# Collateral token address (used in UbiquityPoolFacet, allows users to mint/redeem Dollars in exchange for collateral token).
+# By default set to LUSD address in ethereum mainnet.
+# - mainnet: 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0 (LUSD)
+# - testnet/anvil: deploys collateral ERC20 token from scratch
+COLLATERAL_TOKEN_ADDRESS="0x5f98805A4E8be255a32880FDeC7F6728C6568bA0"
+
+# Collateral token price feed address from chainlink.
+# By default set to LUSD/USD price feed deployed on ethereum mainnet.
+# This price feed is used in 2 cases:
+# 1) To calculate collateral price in USD
+# 2) To calculate Dollar price in USD
+# Since collateral token (LUSD) is the same one used in Curve's plain pool (LUSD-Dollar)
+# we share the same price feed in:
+# 1) `LibUbiquityPool.setCollateralChainLinkPriceFeed()` (to calculate collateral price in USD)
+# 2) `LibUbiquityPool.setStableUsdChainLinkPriceFeed()` (to calculate Dollar price in USD)
+# - mainnet: uses already deployed LUSD/USD chainlink price feed
+# - testnet/anvil: deploys LUSD/USD chainlink price feed from scratch
+COLLATERAL_TOKEN_CHAINLINK_PRICE_FEED_ADDRESS="0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0"
+
+# Curve's Governance/WETH pool address.
+# Used to fetch Governance/ETH price from built-in oracle.
+# By default set to already deployed (production ready) Governance/WETH pool address.
+# - mainnet: uses already deployed Governance/ETH pool address
+# - testnet/anvil: deploys Governance/WETH pool from scratch
+CURVE_GOVERNANCE_WETH_POOL_ADDRESS="0xaCDc85AFCD8B83Eb171AFFCbe29FaD204F6ae45C"
+
+# Chainlink price feed address for ETH/USD pair.
+# Used to calculate Governance token price in USD.
+# By default set to ETH/USD price feed deployed on ethereum mainnet.
+# - mainnet: uses already deployed ETH/USD chainlink price feed
+# - testnet/anvil: deploys ETH/USD chainlink price feed from scratch
+ETH_USD_CHAINLINK_PRICE_FEED_ADDRESS="0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419"
+
+# Dollar amount in wei minted initially to owner to provide liquidity to the Curve LUSD-Dollar plain pool
+# By default set to 25k Dollar tokens
+INITIAL_DOLLAR_MINT_AMOUNT_WEI="25000000000000000000000"
+
+# Owner private key (grants access to updating Diamond facets and setting TWAP oracle address).
+# By default set to the private key from the 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 address
+# which is the 1st address derived from test mnemonic "test test test test test test test test test test test junk".
+OWNER_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
+
+# RPC URL (used in contract migrations)
+# - anvil: http://127.0.0.1:8545
+# - testnet: https://sepolia.gateway.tenderly.co
+# - mainnet: https://mainnet.gateway.tenderly.co
+RPC_URL="http://127.0.0.1:8545"
+```
-- `31337` chain ID of the Hardhat network.
-- `http://127.0.0.1:8545` RPC endpoint of the Hardhat network.
+We provide an `.env.example` file pre-set with recommend testing environment variables but you are free to modify or experiment with different values on your local branch.
-### Shared Private Keys
+Then in two separate terminals run the following commands:
-- All Hardhat developers know about these keys. These keys are derived from the `test test test test test test test test test test test junk` mnemonic in the Hardhat docs.
-- Do not send assets of value to these wallets.
+```sh
+# starts the anvil forked mainnet/testnet network (depends on your .env config)
+yarn workspace @ubiquity/contracts start:anvil
+# Optional
+yarn start:anvil # same as above but shorter
```
-0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
-0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
-0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
-0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6
-0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a
-0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba
+
+```sh
+# deploys the contracts to the anvil testnet or your desired network
+
+yarn workspace @ubiquity/contracts deploy:development
+
+# Optional
+yarn deploy:development # same as above
```
-### Ubiquity Dollar Contracts Setup
+If successful it will output the accounts generated from the test mnemonic (`test test test test test test test test test test test junk`) and the port it's listening on.
-This section is for the Ubiquity Dollar core protocol smart contracts (not the UbiquiStick NFT or UI related code.)
+## Wiki
-You need to create `.env` file inside the contracts folder with at least the `API_KEY_ALCHEMY` and the `MNEMONIC` filled. Indeed `MNEMONIC` will be used to deploy locally and the first account will be the admin on all the smart contracts.
+We have a [Wiki!](https://github.com/ubiquity/ubiquity-dollar/wiki) feel free to browse it as there is a lot of useful information about the whole repo
-Run the faucet to get tokens to your address. You will need the `UAD_MANAGER_ADDRESS` that you can find in the output of the `yarn start`
+## Yarn Workspaces
-```bash
-YOUR_ETH_ADDRESS= # enter address here
-UAD_MANAGER_ADDRESS= # enter address here
-yarn hardhat --network localhost faucet --receiver $YOUR_ETH_ADDRESS --manager $UAD_MANAGER_ADDRESS
-```
+The repo has been built as a [yarn workspace](https://yarnpkg.com/features/workspaces) monorepo.
+
+
+<root>
+├── packages
+│ ├── contracts: Smart contracts for Ubiquity Dollar and UbiquiStick
+│ ├── dapp: User interface
+
+
+## Codebase Diagram
+
+[Interactive Version](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=ubiquity%2Fubiquity-dollar)
+
+### Smart Contracts
+
+![Visualization of the smart contracts codebase](./utils/diagram-contracts.svg)
+
+### User Interface
+
+![Visualization of the user interface codebase](./utils/diagram-ui.svg)
+
+---
+
+### Audits
+
+2024 - [Sherlock](https://github.com/ubiquity/ubiquity-dollar/blob/development/packages/contracts/audits/ubiquity-audit-report-sherlock.pdf)
Sine stabilitate nihil habemus.
diff --git a/cspell.json b/cspell.json
index 222396855..40f83956d 100644
--- a/cspell.json
+++ b/cspell.json
@@ -1,29 +1,169 @@
{
"version": "0.2",
- "language": "en",
- "ignoreWords": [],
"ignorePaths": [
"**/*.json",
"**/*.log",
"**/*.svg",
"**/*.lock",
- "**/node_modules/**"
+ "**/lib/*",
+ "**/interfaces/*",
+ "**/dist/*",
+ "**/cspell.json",
+ "**/node_modules/**",
+ "packages/contracts/src/deprecated/*",
+ "packages/contracts/migrations/development/Deploy001_Diamond_Dollar_Governance.s.sol",
+ "packages/contracts/migrations/mainnet/Deploy001_Diamond_Dollar_Governance.s.sol"
],
+ "readonly": true,
+ "useGitignore": true,
+ "enableFiletypes": ["solidity"],
+
"words": [
+ "!UbiquityDollar",
+ "!UbiquityCredit",
+ "!UbiquityGovernance",
+ "!UbiquityStick",
+ "!UbiquityAlgorithmicDollar",
+ "!Algorithmic",
+ "!BondingShareV2",
+ "!BondingV2",
+ "!uAD",
+ "!UBQ",
+ "!uCR",
+ "!uAR",
+ "!uDEBT",
+ "!uBOND",
+ "!uGOV",
+ "prng",
+ "lowlevel",
+ "ABDK",
+ "accu",
+ "ADMGR",
+ "adoc",
+ "alloc",
+ "ALUSD",
"Arrakis",
+ "Avenir",
+ "Bancor",
+ "Beeple",
+ "bignumber",
+ "buildhome",
+ "bytecode",
+ "Bytecode",
+ "calldata",
+ "calldatacopy",
+ "calldataload",
+ "calldatasize",
+ "chainid",
"Chainlink",
+ "coef",
+ "collateralized",
+ "commitlint",
+ "concat",
+ "connectkit",
+ "Consts",
+ "Cpath",
+ "CRVLP",
+ "crytic",
+ "Csvg",
+ "delegatecall",
+ "devfund",
"DOLA",
- "FRAX",
+ "dryrun",
+ "Enjin",
+ "ethersproject",
+ "extcode",
+ "extcodecopy",
+ "extcodehash",
+ "extcodesize",
+ "Funcs",
+ "Gelato",
"habemus",
+ "iefix",
+ "IERC",
+ "Immer",
+ "implementat",
+ "incentivized",
+ "inheritdoc",
+ "Inpage",
+ "ITWAP",
+ "IUAR",
+ "IUBQ",
+ "jsbi",
+ "JSBI",
"keccak",
"LUSD",
+ "masterchef",
"metapool",
+ "metapools",
+ "Mintable",
+ "mintings",
+ "mixedcase",
+ "mload",
+ "multicall",
+ "mstore",
+ "newuri",
+ "nextjs",
+ "ntype",
+ "opentype",
+ "Pausable",
+ "prevrandao",
+ "proto",
+ "psender",
+ "Qmanager",
+ "Rarible",
+ "Reentrancy",
+ "retdata",
+ "returndata",
+ "returndatacopy",
+ "returndatasize",
+ "rpcutil",
+ "rustup",
"Sablier",
+ "sepolia",
+ "setu",
+ "Shouldset",
+ "Sighash",
+ "SjymJ5maJ4",
+ "solhint",
"stabilitate",
"stablecoins",
+ "struct",
+ "structs",
+ "sushiswap",
+ "svgs",
+ "testenv",
+ "tippyjs",
+ "tlsv",
+ "truetype",
+ "turbotrace",
"twap",
"typechain",
+ "TYPEHASH",
+ "Twocrypto",
+ "Ubiqui",
"UbiquiStick",
- "UbiquiSticks"
- ]
+ "Unassigns",
+ "uncollateralized",
+ "usedapp",
+ "Vitalik",
+ "wagmi",
+ "webp",
+ "zapaz",
+ "zozo",
+ "UbiquiBot",
+ "pranking",
+ "Rpc",
+ "rpcs",
+ "rpc",
+ "Automine",
+ "Txpool",
+ "nomicfoundation",
+ "blockhash",
+ "Merkle",
+ "UUPS",
+ "Initializable"
+ ],
+ "flagWords": ["creditNFT", "CreditNFT"],
+ "language": "en-US"
}
diff --git a/global.d.ts b/global.d.ts
deleted file mode 100644
index 62b1cc3c2..000000000
--- a/global.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { MetaMaskInpageProvider } from "@metamask/providers";
-
-declare global {
- interface Window {
- ethereum?: MetaMaskInpageProvider;
- }
-}
-declare module "*.svg" {
- const value: React.StatelessComponent>;
- export default value;
-}
diff --git a/package.json b/package.json
index 944f0ade5..eadaeaa68 100644
--- a/package.json
+++ b/package.json
@@ -6,40 +6,72 @@
"license": "Apache-2.0",
"workspaces": [
"packages/dapp",
- "packages/contracts/*"
+ "packages/contracts"
],
"devDependencies": {
+ "@commitlint/cli": "^17.3.0",
+ "@commitlint/config-conventional": "^17.3.0",
+ "@lavamoat/allow-scripts": "^2.3.0",
+ "@types/prettier": "^2",
"@typescript-eslint/eslint-plugin": "^5.32.0",
"@typescript-eslint/parser": "^5.32.0",
+ "cspell": "6.31.1",
"eslint": "^8.23.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-tsc": "^2.0.0",
+ "husky": "^8.0.2",
"lint-staged": "^13.0.3",
"nodemon": "^2.0.19",
- "rimraf": "3.0.2"
+ "prettier": "2.8.8",
+ "prettier-plugin-solidity": "^1.2.0",
+ "rimraf": "3.0.2",
+ "typechain": "^8.3.2",
+ "yarn-audit-fix": "^9.3.7"
},
"scripts": {
"build:all": "yarn workspaces foreach run build",
- "test:all": "yarn workspaces foreach run test",
- "purge:all": "yarn workspaces foreach run purge && rimraf node_modules",
- "prettier:all": "yarn workspaces foreach run prettier",
+ "build:dapp": "yarn workspace @ubiquity/dapp run build",
+ "dev:dapp": "yarn workspace @ubiquity/dapp run start",
+ "test:all": "yarn workspace @ubiquity/contracts run test:unit",
+ "coverage": "yarn workspace @ubiquity/contracts run test:coverage",
+ "format:all": "yarn workspaces foreach run format",
+ "clean:all": "yarn workspaces foreach run clean && rimraf node_modules",
"lint:all": "yarn workspaces foreach run lint",
- "build:ci:cloudflare": "yarn build:all",
"build:ci:netlify": "yarn build:all",
- "build:ci:fleek": "yarn build:all"
+ "postinstall": "husky install",
+ "lint:cspell:all:watch": "nodemon -e sol,ts,tsx --exec 'yarn lint:cspell:all --fail-fast'",
+ "lint:cspell:all": "cspell $(find . -type f \\( -name '*.sol' -o -name '*.tsx' -o -name '*.ts' \\) ! -path '*/node_modules/*' ! -path '*/lib/*' ! -path '*/types/*')"
},
- "husky": {
- "hooks": {
- "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
- "pre-commit": "lint-staged"
- }
+ "engines": {
+ "node": ">=20.10.0"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx,json,sol}": [
+ "*.{js,jsx,ts,tsx,json}": [
"prettier --write",
- "eslint --fix"
+ "eslint --fix --max-warnings=0",
+ "cspell --no-must-find-files"
+ ],
+ "*.sol": [
+ "prettier --plugin=prettier-plugin-solidity --write",
+ "cspell --no-must-find-files"
]
},
- "packageManager": "yarn@3.2.3"
+ "packageManager": "yarn@3.2.3",
+ "lavamoat": {
+ "allowScripts": {
+ "$root$": true,
+ "bufferutil": true,
+ "utf-8-validate": true,
+ "styled-components": false,
+ "keccak": true,
+ "dtrace-provider": true,
+ "bigint-buffer": true,
+ "secp256k1": true,
+ "classic-level": true,
+ "@ubiquity/monorepo": true,
+ "napi-macros/example": true,
+ "husky": true
+ }
+ }
}
diff --git a/packages/contracts/.env.example b/packages/contracts/.env.example
new file mode 100644
index 000000000..d1623055f
--- /dev/null
+++ b/packages/contracts/.env.example
@@ -0,0 +1,52 @@
+# Admin private key (grants access to restricted contracts methods).
+# By default set to the private key from the 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 address
+# which is the 2nd address derived from test mnemonic "test test test test test test test test test test test junk".
+ADMIN_PRIVATE_KEY="0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"
+
+# Collateral token address (used in UbiquityPoolFacet, allows users to mint/redeem Dollars in exchange for collateral token).
+# By default set to LUSD address in ethereum mainnet.
+# - mainnet: 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0 (LUSD)
+# - testnet/anvil: deploys collateral ERC20 token from scratch
+COLLATERAL_TOKEN_ADDRESS="0x5f98805A4E8be255a32880FDeC7F6728C6568bA0"
+
+# Collateral token price feed address from chainlink.
+# By default set to LUSD/USD price feed deployed on ethereum mainnet.
+# This price feed is used in 2 cases:
+# 1) To calculate collateral price in USD
+# 2) To calculate Dollar price in USD
+# Since collateral token (LUSD) is the same one used in Curve's plain pool (LUSD-Dollar)
+# we share the same price feed in:
+# 1) `LibUbiquityPool.setCollateralChainLinkPriceFeed()` (to calculate collateral price in USD)
+# 2) `LibUbiquityPool.setStableUsdChainLinkPriceFeed()` (to calculate Dollar price in USD)
+# - mainnet: uses already deployed LUSD/USD chainlink price feed
+# - testnet/anvil: deploys LUSD/USD chainlink price feed from scratch
+COLLATERAL_TOKEN_CHAINLINK_PRICE_FEED_ADDRESS="0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0"
+
+# Curve's Governance/WETH pool address.
+# Used to fetch Governance/ETH price from built-in oracle.
+# By default set to Governance/WETH pool address deployed on ethereum mainnet.
+# - mainnet: uses already deployed (production ready) Governance/ETH pool address
+# - testnet/anvil: deploys Governance/WETH pool from scratch
+CURVE_GOVERNANCE_WETH_POOL_ADDRESS="0xaCDc85AFCD8B83Eb171AFFCbe29FaD204F6ae45C"
+
+# Chainlink price feed address for ETH/USD pair.
+# Used to calculate Governance token price in USD.
+# By default set to ETH/USD price feed deployed on ethereum mainnet.
+# - mainnet: uses already deployed ETH/USD chainlink price feed
+# - testnet/anvil: deploys ETH/USD chainlink price feed from scratch
+ETH_USD_CHAINLINK_PRICE_FEED_ADDRESS="0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419"
+
+# Dollar amount in wei minted initially to owner to provide liquidity to the Curve LUSD-Dollar plain pool
+# By default set to 25k Dollar tokens
+INITIAL_DOLLAR_MINT_AMOUNT_WEI="25000000000000000000000"
+
+# Owner private key (grants access to updating Diamond facets and setting TWAP oracle address).
+# By default set to the private key from the 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 address
+# which is the 1st address derived from test mnemonic "test test test test test test test test test test test junk".
+OWNER_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
+
+# RPC URL (used in contract migrations)
+# - anvil: http://127.0.0.1:8545
+# - testnet: https://sepolia.gateway.tenderly.co
+# - mainnet: https://mainnet.gateway.tenderly.co
+RPC_URL="http://127.0.0.1:8545"
diff --git a/packages/contracts/.npmrc b/packages/contracts/.npmrc
new file mode 100644
index 000000000..97b895e2f
--- /dev/null
+++ b/packages/contracts/.npmrc
@@ -0,0 +1 @@
+ignore-scripts=true
diff --git a/packages/contracts/.solhint.json b/packages/contracts/.solhint.json
new file mode 100644
index 000000000..a622b9c6d
--- /dev/null
+++ b/packages/contracts/.solhint.json
@@ -0,0 +1,15 @@
+{
+ "extends": "solhint:recommended",
+ "rules": {
+ "func-param-name-mixedcase": "error",
+ "func-visibility": ["warn", { "ignoreConstructors": true }],
+ "custom-errors": "off",
+ "no-inline-assembly": "off",
+ "reentrancy": "warn",
+ "foundry-test-functions": ["warn", ["setUp"]],
+ "event-name-camelcase": "warn",
+ "func-name-mixedcase": "warn",
+ "use-forbidden-name": "error",
+ "func-named-parameters": ["warn", 4]
+ }
+}
diff --git a/packages/contracts/dollar/LICENSE b/packages/contracts/LICENSE
similarity index 100%
rename from packages/contracts/dollar/LICENSE
rename to packages/contracts/LICENSE
diff --git a/packages/contracts/README.md b/packages/contracts/README.md
new file mode 100644
index 000000000..153948961
--- /dev/null
+++ b/packages/contracts/README.md
@@ -0,0 +1,38 @@
+# Ubiquity Dollar Smart Contracts
+
+`@ubiquity/contracts` contains the various Solidity smart contracts used within the Ubiquity Algorithmic Dollar Protocol.
+
+## Install
+
+You need to have [Foundry](https://github.com/foundry-rs/foundry) installed locally first. Check [Foundry Book](https://book.getfoundry.sh/getting-started/installation)
+
+Then you'll be able to:
+
+```bash
+yarn workspace @ubiquity/contracts run forge:install
+```
+
+## Build
+
+```bash
+yarn workspace @ubiquity/contracts run build
+```
+
+## Test
+
+```bash
+yarn workspace @ubiquity/contracts run test:unit
+```
+
+## Deploy
+
+Deploy script has been built on top of `forge create` and typescript to manage deployments locally.
+
+```sh
+# Deploy Local Development
+
+yarn start:anvil
+
+yarn deploy:development
+
+```
diff --git a/packages/contracts/dollar/SECURITY.md b/packages/contracts/SECURITY.md
similarity index 100%
rename from packages/contracts/dollar/SECURITY.md
rename to packages/contracts/SECURITY.md
diff --git a/packages/contracts/audits/ubiquity-audit-report-sherlock.pdf b/packages/contracts/audits/ubiquity-audit-report-sherlock.pdf
new file mode 100644
index 000000000..5dfb9feda
Binary files /dev/null and b/packages/contracts/audits/ubiquity-audit-report-sherlock.pdf differ
diff --git a/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-1715578665.json b/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-1715578665.json
new file mode 100644
index 000000000..aa35ab295
--- /dev/null
+++ b/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-1715578665.json
@@ -0,0 +1,1448 @@
+{
+ "transactions": [
+ {
+ "hash": "0x29d4c9a8b3b5b9480032ac1ee2374be917a6f5fd22a3f5db882d819be6b9b3bb",
+ "transactionType": "CREATE",
+ "contractName": "AccessControlFacet",
+ "contractAddress": "0xe17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x100066",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50610db9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635c975abb116100765780638bb9c5bf1161005b5780638bb9c5bf1461011e57806391d1485414610131578063d547741f1461014457600080fd5b80635c975abb146100fe5780638456cb591461011657600080fd5b80631e4e0091146100a8578063248a9ca3146100bd5780632f2ff15d146100e35780633f4ba83a146100f6575b600080fd5b6100bb6100b6366004610b10565b610157565b005b6100d06100cb366004610b32565b6101db565b6040519081526020015b60405180910390f35b6100bb6100f1366004610b4b565b6101ec565b6100bb61020d565b6101066102f4565b60405190151581526020016100da565b6100bb610307565b6100bb61012c366004610b32565b6103ed565b61010661013f366004610b4b565b6103f9565b6100bb610152366004610b4b565b61040c565b610162600033610428565b6101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064015b60405180910390fd5b6101d7828261044b565b5050565b60006101e68261046b565b92915050565b6101f58261046b565b6101fe81610489565b6102088383610493565b505050565b60165460ff16610279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016101c4565b610284600033610428565b6102ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064016101c4565b6102f26104fe565b565b600061030260165460ff1690565b905090565b60165460ff1615610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016101c4565b61037f600033610428565b6103e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064016101c4565b6102f261055c565b6103f6816105b7565b50565b60006104058383610428565b9392505050565b6104158261046b565b61041e81610489565b61020883836105bd565b600061040582610436610628565b6000868152602091909152604090209061067e565b80610454610628565b600093845260205260409092206002019190915550565b6000610475610628565b600092835260205250604090206002015490565b6103f681336106ad565b6104b48161049f610628565b60008581526020919091526040902090610754565b50604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610552565b6103f681335b6105de816105c9610628565b60008581526020919091526040902090610776565b50604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061067760017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd77610bc3565b1692915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610405565b6106b78282610428565b6101d7576106da8173ffffffffffffffffffffffffffffffffffffffff16610798565b6106e58360206107b7565b6040516020016106f6929190610bfa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101c491600401610c7b565b60006104058373ffffffffffffffffffffffffffffffffffffffff84166109ce565b60006104058373ffffffffffffffffffffffffffffffffffffffff8416610a1d565b60606101e673ffffffffffffffffffffffffffffffffffffffff831660145b606060006107c6836002610ccc565b6107d1906002610ce3565b67ffffffffffffffff8111156107e9576107e9610cf6565b6040519080825280601f01601f191660200182016040528015610813576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084a5761084a610d25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108ad576108ad610d25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600160028402015b6001811115610995577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061092257610922610d25565b1a60f81b82828151811061093857610938610d25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016108e4565b508315610405576040517fc913478500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600183016020526040812054610a15575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101e6565b5060006101e6565b60008181526001830160205260408120548015610b06576000610a41600183610bc3565b8554909150600090610a5590600190610bc3565b9050818114610aba576000866000018281548110610a7557610a75610d25565b9060005260206000200154905080876000018481548110610a9857610a98610d25565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610acb57610acb610d54565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101e6565b60009150506101e6565b60008060408385031215610b2357600080fd5b50508035926020909101359150565b600060208284031215610b4457600080fd5b5035919050565b60008060408385031215610b5e57600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610b8957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101e6576101e6610b94565b60005b83811015610bf1578181015183820152602001610bd9565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610c32816017850160208801610bd6565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351610c6f816028840160208801610bd6565b01602801949350505050565b6020815260008251806020840152610c9a816040850160208701610bd6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80820281158282048414176101e6576101e6610b94565b808201808211156101e6576101e6610b94565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212205bde9c390867f57489d1468716558e95e312be2323121c8a6a186414406ffd7464736f6c63430008130033",
+ "nonce": "0x44d",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x569b506b9a9876af9d309da49dcfd4c34de030f61ab3227fb9f3e751b03c7cbd",
+ "transactionType": "CREATE",
+ "contractName": "DiamondCutFacet",
+ "contractAddress": "0xd3c81bd07948a38546bca894f8bfecb552613798",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x1fdf7e",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50611c5f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004611589565b610045565b005b61004d61009e565b61009761005a8587611706565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015592505050565b5050505050565b6100a6610396565b6004015473ffffffffffffffffffffffffffffffffffffffff163314610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201527f657200000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b565b60005b835181101561034b57600084828151811061017557610175611862565b60200260200101516020015190506000600281111561019657610196611891565b8160028111156101a8576101a8611891565b036101f6576101f18583815181106101c2576101c2611862565b6020026020010151600001518684815181106101e0576101e0611862565b6020026020010151604001516103ec565b610338565b600181600281111561020a5761020a611891565b03610253576101f185838151811061022457610224611862565b60200260200101516000015186848151811061024257610242611862565b602002602001015160400151610786565b600281600281111561026757610267611891565b036102b0576101f185838151811061028157610281611862565b60200260200101516000015186848151811061029f5761029f611862565b602002602001015160400151610b30565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e00000000000000000000000000000000000000000000000000606482015260840161014a565b5080610343816118ef565b915050610158565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161037f93929190611995565b60405180910390a16103918282610d0e565b505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006103e560017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c611afd565b1692915050565b600081511161047d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161014a565b6000610487610396565b905073ffffffffffffffffffffffffffffffffffffffff831661052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f6520616464726573732830290000000000000000000000000000000000000000606482015260840161014a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600182016020526040812054906bffffffffffffffffffffffff82169003610574576105748285610e07565b60005b835181101561009757600084828151811061059457610594611862565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff168015610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840161014a565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790558361076e81611b16565b9450505050808061077e906118ef565b915050610577565b6000815111610817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161014a565b6000610821610396565b905073ffffffffffffffffffffffffffffffffffffffff83166108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f6520616464726573732830290000000000000000000000000000000000000000606482015260840161014a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600182016020526040812054906bffffffffffffffffffffffff8216900361090e5761090e8285610e07565b60005b835181101561009757600084828151811061092e5761092e611862565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff9081169087168103610a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161014a565b610a23858284610e96565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610b1881611b16565b94505050508080610b28906118ef565b915050610911565b6000815111610bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161014a565b6000610bcb610396565b905073ffffffffffffffffffffffffffffffffffffffff831615610c71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d757374206265206164647265737328302900000000000000000000606482015260840161014a565b60005b8251811015610d08576000838281518110610c9157610c91611862565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16610cf3848284610e96565b50508080610d00906118ef565b915050610c74565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610d2d575050565b610d4f82604051806060016040528060288152602001611bde602891396114dc565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610d779190611b41565b600060405180830381855af49150503d8060008114610db2576040519150601f19603f3d011682016040523d82523d6000602084013e610db7565b606091505b509150915081610d0857805115610dd15780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040161014a929190611b5d565b610e2981604051806060016040528060248152602001611c06602491396114dc565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216610f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161014a565b7fe06ce3e4000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160161100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f7665206469616d60448201527f6f6e644375742066756e6374696f6e0000000000000000000000000000000000606482015260840161014a565b3073ffffffffffffffffffffffffffffffffffffffff8316036110af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e000000000000000000000000000000000000606482015260840161014a565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16929161113991611afd565b90508082146112805773ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040812080548390811061117b5761117b611862565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b9250829190859081106111d9576111d9611862565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604090208054806112b6576112b6611b94565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff00000000000000000000000000000000000000000000000000000000851682528690526040812081905581900361009757600285015460009061134f90600190611afd565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260018089016020526040909120015490915080821461143d57600087600201838154811061139b5761139b611862565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff90921692508291849081106113d9576113d9611862565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b8660020180548061145057611450611b94565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b813b8181610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014a9190611bc3565b803573ffffffffffffffffffffffffffffffffffffffff8116811461153b57600080fd5b919050565b60008083601f84011261155257600080fd5b50813567ffffffffffffffff81111561156a57600080fd5b60208301915083602082850101111561158257600080fd5b9250929050565b6000806000806000606086880312156115a157600080fd5b853567ffffffffffffffff808211156115b957600080fd5b818801915088601f8301126115cd57600080fd5b8135818111156115dc57600080fd5b8960208260051b85010111156115f157600080fd5b6020830197508096505061160760208901611517565b9450604088013591508082111561161d57600080fd5b5061162a88828901611540565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561168d5761168d61163b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116da576116da61163b565b604052919050565b600067ffffffffffffffff8211156116fc576116fc61163b565b5060051b60200190565b6000611719611714846116e2565b611693565b83815260208082019190600586811b86013681111561173757600080fd5b865b8181101561185557803567ffffffffffffffff8082111561175a5760008081fd5b818a019150606082360312156117705760008081fd5b61177861166a565b61178183611517565b815286830135600381106117955760008081fd5b81880152604083810135838111156117ad5760008081fd5b939093019236601f8501126117c457600092508283fd5b833592506117d4611714846116e2565b83815292871b840188019288810190368511156117f15760008081fd5b948901945b8486101561183e5785357fffffffff000000000000000000000000000000000000000000000000000000008116811461182f5760008081fd5b825294890194908901906117f6565b918301919091525088525050948301948301611739565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611920576119206118c0565b5060010190565b60005b8381101561194257818101518382015260200161192a565b50506000910152565b60008151808452611963816020860160208601611927565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015611ac0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611a47577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015611aab5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611a69565b509785019795505050908201906001016119be565b505073ffffffffffffffffffffffffffffffffffffffff8a16908801528681036040880152611aef818961194b565b9a9950505050505050505050565b81810381811115611b1057611b106118c0565b92915050565b60006bffffffffffffffffffffffff808316818103611b3757611b376118c0565b6001019392505050565b60008251611b53818460208701611927565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611b8c604083018461194b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b602081526000611bd6602083018461194b565b939250505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220eae05efcfa957bc46cd14c4726ab743abce9656ca27cbbd398f07b8ed6c3bd4564736f6c63430008130033",
+ "nonce": "0x44e",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x1afc7573f218b35609513d77be2ca2392aa11440dc2490aaa16bb8ec3ba688fd",
+ "transactionType": "CREATE",
+ "contractName": "DiamondLoupeFacet",
+ "contractAddress": "0xd11b60c336a8416162272475ff9df572e516fc51",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x9abe5",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b506107e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637a0ed627116100505780637a0ed627146100a9578063adfca15e146100be578063cdffacc6146100de57600080fd5b806301ffc9a71461006c57806352ef6b2c14610094575b600080fd5b61007f61007a366004610521565b610116565b60405190151581526020015b60405180910390f35b61009c61015f565b60405161008b919061056a565b6100b16101d8565b60405161008b9190610621565b6100d16100cc3660046106c9565b6103a5565b60405161008b91906106ff565b6100f16100ec366004610521565b610471565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b6000806101216104cb565b7fffffffff00000000000000000000000000000000000000000000000000000000909316600090815260039093016020525050604090205460ff1690565b6060600061016b6104cb565b600281018054604080516020808402820181019092528281529394508301828280156101cd57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101a2575b505050505091505090565b606060006101e46104cb565b60028101549091508067ffffffffffffffff81111561020557610205610712565b60405190808252806020026020018201604052801561024b57816020015b6040805180820190915260008152606060208201528152602001906001900390816102235790505b50925060005b8181101561039f57600083600201828154811061027057610270610741565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808583815181106102b0576102b0610741565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561037157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161031e5790505b505050505085838151811061038857610388610741565b602090810291909101810151015250600101610251565b50505090565b606060006103b16104cb565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600182016020908152604091829020805483518184028101840190945280845293945091929083018282801561046457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104115790505b5050505050915050919050565b60008061047c6104cb565b7fffffffff0000000000000000000000000000000000000000000000000000000090931660009081526020939093525050604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061051a60017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c610770565b1692915050565b60006020828403121561053357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056357600080fd5b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156105b857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610586565b50909695505050505050565b600081518084526020808501945080840160005b838110156106165781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016105d8565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156106bb578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528701518784018790526106a8878501826105c4565b9588019593505090860190600101610648565b509098975050505050505050565b6000602082840312156106db57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461056357600080fd5b60208152600061056360208301846105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103818111156107aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220e6b69c87b559650f830a1b81dcbc39f26769324b84b677adf39178afd0de48cf64736f6c63430008130033",
+ "nonce": "0x44f",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xf5c03465a68a86b700aba947ffdc09e320cfd13c4a659cb54b858141e604407c",
+ "transactionType": "CREATE",
+ "contractName": "ManagerFacet",
+ "contractAddress": "0x0e9f3299b9443d3d5130771f26b7e18a2a7aa9db",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x278882",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50612364806100206000396000f3fe608060405234801561001057600080fd5b50600436106102d25760003560e01c80639232461111610186578063c0030add116100e3578063e2d443bd11610097578063f6f172cb11610071578063f6f172cb1461067e578063f986cd5714610691578063fbff3a41146106a457600080fd5b8063e2d443bd1461062f578063e8b7342414610642578063ebef28a71461066057600080fd5b8063d3815fb9116100c8578063d3815fb9146105e0578063dd390ea0146105fe578063e0ee68551461061157600080fd5b8063c0030add146105af578063c5f956af146105c257600080fd5b8063b0bd67b41161013a578063ba2d8cdd1161011f578063ba2d8cdd1461056b578063bc3ea0181461057e578063be1d86e11461059c57600080fd5b8063b0bd67b41461052f578063b42165d01461054d57600080fd5b8063965cc7ac1161016b578063965cc7ac146104ba578063a9b8b796146104d8578063ad3401ed1461051157600080fd5b8063923246111461049457806393e4e9ee146104a757600080fd5b8063221e2e60116102345780636605bfda116101e85780638b38ebb3116101cd5780638b38ebb31461048e5780638fe636831461048e57806391df16d31461048e57600080fd5b80636605bfda14610468578063826d5b8b1461047b57600080fd5b80633535f48b116102195780633535f48b1461040e57806336c3df241461042c578063421e108c1461044a57600080fd5b8063221e2e60146103dd57806333c5aa57146103fb57600080fd5b80631a47c9041161028b5780631c1f8aa3116102705780631c1f8aa3146103995780631f7e8c7e146103ac578063214f7882146103bf57600080fd5b80631a47c904146103685780631a867af51461038657600080fd5b8063017df327116102bc578063017df327146102ff578063147f1b961461034257806315f973981461035557600080fd5b806283faee146102d7578063016afee7146102ec575b600080fd5b6102ea6102e5366004611fc7565b6106b7565b005b6102ea6102fa366004611feb565b610774565b60095473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6102ea610350366004611fc7565b610879565b6102ea610363366004611fc7565b610931565b60135473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610394366004611fc7565b6109e9565b6102ea6103a7366004611fc7565b610aa1565b6102ea6103ba366004611fc7565b610b59565b600e5473ffffffffffffffffffffffffffffffffffffffff16610319565b600d5473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610409366004611fc7565b610c11565b60065473ffffffffffffffffffffffffffffffffffffffff16610319565b600c5473ffffffffffffffffffffffffffffffffffffffff16610319565b60125473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610476366004611fc7565b610cc9565b6102ea610489366004611fc7565b610d81565b30610319565b6102ea6104a2366004611fc7565b610e39565b6102ea6104b5366004611fc7565b610ef1565b60085473ffffffffffffffffffffffffffffffffffffffff16610319565b6103196104e6366004611fc7565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152601560205260409020541690565b60055473ffffffffffffffffffffffffffffffffffffffff16610319565b60025473ffffffffffffffffffffffffffffffffffffffff16610319565b600b5473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610579366004611fc7565b610fa9565b60015473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea6105aa366004611fc7565b611061565b6102ea6105bd366004611fc7565b611119565b600a5473ffffffffffffffffffffffffffffffffffffffff16610319565b60075473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea61060c366004611fc7565b6111d1565b60045473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea61063d366004611fc7565b611289565b60115473ffffffffffffffffffffffffffffffffffffffff16610319565b600f5473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea61068c366004611feb565b611341565b6102ea61069f366004611fc7565b611405565b6102ea6106b2366004612024565b6114bd565b6106c2600033611efa565b61072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064015b60405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61077f600033611efa565b6107e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b6001546040517fb6232c9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152838116602483015290911690819063b6232c9990604401600060405180830381600087803b15801561085c57600080fd5b505af1158015610870573d6000803e3d6000fd5b50505050505050565b610884600033611efa565b6108ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61093c600033611efa565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6109f4600033611efa565b610a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610aac600033611efa565b610b12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610b64600033611efa565b610bca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610c1c600033611efa565b610c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610cd4600033611efa565b610d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610d8c600033611efa565b610df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e44600033611efa565b610eaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610efc600033611efa565b610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610fb4600033611efa565b61101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61106c600033611efa565b6110d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611124600033611efa565b61118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6111dc600033611efa565b611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611294600033611efa565b6112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61134c600033611efa565b6113b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260156020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b611410600033611efa565b611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6114c8600033611efa565b61152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b60008573ffffffffffffffffffffffffffffffffffffffff1663e339eb4f86600060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156115bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261160391908101906120d2565b600154604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216916395d89b41916004808201926000929091908290030181865afa158015611673573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116b991908101906120d2565b6001546040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526117129493929173ffffffffffffffffffffffffffffffffffffffff16908a908a906004016121e7565b6020604051808303816000875af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190612247565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919250600091908616906370a0823190602401602060405180830381865afa1580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a9190612264565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561188e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b29190612264565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152600060248301529192509087169063095ea7b3906044016020604051808303816000875af115801561192b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194f919061227d565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905287169063095ea7b3906044016020604051808303816000875af11580156119c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e9919061227d565b506001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152600060248301529091169063095ea7b3906044016020604051808303816000875af1158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a87919061227d565b506001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b25919061227d565b506001546040517fc66106570000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9182169185169063c661065790602401602060405180830381865afa158015611b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbc9190612247565b73ffffffffffffffffffffffffffffffffffffffff16148015611c8657506040517fc66106570000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff808816919085169063c661065790602401602060405180830381865afa158015611c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6e9190612247565b73ffffffffffffffffffffffffffffffffffffffff16145b611cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d47523a20434f494e5f4f524445525f4d49534d4154434800000000000000006044820152606401610724565b60408051808201918290526001547f70a0823100000000000000000000000000000000000000000000000000000000909252306044820152600091819073ffffffffffffffffffffffffffffffffffffffff166370a0823160648301602060405180830381865afa158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d899190612264565b81526040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260209091019073ffffffffffffffffffffffffffffffffffffffff8a16906370a0823190602401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190612264565b9052600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a8116919091179091556040517f0c3e4b54000000000000000000000000000000000000000000000000000000008152919250851690630c3e4b5490611eab908490600090339060040161229f565b6020604051808303816000875af1158015611eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eee9190612264565b50505050505050505050565b6000611f4382611f08611f4c565b6000868152602091909152604090209073ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b90505b92915050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00611f9b60017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd776122f4565b1692915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611fc457600080fd5b50565b600060208284031215611fd957600080fd5b8135611fe481611fa2565b9392505050565b60008060408385031215611ffe57600080fd5b823561200981611fa2565b9150602083013561201981611fa2565b809150509250929050565b600080600080600060a0868803121561203c57600080fd5b853561204781611fa2565b9450602086013561205781611fa2565b9350604086013561206781611fa2565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156120c95781810151838201526020016120b1565b50506000910152565b6000602082840312156120e457600080fd5b815167ffffffffffffffff808211156120fc57600080fd5b818401915084601f83011261211057600080fd5b8151818111156121225761212261207f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156121685761216861207f565b8160405282815287602084870101111561218157600080fd5b6121928360208301602088016120ae565b979650505050505050565b600081518084526121b58160208601602086016120ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808916835260c0602084015261221760c084018961219d565b8381036040850152612229818961219d565b91909616606084015260808301949094525060a00152949350505050565b60006020828403121561225957600080fd5b8151611fe481611fa2565b60006020828403121561227657600080fd5b5051919050565b60006020828403121561228f57600080fd5b81518015158114611fe457600080fd5b60808101818560005b60028110156122c75781518352602092830192909101906001016122a8565b50505083604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b81810381811115611f46577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212204f9ccdf644aef54406cccef94ed16de7be826020fe145183708fadc9e6eaef4e64736f6c63430008130033",
+ "nonce": "0x450",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xd1ab4e2ee714a62be280b18b1c04b8a2e6ec63eddf8990e0bb88de7c70bc1a03",
+ "transactionType": "CREATE",
+ "contractName": "OwnershipFacet",
+ "contractAddress": "0x58860e93b6fc7a6e4abd0f5d851a88654a34d0c0",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x51752",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b506103b5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461006c575b600080fd5b610043610081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f61007a366004610302565b610090565b005b600061008b61014c565b905090565b73ffffffffffffffffffffffffffffffffffffffff8116610138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f776e65727368697046616365743a204e6577206f776e65722063616e6e6f7460448201527f20626520746865207a65726f206164647265737300000000000000000000000060648201526084015b60405180910390fd5b610140610175565b61014981610227565b50565b60006101566102ac565b6004015473ffffffffffffffffffffffffffffffffffffffff16919050565b61017d6102ac565b6004015473ffffffffffffffffffffffffffffffffffffffff163314610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201527f6572000000000000000000000000000000000000000000000000000000000000606482015260840161012f565b565b60006102316102ac565b60048101805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006102fb60017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c61033f565b1692915050565b60006020828403121561031457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461033857600080fd5b9392505050565b81810381811115610379577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea264697066735822122005e30e5b5f63f7d5488f6ee88a05c89f44fcab3a4df62b42203c04b65f73be4f64736f6c63430008130033",
+ "nonce": "0x451",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x3c4a05d831ee1a3f2d1afe2e53a3b1be5104618b35cb1216941e43419072d49c",
+ "transactionType": "CREATE",
+ "contractName": "UbiquityPoolFacet",
+ "contractAddress": "0xb64f2347752192f51930ad6ad3bea0b3a2074fac",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x529630",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50614a8e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80639aae55a71161010f578063b98c9fe6116100a2578063de858d7c11610071578063de858d7c14610446578063ecfd1a9e14610459578063edc8d27d1461046c578063edecef951461047f57600080fd5b8063b98c9fe6146103eb578063c4cb35cf146103f3578063cbd4e7b414610420578063cec10c111461043357600080fd5b80639d202bf8116100de5780639d202bf8146103aa578063a14d1f78146103bd578063aeaf4f04146103d0578063b4eae1cb146103e357600080fd5b80639aae55a7146103485780639b52b9a81461035b5780639b94607c1461038f5780639c494373146103a257600080fd5b80637853c8881161018757806381f174671161015657806381f17467146102f857806382ae27cd1461030d57806387dcd5fb1461032d57806392beb0421461034057600080fd5b80637853c888146102975780637e625a55146102aa5780637efc918f146102d257806381060163146102e557600080fd5b80632ed4d2d6116101c35780632ed4d2d61461025657806330bbe585146102695780635b0bdd8a1461027c5780636060663e1461028457600080fd5b8063040da685146101f557806317b2bffa1461020a5780632287fe4014610230578063245cd97314610243575b600080fd5b6102086102033660046140d5565b6104ad565b005b61021d610218366004614105565b610517565b6040519081526020015b60405180910390f35b61021d61023e366004614147565b610528565b61021d610251366004614162565b610533565b610208610264366004614147565b610546565b610208610277366004614147565b6105a9565b61021d610609565b610208610292366004614105565b610618565b6102086102a536600461418c565b610678565b6102bd6102b83660046141ae565b6106d9565b60408051928352602083019190915201610227565b6102086102e03660046141e0565b610770565b6102086102f3366004614162565b6107d7565b610300610838565b604051610227919061421c565b61032061031b366004614147565b610842565b60405161022791906142e4565b61021d61033b36600461418c565b6108f1565b61021d6108fd565b610208610356366004614105565b610907565b610363610910565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610227565b61020861039d366004614147565b610923565b61021d610983565b6102bd6103b8366004614105565b61098d565b6102086103cb366004614162565b610a1e565b6102086103de366004614105565b610a7f565b61021d610adf565b610363610ae9565b6103fb610af4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610227565b61020861042e366004614105565b610afe565b6102086104413660046143f9565b610b5e565b6102086104543660046141e0565b610bc0565b61020861046736600461418c565b610c22565b61020861047a366004614105565b610c83565b61049261048d366004614433565b610c8c565b60408051938452602084019290925290820152606001610227565b6104b8600033610d0f565b6105095760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064015b60405180910390fd5b6105138282610d32565b5050565b600061052282610ed9565b92915050565b600061052282610fbf565b600061053f8383610ff9565b9392505050565b610551600033610d0f565b61059d5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a68161103f565b50565b6105b4600033610d0f565b6106005760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a68161119f565b600061061361122e565b905090565b610623600033610d0f565b61066f5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a6816114dc565b610683600033610d0f565b6106cf5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105138282611573565b6000805481907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161074d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610500565b600260005561075e868686866115c4565b60016000559097909650945050505050565b61077b600033610d0f565b6107c75760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6107d2838383611b7c565b505050565b6107e2600033610d0f565b61082e5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105138282611f44565b6060610613611fd3565b6108e8604051806101c001604052806000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160008152602001600081525090565b6105228261204c565b600061053f83836124a6565b600061061361251a565b6105a6816127de565b60008061091b612a88565b915091509091565b61092e600033610d0f565b61097a5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a681612ac1565b6000610613612b43565b6000805481907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610a015760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610500565b6002600055610a0f83612bea565b60016000559094909350915050565b610a29600033610d0f565b610a755760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105138282612ed4565b610a8a600033610d0f565b610ad65760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a681612f63565b6000610613613025565b60008061091b61303a565b6000610613613073565b610b09600033610d0f565b610b555760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a68161309e565b610b69600033610d0f565b610bb55760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6107d28383836130e2565b610bcb600033610d0f565b610c175760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6107d283838361317d565b610c2d600033610d0f565b610c795760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b61051382826132ee565b6105a681613358565b60008060006002600080015403610ce55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610500565b6002600055610cf88989898989896135e1565b6001600055919b909a509098509650505050505050565b600061053f82610d1d613b63565b60008681526020919091526040902090613bb9565b6000610d3c613be8565b90508160ff16600003610dc257806016018381548110610d5e57610d5e614488565b90600052602060002090602091828204019190069054906101000a900460ff1615816016018481548110610d9457610d94614488565b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550610e98565b8160ff16600103610e1857806017018381548110610de257610de2614488565b90600052602060002090602091828204019190069054906101000a900460ff1615816017018481548110610d9457610d94614488565b8160ff16600203610e9857806015018381548110610e3857610e38614488565b90600052602060002090602091828204019190069054906101000a900460ff1615816015018481548110610e6e57610e6e614488565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055505b6040805184815260ff841660208201527fbec79b11b630e33aa3659219a5b4daa7afe827632aa430038e143137f8fe947c91015b60405180910390a1505050565b600080610ee4613be8565b905061053f816011018481548110610efe57610efe614488565b9060005260206000200154826001018581548110610f1e57610f1e614488565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb991906144b7565b90613c37565b600080610fca613be8565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600f9093016020525050604090205490565b600080611004613be8565b73ffffffffffffffffffffffffffffffffffffffff949094166000908152600e90940160209081526040808620948652939052505090205490565b73ffffffffffffffffffffffffffffffffffffffff81166110a25760405162461bcd60e51b815260206004820152601560248201527f5a65726f206164647265737320646574656374656400000000000000000000006044820152606401610500565b60008173ffffffffffffffffffffffffffffffffffffffff16639c84d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111391906144b7565b9050600061111f613be8565b73ffffffffffffffffffffffffffffffffffffffff84166000818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182529192507f52f81308a3d2d4628c2f3d497cfa085e5607381f7880df16645d1bffd1f3804d9101610ecc565b60006111a9613be8565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182529192507f2aa8eaa3c2488ba6ac1471de9d1eb0fc21ad69b649415dbdf94467ca4559a21691015b60405180910390a15050565b600080600061123b613be8565b9050600081601b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906144ea565b5093505092505060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611350919061453a565b60ff169050600083136113a55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420537461626c652f55534420707269636500000000000000006044820152606401610500565b601c8501546113b48342614586565b106114015760405162461bcd60e51b815260206004820152601560248201527f5374616c6520537461626c652f555344206461746100000000000000000000006044820152606401610500565b60088601546040517f687276530000000000000000000000000000000000000000000000000000000081526000600482018190529173ffffffffffffffffffffffffffffffffffffffff1690636872765390602401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149791906144b7565b90506114d0670de0b6b3a76400006114ca6114b385600a6146b9565b6114ca886114c487620f4240613c43565b90613c43565b90613c4f565b97505050505050505090565b620f424081111561152f5760405162461bcd60e51b815260206004820152601a60248201527f436f6c6c61746572616c20726174696f20746f6f206c617267650000000000006044820152606401610500565b6000611539613be8565b600681018390556040518381529091507f8a77c775772f19a095a743319ccdc8208b70389844786995a8ca94a4f6a8dd0290602001611222565b600061157d613be8565b600c8101849055600d810183905560408051858152602081018590529192507f08f944f25b910c541435bcde52d233072e903b37afc29bc8b5787b6e74d82c1a9101610ecc565b6000808560006115d2613be8565b90508060080160008260010184815481106115ef576115ef614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff166116705760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b600061167a613be8565b905080601701898154811061169157611691614488565b60009182526020918290209181049091015460ff601f9092166101000a900416156116fe5760405162461bcd60e51b815260206004820152601360248201527f52656465656d696e6720697320706175736564000000000000000000000000006044820152606401610500565b80600d015461170b61122e565b11156117595760405162461bcd60e51b815260206004820152601560248201527f446f6c6c617220707269636520746f6f206869676800000000000000000000006044820152606401610500565b60006117a1620f42406114ca61179a856014018e8154811061177d5761177d614488565b9060005260206000200154620f4240613c3790919063ffffffff16565b8c90613c43565b90506117ac8a613358565b6006820154620f424081106117d0576117c58b836124a6565b965060009550611837565b806000036117fb57600096506117f46117e761251a565b6114ca84620f4240613c43565b9550611837565b611810620f42406114ca836114c48f876124a6565b965061183461181d61251a565b6114ca61182d620f424085613c37565b8590613c43565b95505b61186f836011018c8154811061184f5761184f614488565b9060005260206000200154846001018d81548110610f1e57610f1e614488565b8711156118be5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420706f6f6c20636f6c6c61746572616c000000006044820152606401610500565b8787101561190e5760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c20736c697070616765000000000000000000000000006044820152606401610500565b8886101561195e5760405162461bcd60e51b815260206004820152601360248201527f476f7665726e616e636520736c697070616765000000000000000000000000006044820152606401610500565b336000908152600e8401602090815260408083208e84529091529020546119859088613c5b565b336000908152600e8501602090815260408083208f84529091529020556011830180546119d79189918e9081106119be576119be614488565b9060005260206000200154613c5b90919063ffffffff16565b836011018c815481106119ec576119ec614488565b6000918252602080832090910192909255338152600f85019091526040902054611a169087613c5b565b336000908152600f850160205260409020556012830154611a379087613c5b565b6012840155336000908152600b840160205260408120439055600101546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff909116906379cc679090604401600060405180830381600087803b158015611ac357600080fd5b505af1158015611ad7573d6000803e3d6000fd5b50505050611ae3600090565b600b01546040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810188905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015611b5657600080fd5b505af1158015611b6a573d6000803e3d6000fd5b50505050505050505094509492505050565b611b8583613c67565b15611bd25760405162461bcd60e51b815260206004820152601860248201527f436f6c6c61746572616c20616c726561647920616464656400000000000000006044820152606401610500565b6000611bdc613be8565b60018181018054918201815560009081526020808220830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a1690811790915580835260028501825260408084208590556008860183529283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905582517f313ce567000000000000000000000000000000000000000000000000000000008152925194955092936009860193611d0193909263313ce567926004808401938290030181865afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf6919061453a565b60129060ff16613c37565b81546001810183556000928352602083200155604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051600785019273ffffffffffffffffffffffffffffffffffffffff8916926395d89b4192600480830193928290030181865afa158015611d80573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dc691908101906146f4565b81546001810183556000928352602090922090910190611de69082614855565b505060118101805460018082018355600092835260208084209092018390556005840180548083018255908452828420620f42409101556013840180548083018255908452828420018390556014840180548083018255908452828420018390556016840180548083018255908452828420838204018054601f92831661010090810a60ff908102199092169092556017870180548086018255908752858720868204018054918516840a830219909116905560158701805480860182559087528587208682040180549190941690920a0219169055600a840180548083018255908452828420019490945560038301805480860182559083528183200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff96909616959095179094556004909101805492830181558152919091206201518091015550565b6000611f4e613be8565b601b810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155601c820184905560408051918252602082018590529192507f78293bd51057152112290a42345ccd9387562eac811030334ea757f4d49bdd239101610ecc565b60606000611fdf613be8565b6001810180546040805160208084028201810190925282815293945083018282801561204157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612016575b505050505091505090565b6120f2604051806101c001604052806000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160008152602001600081525090565b60006120fc613be8565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260088201602052604090205490915060ff166121765760405162461bcd60e51b815260206004820152601260248201527f496e76616c696420636f6c6c61746572616c00000000000000000000000000006044820152606401610500565b60008160020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050604051806101c001604052808281526020018360070183815481106121e3576121e3614488565b9060005260206000200180546121f8906147b4565b80601f0160208091040260200160405190810160405280929190818152602001828054612224906147b4565b80156122715780601f1061224657610100808354040283529160200191612271565b820191906000526020600020905b81548152906001019060200180831161225457829003601f168201915b505050505081526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018360030183815481106122ac576122ac614488565b6000918252602091829020015473ffffffffffffffffffffffffffffffffffffffff1682526004850180549290910191849081106122ec576122ec614488565b6000918252602080832090910154835273ffffffffffffffffffffffffffffffffffffffff881682526008860181526040918290205460ff161515908301526009850180549190920191908490811061234757612347614488565b9060005260206000200154815260200183600501838154811061236c5761236c614488565b9060005260206000200154815260200183600a01838154811061239157612391614488565b906000526020600020015481526020018360160183815481106123b6576123b6614488565b90600052602060002090602091828204019190069054906101000a900460ff16151581526020018360170183815481106123f2576123f2614488565b90600052602060002090602091828204019190069054906101000a900460ff161515815260200183601501838154811061242e5761242e614488565b90600052602060002090602091828204019190069054906101000a900460ff161515815260200183601301838154811061246a5761246a614488565b9060005260206000200154815260200183601401838154811061248f5761248f614488565b906000526020600020015481525092505050919050565b6000806124b1613be8565b90506125128160050185815481106124cb576124cb614488565b90600052602060002001546114ca8360090187815481106124ee576124ee614488565b9060005260206000200154600a61250591906146b9565b6114ca87620f4240613c43565b949350505050565b600080612525613be8565b905060008160180160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561259e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c291906144ea565b5093505092505060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263a919061453a565b60ff1690506000831361268f5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207072696365000000000000000000000000000000000000006044820152606401610500565b601985015461269e8342614586565b106126eb5760405162461bcd60e51b815260206004820152600a60248201527f5374616c652064617461000000000000000000000000000000000000000000006044820152606401610500565b60006127086126fb83600a6146b9565b6114ca86620f4240613c43565b9050600086601a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386fc88d36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561277b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279f91906144b7565b905060006127b9826114ca670de0b6b3a764000080613c43565b90506127d1670de0b6b3a76400006114ca8386613c43565b9850505050505050505090565b60006127e8613be8565b3360009081526020829052604090205490915060ff1661284a5760405162461bcd60e51b815260206004820152601160248201527f4e6f7420616e20414d4f204d696e7465720000000000000000000000000000006044820152606401610500565b6000612854613be8565b905060003373ffffffffffffffffffffffffffffffffffffffff1663fe93de1f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c791906144b7565b90508160150181815481106128de576128de614488565b60009182526020918290209181049091015460ff601f9092166101000a9004161561294b5760405162461bcd60e51b815260206004820152601360248201527f426f72726f77696e6720697320706175736564000000000000000000000000006044820152606401610500565b81600801600083600101838154811061296657612966614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff166129e75760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b6129f081610ed9565b841115612a3f5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f756768206672656520636f6c6c61746572616c0000000000006044820152606401610500565b612a823385846001018481548110612a5957612a59614488565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190613d62565b50505050565b6000806000612a95613be8565b601881015460199091015473ffffffffffffffffffffffffffffffffffffffff90911694909350915050565b6000612acb613be8565b601a810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040519081529091507fdac3a48dff76eec0a284b649cfb07035804ede2892dbaf7e72050756144fbb8c90602001611222565b600080612b4e613be8565b600181015460009350909150825b81811015612be457612bc6620f42406114ca856005018481548110612b8357612b83614488565b90600052602060002001546114c4876009018681548110612ba657612ba6614488565b9060005260206000200154600a612bbd91906146b9565b6114c487610ed9565b612bd0908561496f565b935080612bdc81614982565b915050612b5c565b50505090565b600080826000612bf8613be8565b9050806008016000826001018481548110612c1557612c15614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16612c965760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b6000612ca0613be8565b9050806017018681548110612cb757612cb7614488565b60009182526020918290209181049091015460ff601f9092166101000a90041615612d245760405162461bcd60e51b815260206004820152601360248201527f52656465656d696e6720697320706175736564000000000000000000000000006044820152606401610500565b6010810154336000908152600b830160205260409020544391612d479190613c5b565b10612d945760405162461bcd60e51b815260206004820152601e60248201527f546f6f20736f6f6e20746f20636f6c6c65637420726564656d7074696f6e00006044820152606401610500565b336000908152600f82016020526040812054819015612ddf57336000908152600f84016020526040812080549190556012840154909750612dd59088613c37565b6012840155600191505b336000908152600e8401602090815260408083208b845290915290205415612e8057336000908152600e8401602090815260408083208b845290915281208054919055601184018054919750612e5b918891908b908110612e4257612e42614488565b9060005260206000200154613c3790919063ffffffff16565b836011018981548110612e7057612e70614488565b6000918252602090912001555060015b8115612eaa57600b54612eaa9073ffffffffffffffffffffffffffffffffffffffff163389613d62565b8015612eca57612eca3387856001018b81548110612a5957612a59614488565b5050505050915091565b6000612ede613be8565b6018810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091556019820184905560408051918252602082018590529192507fe6bcf4a564a699a1c83d282eab21db81fe3ef3c3f867c402e63d074bb77925ff9101610ecc565b6000612f6d613be8565b90506000816001018381548110612f8657612f86614488565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16808352600885018252604092839020805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921682179092558451888152911615159281019290925292507f088e9476d8b4139e22c8e66b078291edda3cd924ce0b0e7193f2a38e293e70ee9101610ecc565b600080613030613be8565b6006015492915050565b6000806000613047613be8565b601b810154601c9091015473ffffffffffffffffffffffffffffffffffffffff90911694909350915050565b60008061307e613be8565b601a015473ffffffffffffffffffffffffffffffffffffffff1692915050565b60006130a8613be8565b601081018390556040518381529091507f8902fd14f40c20383dcae5d0f2b3b06b9973c89cac3e900cf9a999830277e8e690602001611222565b60006130ec613be8565b90508281601301858154811061310457613104614488565b90600052602060002001819055508181601401858154811061312857613128614488565b600091825260209182902001919091556040805186815291820185905281018390527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a150505050565b61318683613c67565b6131d25760405162461bcd60e51b815260206004820152601960248201527f436f6c6c61746572616c20646f6573206e6f74206578697374000000000000006044820152606401610500565b60006131dc613be8565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260028201602052604090205460038201805492935090918591908390811061322257613222614488565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508282600401828154811061328057613280614488565b600091825260209182902001919091556040805183815273ffffffffffffffffffffffffffffffffffffffff87169281019290925281018490527f9c42f4d9153d55d78cf2011cd58875a5b9a8b1a30b7d0e7857d4fd69300161229060600160405180910390a15050505050565b60006132f8613be8565b90508181600a01848154811061331057613310614488565b90600052602060002001819055507f4cb99f07bf9ab5f864d81d791709058819f4188481fb3c70b90a1765e003b16e8383604051610ecc929190918252602082015260400190565b6000613362613be8565b9050600081600301838154811061337b5761337b614488565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156133f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341a91906144ea565b5093505092505060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561346e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613492919061453a565b60ff169050600083136134e75760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207072696365000000000000000000000000000000000000006044820152606401610500565b8460040186815481106134fc576134fc614488565b906000526020600020015482426135139190614586565b106135605760405162461bcd60e51b815260206004820152600a60248201527f5374616c652064617461000000000000000000000000000000000000000000006044820152606401610500565b60006135706126fb83600a6146b9565b90508086600501888154811061358857613588614488565b90600052602060002001819055507f16374e3dc228b497b5a9b2dff5883c395120625fbe7e794fdcc5d305ce13ed0787826040516135d0929190918252602082015260400190565b60405180910390a150505050505050565b60008060008860006135f1613be8565b905080600801600082600101848154811061360e5761360e614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1661368f5760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b613697613be8565b6016018b815481106136ab576136ab614488565b60009182526020918290209181049091015460ff601f9092166101000a900416156137185760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e67206973207061757365640000000000000000000000000000006044820152606401610500565b613720613be8565b600c015461372c61122e565b101561377a5760405162461bcd60e51b815260206004820152601460248201527f446f6c6c617220707269636520746f6f206c6f770000000000000000000000006044820152606401610500565b6137838b613358565b858061379d5750620f4240613796613be8565b6006015410155b156137b7576137ac8b8b6124a6565b935060009250613845565b6137bf613be8565b600601546000036137ed57600093506137e66137d961251a565b6114ca8c620f4240613c43565b9250613845565b600061380c620f42406114ca613801613be8565b600601548e90613c43565b9050600061381a8c83613c37565b90506138268d836124a6565b955061384061383361251a565b6114ca83620f4240613c43565b945050505b613875620f42406114ca61386e61385a613be8565b6013018f8154811061177d5761177d614488565b8d90613c43565b9450888510156138c75760405162461bcd60e51b815260206004820152600f60248201527f446f6c6c617220736c69707061676500000000000000000000000000000000006044820152606401610500565b878411156139175760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c20736c697070616765000000000000000000000000006044820152606401610500565b868311156139675760405162461bcd60e51b815260206004820152601360248201527f476f7665726e616e636520736c697070616765000000000000000000000000006044820152606401610500565b61396f613be8565b600a018b8154811061398357613983614488565b90600052602060002001546139a18561399b8e610ed9565b90613c5b565b11156139ef5760405162461bcd60e51b815260206004820152600c60248201527f506f6f6c206365696c696e6700000000000000000000000000000000000000006044820152606401610500565b6000600b01546040517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906379cc679090604401600060405180830381600087803b158015613a6457600080fd5b505af1158015613a78573d6000803e3d6000fd5b50505050613ac8333086613a8a613be8565b6001018f81548110613a9e57613a9e614488565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16929190613e36565b6000600101546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015613b3d57600080fd5b505af1158015613b51573d6000803e3d6000fd5b50505050505096509650969350505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00613bb260017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd77614586565b1692915050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561053f565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00613bb260017f2a1c4d9e43cc908458204ba8dd637dd73ede6adc739c3209ac617ae953246cc1614586565b600061053f8284614586565b600061053f82846149ba565b600061053f82846149d1565b600061053f828461496f565b600080613c72613be8565b9050600081600101805480602002602001604051908101604052809291908181526020018280548015613cdb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311613cb0575b5050505050905060005b8151811015613d57578473ffffffffffffffffffffffffffffffffffffffff16828281518110613d1757613d17614488565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603613d4557506001949350505050565b80613d4f81614982565b915050613ce5565b506000949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613e94565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612a829085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613db4565b6000613ef6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613f899092919063ffffffff16565b9050805160001480613f17575080806020019051810190613f179190614a0c565b6107d25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610500565b60606125128484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613fbd9190614a29565b60006040518083038185875af1925050503d8060008114613ffa576040519150601f19603f3d011682016040523d82523d6000602084013e613fff565b606091505b50915091506140108783838761401b565b979650505050505050565b606083156140975782516000036140905773ffffffffffffffffffffffffffffffffffffffff85163b6140905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610500565b5081612512565b61251283838151156140ac5781518083602001fd5b8060405162461bcd60e51b81526004016105009190614a45565b60ff811681146105a657600080fd5b600080604083850312156140e857600080fd5b8235915060208301356140fa816140c6565b809150509250929050565b60006020828403121561411757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461414257600080fd5b919050565b60006020828403121561415957600080fd5b61053f8261411e565b6000806040838503121561417557600080fd5b61417e8361411e565b946020939093013593505050565b6000806040838503121561419f57600080fd5b50508035926020909101359150565b600080600080608085870312156141c457600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156141f557600080fd5b6141fe8461411e565b925061420c6020850161411e565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561426a57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614238565b50909695505050505050565b60005b83811015614291578181015183820152602001614279565b50506000910152565b600081518084526142b2816020860160208601614276565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281516020820152600060208301516101c080604085015261430d6101e085018361429a565b91506040850151614336606086018273ffffffffffffffffffffffffffffffffffffffff169052565b50606085015173ffffffffffffffffffffffffffffffffffffffff8116608086015250608085015160a085015260a085015161437660c086018215159052565b5060c085015160e08581019190915285015161010080860191909152850151610120808601919091528501516101406143b28187018315159052565b86015190506101606143c78682018315159052565b86015190506101806143dc8682018315159052565b8601516101a0868101919091529095015193019290925250919050565b60008060006060848603121561440e57600080fd5b505081359360208301359350604090920135919050565b80151581146105a657600080fd5b60008060008060008060c0878903121561444c57600080fd5b863595506020870135945060408701359350606087013592506080870135915060a087013561447a81614425565b809150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156144c957600080fd5b5051919050565b805169ffffffffffffffffffff8116811461414257600080fd5b600080600080600060a0868803121561450257600080fd5b61450b866144d0565b945060208601519350604086015192506060860151915061452e608087016144d0565b90509295509295909350565b60006020828403121561454c57600080fd5b815161053f816140c6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561052257610522614557565b600181815b808511156145f257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156145d8576145d8614557565b808516156145e557918102915b93841c939080029061459e565b509250929050565b60008261460957506001610522565b8161461657506000610522565b816001811461462c576002811461463657614652565b6001915050610522565b60ff84111561464757614647614557565b50506001821b610522565b5060208310610133831016604e8410600b8410161715614675575081810a610522565b61467f8383614599565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146b1576146b1614557565b029392505050565b600061053f83836145fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561470657600080fd5b815167ffffffffffffffff8082111561471e57600080fd5b818401915084601f83011261473257600080fd5b815181811115614744576147446146c5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561478a5761478a6146c5565b816040528281528760208487010111156147a357600080fd5b614010836020830160208801614276565b600181811c908216806147c857607f821691505b602082108103614801577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156107d257600081815260208120601f850160051c8101602086101561482e5750805b601f850160051c820191505b8181101561484d5782815560010161483a565b505050505050565b815167ffffffffffffffff81111561486f5761486f6146c5565b6148838161487d84546147b4565b84614807565b602080601f8311600181146148d657600084156148a05750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561484d565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561492357888601518255948401946001909101908401614904565b508582101561495f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561052257610522614557565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149b3576149b3614557565b5060010190565b808202811582820484141761052257610522614557565b600082614a07577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215614a1e57600080fd5b815161053f81614425565b60008251614a3b818460208701614276565b9190910192915050565b60208152600061053f602083018461429a56fea2646970667358221220343c2f151b0e944f752d8d2f199fe9c50ace488f84e16a2aba40011aaa5d745164736f6c63430008130033",
+ "nonce": "0x452",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xdd953eb1dafbdb036b436d2cd1fa8c430bfb3a4cf2effb1924a161d570ca1bda",
+ "transactionType": "CREATE",
+ "contractName": null,
+ "contractAddress": "0x12fe22572873d18764df0c999b6c998bfab247fb",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x64564",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b506104cb806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633cfffd3914610030575b600080fd5b61004361003e3660046103cf565b610045565b005b600061004f610245565b7f01ffc9a7000000000000000000000000000000000000000000000000000000006000908152600382016020526040808220805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f1f931c1c00000000000000000000000000000000000000000000000000000000845282842080548216831790557f48e2b09300000000000000000000000000000000000000000000000000000000845282842080548216831790557f7f5828d0000000000000000000000000000000000000000000000000000000008452918320805490921617905583519192506101469161029b565b6101747f2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd836000015161029b565b6101a27fd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0836000015161029b565b6101d07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a836000015161029b565b50601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556001600055565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061029460017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c61045b565b1692915050565b6102bc816102a7610306565b60008581526020919091526040902090610355565b50604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061029460017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd7761045b565b60006103778373ffffffffffffffffffffffffffffffffffffffff8416610380565b90505b92915050565b60008181526001830160205260408120546103c75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561037a565b50600061037a565b6000602082840312156103e157600080fd5b6040516020810181811067ffffffffffffffff8211171561042b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823573ffffffffffffffffffffffffffffffffffffffff8116811461045257600080fd5b81529392505050565b8181038181111561037a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205beec36dcd561f99ded7e9d8e36f3e88bb996cc370c357543136bbeec110208764736f6c63430008130033",
+ "nonce": "0x453",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionType": "CREATE",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": [
+ "(0xefC0e701A824943b469a694aC564Aa1efF7Ab7dd, 0x12fe22572873D18764Df0c999b6C998bFAB247FB, 0x3cfffd39000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd)",
+ "[(0xe17a61e55CCBc3D1E56B6A26eA1d4F8382a40AD9, 0, [0x248a9ca300000000000000000000000000000000000000000000000000000000, 0x2f2ff15d00000000000000000000000000000000000000000000000000000000, 0x91d1485400000000000000000000000000000000000000000000000000000000, 0x8456cb5900000000000000000000000000000000000000000000000000000000, 0x5c975abb00000000000000000000000000000000000000000000000000000000, 0x8bb9c5bf00000000000000000000000000000000000000000000000000000000, 0xd547741f00000000000000000000000000000000000000000000000000000000, 0x1e4e009100000000000000000000000000000000000000000000000000000000, 0x3f4ba83a00000000000000000000000000000000000000000000000000000000]), (0xd3C81BD07948a38546bCa894f8bfecB552613798, 0, [0x1f931c1c00000000000000000000000000000000000000000000000000000000]), (0xD11B60c336A8416162272475Ff9dF572E516fc51, 0, [0xcdffacc600000000000000000000000000000000000000000000000000000000, 0x52ef6b2c00000000000000000000000000000000000000000000000000000000, 0xadfca15e00000000000000000000000000000000000000000000000000000000, 0x7a0ed62700000000000000000000000000000000000000000000000000000000, 0x01ffc9a700000000000000000000000000000000000000000000000000000000]), (0x0E9f3299B9443d3D5130771f26B7E18a2a7aa9Db, 0, [0x1a47c90400000000000000000000000000000000000000000000000000000000, 0x421e108c00000000000000000000000000000000000000000000000000000000, 0x91df16d300000000000000000000000000000000000000000000000000000000, 0xb0bd67b400000000000000000000000000000000000000000000000000000000, 0x8b38ebb300000000000000000000000000000000000000000000000000000000, 0xebef28a700000000000000000000000000000000000000000000000000000000, 0x017df32700000000000000000000000000000000000000000000000000000000, 0xfbff3a4100000000000000000000000000000000000000000000000000000000, 0xe0ee685500000000000000000000000000000000000000000000000000000000, 0xbc3ea01800000000000000000000000000000000000000000000000000000000, 0xa9b8b79600000000000000000000000000000000000000000000000000000000, 0x214f788200000000000000000000000000000000000000000000000000000000, 0xb42165d000000000000000000000000000000000000000000000000000000000, 0x221e2e6000000000000000000000000000000000000000000000000000000000, 0x33c5aa5700000000000000000000000000000000000000000000000000000000, 0xc0030add00000000000000000000000000000000000000000000000000000000, 0xdd390ea000000000000000000000000000000000000000000000000000000000, 0xba2d8cdd00000000000000000000000000000000000000000000000000000000, 0x93e4e9ee00000000000000000000000000000000000000000000000000000000, 0x1a867af500000000000000000000000000000000000000000000000000000000, 0xf986cd5700000000000000000000000000000000000000000000000000000000, 0xf6f172cb00000000000000000000000000000000000000000000000000000000, 0x15f9739800000000000000000000000000000000000000000000000000000000, 0xe2d443bd00000000000000000000000000000000000000000000000000000000, 0x016afee700000000000000000000000000000000000000000000000000000000, 0xbe1d86e100000000000000000000000000000000000000000000000000000000, 0x9232461100000000000000000000000000000000000000000000000000000000, 0x1f7e8c7e00000000000000000000000000000000000000000000000000000000, 0x1c1f8aa300000000000000000000000000000000000000000000000000000000, 0x0083faee00000000000000000000000000000000000000000000000000000000, 0x147f1b9600000000000000000000000000000000000000000000000000000000, 0x6605bfda00000000000000000000000000000000000000000000000000000000, 0x826d5b8b00000000000000000000000000000000000000000000000000000000, 0xd3815fb900000000000000000000000000000000000000000000000000000000, 0x965cc7ac00000000000000000000000000000000000000000000000000000000, 0x3535f48b00000000000000000000000000000000000000000000000000000000, 0xad3401ed00000000000000000000000000000000000000000000000000000000, 0x36c3df2400000000000000000000000000000000000000000000000000000000, 0xc5f956af00000000000000000000000000000000000000000000000000000000, 0x8fe6368300000000000000000000000000000000000000000000000000000000, 0xe8b7342400000000000000000000000000000000000000000000000000000000]), (0x58860E93B6FC7A6e4aBD0F5d851A88654a34d0c0, 0, [0x8da5cb5b00000000000000000000000000000000000000000000000000000000, 0xf2fde38b00000000000000000000000000000000000000000000000000000000]), (0xb64f2347752192F51930Ad6Ad3bEa0B3A2074fAC, 0, [0x2ed4d2d600000000000000000000000000000000000000000000000000000000, 0x7efc918f00000000000000000000000000000000000000000000000000000000, 0x81f1746700000000000000000000000000000000000000000000000000000000, 0x9aae55a700000000000000000000000000000000000000000000000000000000, 0x82ae27cd00000000000000000000000000000000000000000000000000000000, 0xb4eae1cb00000000000000000000000000000000000000000000000000000000, 0x9c49437300000000000000000000000000000000000000000000000000000000, 0x9d202bf800000000000000000000000000000000000000000000000000000000, 0x9b52b9a800000000000000000000000000000000000000000000000000000000, 0x17b2bffa00000000000000000000000000000000000000000000000000000000, 0x87dcd5fb00000000000000000000000000000000000000000000000000000000, 0x5b0bdd8a00000000000000000000000000000000000000000000000000000000, 0x92beb04200000000000000000000000000000000000000000000000000000000, 0x245cd97300000000000000000000000000000000000000000000000000000000, 0x2287fe4000000000000000000000000000000000000000000000000000000000, 0xc4cb35cf00000000000000000000000000000000000000000000000000000000, 0xedecef9500000000000000000000000000000000000000000000000000000000, 0x7e625a5500000000000000000000000000000000000000000000000000000000, 0x30bbe58500000000000000000000000000000000000000000000000000000000, 0xde858d7c00000000000000000000000000000000000000000000000000000000, 0x6060663e00000000000000000000000000000000000000000000000000000000, 0xa14d1f7800000000000000000000000000000000000000000000000000000000, 0xcec10c1100000000000000000000000000000000000000000000000000000000, 0x9b94607c00000000000000000000000000000000000000000000000000000000, 0xecfd1a9e00000000000000000000000000000000000000000000000000000000, 0x7853c88800000000000000000000000000000000000000000000000000000000, 0xcbd4e7b400000000000000000000000000000000000000000000000000000000, 0x8106016300000000000000000000000000000000000000000000000000000000, 0xb98c9fe600000000000000000000000000000000000000000000000000000000, 0xaeaf4f0400000000000000000000000000000000000000000000000000000000, 0x040da68500000000000000000000000000000000000000000000000000000000, 0xedc8d27d00000000000000000000000000000000000000000000000000000000])]"
+ ],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x48e7e0",
+ "value": "0x0",
+ "input": "0x60806040523480156200001157600080fd5b506040516200182f3803806200182f8339810160408190526200003491620011f2565b8151620000419062000064565b6200005c8183602001518460400151620000c660201b60201c565b505062001568565b60006200007062000321565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b8351811015620002d2576000848281518110620000ea57620000ea6200130a565b6020026020010151602001519050600060028111156200010e576200010e62001320565b81600281111562000123576200012362001320565b0362000181576200017b8583815181106200014257620001426200130a565b6020026020010151600001518684815181106200016357620001636200130a565b6020026020010151604001516200035b60201b60201c565b620002bc565b600181600281111562000198576200019862001320565b03620001f0576200017b858381518110620001b757620001b76200130a565b602002602001015160000151868481518110620001d857620001d86200130a565b602002602001015160400151620005e660201b60201c565b600281600281111562000207576200020762001320565b036200025f576200017b8583815181106200022657620002266200130a565b6020026020010151600001518684815181106200024757620002476200130a565b6020026020010151604001516200087c60201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620002c9816200134c565b915050620000c9565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003089392919062001396565b60405180910390a16200031c8282620009e0565b505050565b60008060ff196200035460017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6200149d565b1692915050565b6000815111620003b15760405162461bcd60e51b815260206004820152602b60248201526000805160206200180f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002b3565b6000620003bd62000321565b90506001600160a01b0383166200041b5760405162461bcd60e51b815260206004820152602c6024820152600080516020620017cb83398151915260448201526b65206164647265737328302960a01b6064820152608401620002b3565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003620004545762000454828562000ab2565b60005b8351811015620005df5760008482815181106200047857620004786200130a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005205760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620002b3565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583620005c481620014b9565b94505050508080620005d6906200134c565b91505062000457565b5050505050565b60008151116200063c5760405162461bcd60e51b815260206004820152602b60248201526000805160206200180f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002b3565b60006200064862000321565b90506001600160a01b038316620006a65760405162461bcd60e51b815260206004820152602c6024820152600080516020620017cb83398151915260448201526b65206164647265737328302960a01b6064820152608401620002b3565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003620006df57620006df828562000ab2565b60005b8351811015620005df5760008482815181106200070357620007036200130a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103620007b05760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401620002b3565b620007bd85828462000b1f565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200086181620014b9565b9450505050808062000873906200134c565b915050620006e2565b6000815111620008d25760405162461bcd60e51b815260206004820152602b60248201526000805160206200180f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002b3565b6000620008de62000321565b90506001600160a01b038316156200095f5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620002b3565b60005b8251811015620009da5760008382815181106200098357620009836200130a565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b0316620009c284828462000b1f565b50508080620009d1906200134c565b91505062000962565b50505050565b6001600160a01b038216620009f3575050565b62000a1882604051806060016040528060288152602001620017a36028913962000f79565b600080836001600160a01b03168360405162000a359190620014ea565b600060405180830381855af49150503d806000811462000a72576040519150601f19603f3d011682016040523d82523d6000602084013e62000a77565b606091505b509150915081620009da5780511562000a935780518082602001fd5b838360405163192105d760e01b8152600401620002b392919062001508565b62000ad781604051806060016040528060248152602001620017eb6024913962000f79565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000b9d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620002b3565b63381b38f960e21b6001600160e01b031982160162000c175760405162461bcd60e51b815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f7665206469616d60448201526e37b73221baba10333ab731ba34b7b760891b6064820152608401620002b3565b306001600160a01b0383160362000c885760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620002b3565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000cd9916200149d565b905080821462000dd2576001600160a01b0384166000908152600186016020526040812080548390811062000d125762000d126200130a565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000d665762000d666200130a565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000dfe5762000dfe62001536565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003620005df57600285015460009062000e64906001906200149d565b6001600160a01b038616600090815260018089016020526040909120015490915080821462000f1a57600087600201838154811062000ea75762000ea76200130a565b6000918252602090912001546002890180546001600160a01b03909216925082918490811062000edb5762000edb6200130a565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b8660020180548062000f305762000f3062001536565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b8181620009da5760405162461bcd60e51b8152600401620002b391906200154c565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171562000fd85762000fd862000f9d565b60405290565b604051601f8201601f191681016001600160401b038111828210171562001009576200100962000f9d565b604052919050565b80516001600160a01b03811681146200102957600080fd5b919050565b60005b838110156200104b57818101518382015260200162001031565b50506000910152565b60006001600160401b0382111562001070576200107062000f9d565b5060051b60200190565b600082601f8301126200108c57600080fd5b81516020620010a56200109f8362001054565b62000fde565b828152600592831b8501820192828201919087851115620010c557600080fd5b8387015b85811015620011e55780516001600160401b0380821115620010eb5760008081fd5b908901906060828c03601f1901811315620011065760008081fd5b6200111062000fb3565b6200111d89850162001011565b815260408085015160038110620011345760008081fd5b828b01529184015191838311156200114c5760008081fd5b82850194508d603f8601126200116457600093508384fd5b898501519350620011796200109f8562001054565b84815293871b85018101938a810193508e851115620011985760008081fd5b948101945b84861015620011d05785516001600160e01b031981168114620011c05760008081fd5b8452948a0194928a01926200119d565b908201528752505050928401928401620010c9565b5090979650505050505050565b600080604083850312156200120657600080fd5b82516001600160401b03808211156200121e57600080fd5b90840190606082870312156200123357600080fd5b6200123d62000fb3565b620012488362001011565b815260206200125981850162001011565b818301526040840151838111156200127057600080fd5b80850194505087601f8501126200128657600080fd5b8351838111156200129b576200129b62000f9d565b620012af601f8201601f1916830162000fde565b8181528983838801011115620012c457600080fd5b620012d5828483018589016200102e565b604084015250860151909450915080821115620012f157600080fd5b5062001300858286016200107a565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162001361576200136162001336565b5060010190565b60008151808452620013828160208601602086016200102e565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200146b57898403607f19018652815180516001600160a01b031685528381015189860190600381106200140757634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620014555783516001600160e01b031916825292860192600192909201919086019062001429565b50978501979550505090820190600101620013bf565b50506001600160a01b038a169088015286810360408801526200148f818962001368565b9a9950505050505050505050565b81810381811115620014b357620014b362001336565b92915050565b60006001600160601b038281166002600160601b03198101620014e057620014e062001336565b6001019392505050565b60008251620014fe8184602087016200102e565b9190910192915050565b6001600160a01b03831681526040602082018190526000906200152e9083018462001368565b949350505050565b634e487b7160e01b600052603160045260246000fd5b60208152600062001561602083018462001368565b9392505050565b61022b80620015786000396000f3fe60806040526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061005360017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6101b5565b600080357fffffffff000000000000000000000000000000000000000000000000000000001681529116602081905260409091205490925082915073ffffffffffffffffffffffffffffffffffffffff166004361015610114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4469616d6f6e643a2053656c6563746f7220697320746f6f2073686f7274000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161010b565b3660008037600080366000845af43d6000803e8080156101b0573d6000f35b3d6000fd5b818103818111156101ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220f85fc07f2d35b24eaa0af26d3fd7ec2932df0ab65906b6f77e8f44c46edd70c564736f6c634300081300334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000012fe22572873d18764df0c999b6c998bfab247fb000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243cfffd39000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000a80000000000000000000000000e17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000091d14854000000000000000000000000000000000000000000000000000000008456cb59000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000008bb9c5bf00000000000000000000000000000000000000000000000000000000d547741f000000000000000000000000000000000000000000000000000000001e4e0091000000000000000000000000000000000000000000000000000000003f4ba83a00000000000000000000000000000000000000000000000000000000000000000000000000000000d3c81bd07948a38546bca894f8bfecb5526137980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000d11b60c336a8416162272475ff9df572e516fc51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000e9f3299b9443d3d5130771f26b7e18a2a7aa9db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000291a47c90400000000000000000000000000000000000000000000000000000000421e108c0000000000000000000000000000000000000000000000000000000091df16d300000000000000000000000000000000000000000000000000000000b0bd67b4000000000000000000000000000000000000000000000000000000008b38ebb300000000000000000000000000000000000000000000000000000000ebef28a700000000000000000000000000000000000000000000000000000000017df32700000000000000000000000000000000000000000000000000000000fbff3a4100000000000000000000000000000000000000000000000000000000e0ee685500000000000000000000000000000000000000000000000000000000bc3ea01800000000000000000000000000000000000000000000000000000000a9b8b79600000000000000000000000000000000000000000000000000000000214f788200000000000000000000000000000000000000000000000000000000b42165d000000000000000000000000000000000000000000000000000000000221e2e600000000000000000000000000000000000000000000000000000000033c5aa5700000000000000000000000000000000000000000000000000000000c0030add00000000000000000000000000000000000000000000000000000000dd390ea000000000000000000000000000000000000000000000000000000000ba2d8cdd0000000000000000000000000000000000000000000000000000000093e4e9ee000000000000000000000000000000000000000000000000000000001a867af500000000000000000000000000000000000000000000000000000000f986cd5700000000000000000000000000000000000000000000000000000000f6f172cb0000000000000000000000000000000000000000000000000000000015f9739800000000000000000000000000000000000000000000000000000000e2d443bd00000000000000000000000000000000000000000000000000000000016afee700000000000000000000000000000000000000000000000000000000be1d86e10000000000000000000000000000000000000000000000000000000092324611000000000000000000000000000000000000000000000000000000001f7e8c7e000000000000000000000000000000000000000000000000000000001c1f8aa3000000000000000000000000000000000000000000000000000000000083faee00000000000000000000000000000000000000000000000000000000147f1b96000000000000000000000000000000000000000000000000000000006605bfda00000000000000000000000000000000000000000000000000000000826d5b8b00000000000000000000000000000000000000000000000000000000d3815fb900000000000000000000000000000000000000000000000000000000965cc7ac000000000000000000000000000000000000000000000000000000003535f48b00000000000000000000000000000000000000000000000000000000ad3401ed0000000000000000000000000000000000000000000000000000000036c3df2400000000000000000000000000000000000000000000000000000000c5f956af000000000000000000000000000000000000000000000000000000008fe6368300000000000000000000000000000000000000000000000000000000e8b734240000000000000000000000000000000000000000000000000000000000000000000000000000000058860e93b6fc7a6e4abd0f5d851a88654a34d0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b64f2347752192f51930ad6ad3bea0b3a2074fac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000202ed4d2d6000000000000000000000000000000000000000000000000000000007efc918f0000000000000000000000000000000000000000000000000000000081f17467000000000000000000000000000000000000000000000000000000009aae55a70000000000000000000000000000000000000000000000000000000082ae27cd00000000000000000000000000000000000000000000000000000000b4eae1cb000000000000000000000000000000000000000000000000000000009c494373000000000000000000000000000000000000000000000000000000009d202bf8000000000000000000000000000000000000000000000000000000009b52b9a80000000000000000000000000000000000000000000000000000000017b2bffa0000000000000000000000000000000000000000000000000000000087dcd5fb000000000000000000000000000000000000000000000000000000005b0bdd8a0000000000000000000000000000000000000000000000000000000092beb04200000000000000000000000000000000000000000000000000000000245cd973000000000000000000000000000000000000000000000000000000002287fe4000000000000000000000000000000000000000000000000000000000c4cb35cf00000000000000000000000000000000000000000000000000000000edecef95000000000000000000000000000000000000000000000000000000007e625a550000000000000000000000000000000000000000000000000000000030bbe58500000000000000000000000000000000000000000000000000000000de858d7c000000000000000000000000000000000000000000000000000000006060663e00000000000000000000000000000000000000000000000000000000a14d1f7800000000000000000000000000000000000000000000000000000000cec10c11000000000000000000000000000000000000000000000000000000009b94607c00000000000000000000000000000000000000000000000000000000ecfd1a9e000000000000000000000000000000000000000000000000000000007853c88800000000000000000000000000000000000000000000000000000000cbd4e7b4000000000000000000000000000000000000000000000000000000008106016300000000000000000000000000000000000000000000000000000000b98c9fe600000000000000000000000000000000000000000000000000000000aeaf4f0400000000000000000000000000000000000000000000000000000000040da68500000000000000000000000000000000000000000000000000000000edc8d27d00000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x454",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x56be8eb80be13dc0436d0c942e8acc83862b112bfb0731b42ca6bf120054001b",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1c559",
+ "value": "0x0",
+ "input": "0x2f2ff15d2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x455",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xacff54d7f5e37e2dfc5f3571b049b739d854cd8e794a2f800970c1f6fb9887df",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1c559",
+ "value": "0x0",
+ "input": "0x2f2ff15dd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x456",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x8b7c0241c36b5eeb6e8efd2045c7d973d8998316e13ba3fc7dc99b78d3b8ec34",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x9a1fb",
+ "value": "0x0",
+ "input": "0x7efc918f0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021e19e0c9bab2400000",
+ "nonce": "0x457",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xdb5488814de8a7f72a3170b7ef2a05b9a86ef6337764913dd43a3b6a53b7c4ab",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1340b",
+ "value": "0x0",
+ "input": "0xaeaf4f040000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x458",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xcc2d6206a1dc7ec167dbc0f8f1f8f99432e5ce40055fc5ab11c4a471f4369a5f",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0xe44d",
+ "value": "0x0",
+ "input": "0xcec10c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x459",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x38f11c495a9932f57aededd4600e0814cbe503bae2fd2e9131ea2d462001a35c",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x12b51",
+ "value": "0x0",
+ "input": "0xcbd4e7b40000000000000000000000000000000000000000000000000000000000000002",
+ "nonce": "0x45a",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x243bebc21d94c75a0535bbd107b62ecf1f1cd3ebf01a97b5fb7ce59b5980a21d",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x19477",
+ "value": "0x0",
+ "input": "0x7853c88800000000000000000000000000000000000000000000000000000000000f695000000000000000000000000000000000000000000000000000000000000f1b30",
+ "nonce": "0x45b",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xe786a6732987d10d4b0575a99b6246d6d86992c84eefc876fa3a4b61cfb1213c",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x12bbc",
+ "value": "0x0",
+ "input": "0x6060663e00000000000000000000000000000000000000000000000000000000000e7ef0",
+ "nonce": "0x45c",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x30db3b6f8445902510a739692dd04d981f8d860a5f1f8654e65371aee14d9114",
+ "transactionType": "CREATE",
+ "contractName": "UbiquityDollarToken",
+ "contractAddress": "0x7745a062c0a8aaefaa7e7df1e1aabbbafc988972",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x3e01d7",
+ "value": "0x0",
+ "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000030565b6200002a62000030565b620000f1565b600054610100900460ff16156200009d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ef576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161375962000129600039600081816106c70152818161076201528181610bc501528181610c5b0152610d8a01526137596000f3fe6080604052600436106101c25760003560e01c80635c975abb116100f7578063a457c2d711610095578063d0ebdbe711610064578063d0ebdbe714610512578063d500958414610532578063d505accf1461055e578063dd62ed3e1461057e57600080fd5b8063a457c2d714610492578063a9059cbb146104b2578063b84c8246146104d2578063c4d66de8146104f257600080fd5b80637ecebe00116100d15780637ecebe00146104205780638456cb591461044057806384b0196e1461045557806395d89b411461047d57600080fd5b80635c975abb146103a457806370a08231146103bd57806379cc67901461040057600080fd5b80633659cfe61161016457806340c10f191161013e57806340c10f191461033c57806342966c681461035c5780634f1ef2861461037c57806352d1902d1461038f57600080fd5b80633659cfe6146102e557806339509351146103075780633f4ba83a1461032757600080fd5b806318160ddd116101a057806318160ddd1461027557806323b872dd14610294578063313ce567146102b45780633644e515146102d057600080fd5b806306fdde03146101c7578063095ea7b3146101f257806313007d5514610222575b600080fd5b3480156101d357600080fd5b506101dc6105d1565b6040516101e991906130de565b60405180910390f35b3480156101fe57600080fd5b5061021261020d36600461311a565b610663565b60405190151581526020016101e9565b34801561022e57600080fd5b50610195546102509073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e9565b34801561028157600080fd5b506099545b6040519081526020016101e9565b3480156102a057600080fd5b506102126102af366004613144565b61067d565b3480156102c057600080fd5b50604051601281526020016101e9565b3480156102dc57600080fd5b506102866106a1565b3480156102f157600080fd5b50610305610300366004613180565b6106b0565b005b34801561031357600080fd5b5061021261032236600461311a565b610886565b34801561033357600080fd5b506103056108d2565b34801561034857600080fd5b5061030561035736600461311a565b6109e1565b34801561036857600080fd5b5061030561037736600461319b565b610b64565b61030561038a366004613277565b610bae565b34801561039b57600080fd5b50610286610d70565b3480156103b057600080fd5b506101305460ff16610212565b3480156103c957600080fd5b506102866103d8366004613180565b73ffffffffffffffffffffffffffffffffffffffff1660009081526097602052604090205490565b34801561040c57600080fd5b5061030561041b36600461311a565b610e42565b34801561042c57600080fd5b5061028661043b366004613180565b610fc8565b34801561044c57600080fd5b50610305610ff3565b34801561046157600080fd5b5061046a611100565b6040516101e997969594939291906132d9565b34801561048957600080fd5b506101dc6111c2565b34801561049e57600080fd5b506102126104ad36600461311a565b6111d2565b3480156104be57600080fd5b506102126104cd36600461311a565b611289565b3480156104de57600080fd5b506103056104ed366004613398565b611297565b3480156104fe57600080fd5b5061030561050d366004613180565b61138a565b34801561051e57600080fd5b5061030561052d366004613180565b61156f565b34801561053e57600080fd5b506101955473ffffffffffffffffffffffffffffffffffffffff16610250565b34801561056a57600080fd5b506103056105793660046133e1565b61169d565b34801561058a57600080fd5b50610286610599366004613454565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260986020908152604080832093909416825291909152205490565b6060609a80546105e090613487565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90613487565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b600033610671818585611828565b60019150505b92915050565b60003361068b8582856119a7565b610696858585611a64565b506001949350505050565b60006106ab611a7c565b905090565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036107605760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107d57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461085e5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610757565b61086781611a86565b6040805160008082526020820190925261088391839190611b6c565b50565b33600081815260986020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067190829086906108cd9087906134d4565b611828565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061350e565b6109d75760405162461bcd60e51b815260206004820152601960248201527f455243323055626971756974793a206e6f7420706175736572000000000000006044820152606401610757565b6109df611d37565b565b6101955473ffffffffffffffffffffffffffffffffffffffff166391d148547f2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab5919061350e565b610b015760405162461bcd60e51b815260206004820152601860248201527f446f6c6c617220746f6b656e3a206e6f74206d696e74657200000000000000006044820152606401610757565b610b09611db5565b610b138282611e09565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb1233017d63154bc561d57c16f7b6a55e2e1acd7fcac94045a9f35fb31a850ca9060200160405180910390a35050565b610b6c611db5565b610b763382611ef0565b60405181815233907f62626c8ae1f1f3ad3b2f42ba7b806bbc48e9a59dab06414984113eaab612fe479060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610c595760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610757565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cce7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610757565b610d6082611a86565b610d6c82826001611b6c565b5050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e1d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610757565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6101955473ffffffffffffffffffffffffffffffffffffffff166391d148547fd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f16919061350e565b610f625760405162461bcd60e51b815260206004820152601860248201527f446f6c6c617220746f6b656e3a206e6f74206275726e657200000000000000006044820152606401610757565b610f6a611db5565b610f748282611ef0565b8173ffffffffffffffffffffffffffffffffffffffff167f62626c8ae1f1f3ad3b2f42ba7b806bbc48e9a59dab06414984113eaab612fe4782604051610fbc91815260200190565b60405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260fd6020526040812054610677565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac919061350e565b6110f85760405162461bcd60e51b815260206004820152601960248201527f455243323055626971756974793a206e6f7420706175736572000000000000006044820152606401610757565b6109df61208e565b60006060806000806000606060c9546000801b148015611120575060ca54155b61116c5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610757565b6111746120ea565b61117c6120f9565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606061019480546105e090613487565b33600081815260986020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561127c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610757565b6106968286868403611828565b600033610671818585611a64565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081526000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611331919061350e565b61137d5760405162461bcd60e51b815260206004820152601860248201527f455243323055626971756974793a206e6f742061646d696e00000000000000006044820152606401610757565b610194610d6c828261357e565b600054610100900460ff16158080156113aa5750600054600160ff909116105b806113c45750303b1580156113c4575060005460ff166001145b6114365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610757565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561149457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611509826040518060400160405280600f81526020017f556269717569747920446f6c6c617200000000000000000000000000000000008152506040518060400160405280600381526020017f7541440000000000000000000000000000000000000000000000000000000000815250612108565b8015610d6c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081526000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611609919061350e565b6116555760405162461bcd60e51b815260206004820152601860248201527f455243323055626971756974793a206e6f742061646d696e00000000000000006044820152606401610757565b61019580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b834211156116ed5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610757565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861171c8c6121b2565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611784826121e7565b905060006117948287878761222f565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118115760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610757565b61181c8a8a8a611828565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166118b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff82166119395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152609860209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a5e5781811015611a515760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610757565b611a5e8484848403611828565b50505050565b611a6c611db5565b611a77838383612259565b505050565b60006106ab61248c565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081526000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b20919061350e565b6108835760405162461bcd60e51b815260206004820152601860248201527f455243323055626971756974793a206e6f742061646d696e00000000000000006044820152606401610757565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b9f57611a7783612500565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c24575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c2191810190613698565b60015b611c965760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610757565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d2b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610757565b50611a778383836125f0565b611d3f612615565b61013080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6101305460ff16156109df5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff8216611e6c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610757565b611e7860008383612668565b8060996000828254611e8a91906134d4565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611f795760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610757565b611f8582600083612668565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260976020526040902054818110156120215760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b612096611db5565b61013080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d8b3390565b606060cb80546105e090613487565b606060cc80546105e090613487565b600054610100900460ff166121855760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b61218f8282612673565b612198826126fa565b6121a06127b6565b6121a861283b565b611a7783826128b8565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260fd602052604090208054600181018255905b50919050565b60006106776121f4611a7c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006122408787878761298c565b9150915061224d81612a7b565b5090505b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83166122e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff821661236b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610757565b612376838383612668565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260976020526040902054818110156124125760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061247f9086815260200190565b60405180910390a3611a5e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6124b7612be0565b6124bf612c39565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff81163b61258a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610757565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6125f983612c6a565b6000825111806126065750805b15611a7757611a5e8383612cb7565b6101305460ff166109df5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610757565b611a77838383612ce3565b600054610100900460ff166126f05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b610d6c8282612d5d565b600054610100900460ff166127775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b610883816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612df3565b600054610100900460ff166128335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b6109df612e98565b600054610100900460ff166109df5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b600054610100900460ff166129355760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b610194612942828261357e565b505061019580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156129c35750600090506003612a72565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a17573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612a6b57600060019250925050612a72565b9150600090505b94509492505050565b6000816004811115612a8f57612a8f6136b1565b03612a975750565b6001816004811115612aab57612aab6136b1565b03612af85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610757565b6002816004811115612b0c57612b0c6136b1565b03612b595760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610757565b6003816004811115612b6d57612b6d6136b1565b036108835760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610757565b600080612beb6120ea565b805190915015612c02578051602090910120919050565b60c9548015612c115792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612c446120f9565b805190915015612c5b578051602090910120919050565b60ca548015612c115792915050565b612c7381612500565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612cdc83836040518060600160405280602781526020016136fd60279139612f40565b9392505050565b6101305460ff1615611a775760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e7366657220776860448201527f696c6520706175736564000000000000000000000000000000000000000000006064820152608401610757565b600054610100900460ff16612dda5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b609a612de6838261357e565b50609b611a77828261357e565b600054610100900460ff16612e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b60cb612e7c838261357e565b5060cc612e89828261357e565b5050600060c981905560ca5550565b600054610100900460ff16612f155760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b61013080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612f6a91906136e0565b600060405180830381855af49150503d8060008114612fa5576040519150601f19603f3d011682016040523d82523d6000602084013e612faa565b606091505b5091509150612fbb86838387612fc5565b9695505050505050565b6060831561304157825160000361303a5773ffffffffffffffffffffffffffffffffffffffff85163b61303a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610757565b5081612251565b61225183838151156130565781518083602001fd5b8060405162461bcd60e51b815260040161075791906130de565b60005b8381101561308b578181015183820152602001613073565b50506000910152565b600081518084526130ac816020860160208601613070565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612cdc6020830184613094565b803573ffffffffffffffffffffffffffffffffffffffff8116811461311557600080fd5b919050565b6000806040838503121561312d57600080fd5b613136836130f1565b946020939093013593505050565b60008060006060848603121561315957600080fd5b613162846130f1565b9250613170602085016130f1565b9150604084013590509250925092565b60006020828403121561319257600080fd5b612cdc826130f1565b6000602082840312156131ad57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156131fe576131fe6131b4565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613244576132446131b4565b8160405280935085815286868601111561325d57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561328a57600080fd5b613293836130f1565b9150602083013567ffffffffffffffff8111156132af57600080fd5b8301601f810185136132c057600080fd5b6132cf858235602084016131e3565b9150509250929050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261331560e084018a613094565b8381036040850152613327818a613094565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156133865783518352928401929184019160010161336a565b50909c9b505050505050505050505050565b6000602082840312156133aa57600080fd5b813567ffffffffffffffff8111156133c157600080fd5b8201601f810184136133d257600080fd5b612251848235602084016131e3565b600080600080600080600060e0888a0312156133fc57600080fd5b613405886130f1565b9650613413602089016130f1565b95506040880135945060608801359350608088013560ff8116811461343757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561346757600080fd5b613470836130f1565b915061347e602084016130f1565b90509250929050565b600181811c9082168061349b57607f821691505b6020821081036121e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80820180821115610677577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561352057600080fd5b81518015158114612cdc57600080fd5b601f821115611a7757600081815260208120601f850160051c810160208610156135575750805b601f850160051c820191505b8181101561357657828155600101613563565b505050505050565b815167ffffffffffffffff811115613598576135986131b4565b6135ac816135a68454613487565b84613530565b602080601f8311600181146135ff57600084156135c95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613576565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561364c5788860151825594840194600190910190840161362d565b508582101561368857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156136aa57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082516136f2818460208701613070565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220970bd42e1159915b240b28bcccb023ae91e7d46acca8554bfa2f84542540823164736f6c63430008130033",
+ "nonce": "0x45d",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionType": "CREATE",
+ "contractName": "ERC1967Proxy",
+ "contractAddress": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "function": null,
+ "arguments": ["0x7745A062C0A8aAEFAA7E7DF1e1AAbBBAfc988972", "0xc4d66de8000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa"],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x616bc",
+ "value": "0x0",
+ "input": "0x60806040526040516104ee3803806104ee833981016040819052610022916102de565b61002e82826000610035565b50506103fb565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104c760279139610180565b9392505050565b6001600160a01b0381163b61013f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019d91906103ac565b600060405180830381855af49150503d80600081146101d8576040519150601f19603f3d011682016040523d82523d6000602084013e6101dd565b606091505b5090925090506101ef868383876101f9565b9695505050505050565b60608315610268578251600003610261576001600160a01b0385163b6102615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610136565b5081610272565b610272838361027a565b949350505050565b81511561028a5781518083602001fd5b8060405162461bcd60e51b815260040161013691906103c8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102d55781810151838201526020016102bd565b50506000910152565b600080604083850312156102f157600080fd5b82516001600160a01b038116811461030857600080fd5b60208401519092506001600160401b038082111561032557600080fd5b818501915085601f83011261033957600080fd5b81518181111561034b5761034b6102a4565b604051601f8201601f19908116603f01168101908382118183101715610373576103736102a4565b8160405282815288602084870101111561038c57600080fd5b61039d8360208301602088016102ba565b80955050505050509250929050565b600082516103be8184602087016102ba565b9190910192915050565b60208152600082518060208401526103e78160408501602087016102ba565b601f01601f19169190910160400192915050565b60be806104096000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6065565b565b600060607f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156083573d6000f35b3d6000fdfea264697066735822122057026e6ac0ea6508fb970bc3e341e4a42a730a9f9143add21b32331d6561376b64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007745a062c0a8aaefaa7e7df1e1aabbbafc98897200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa00000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x45e",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xed36cfc26960d8bd74f7a170b6a0d3f9178b2e762438316637abb545ff659b7c",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x115a9",
+ "value": "0x0",
+ "input": "0xf986cd57000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "nonce": "0x45f",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionType": "CALL",
+ "contractName": "ERC1967Proxy",
+ "contractAddress": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "gas": "0x1e730",
+ "value": "0x0",
+ "input": "0x40c10f19000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000054b40b1f852bda00000",
+ "nonce": "0x460",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xdd23c73480e78a237032683322420b848b34320b6322ae37a01e94f6d6024fa5",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x17ba7",
+ "value": "0x0",
+ "input": "0xde858d7c0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba00000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "nonce": "0x461",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x1ba1babc2b61397f3e23f7006a6e030a0bd9293a1c34325a43f93d4529b66f61",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x17270",
+ "value": "0x0",
+ "input": "0xedc8d27d0000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x462",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x8aaf682c47063531c0721ffca52534f5fbaf1e640febe3df6f65ad64683c4f84",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1965d",
+ "value": "0x0",
+ "input": "0x810601630000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "nonce": "0x463",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionType": "CALL",
+ "contractName": null,
+ "contractAddress": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "function": "deploy_plain_pool(string,string,address[],uint256,uint256,uint256,uint256,uint256,uint8[],bytes4[],address[])",
+ "arguments": [
+ "\"LUSD/Dollar\"",
+ "\"LUSDDollar\"",
+ "[0x5f98805A4E8be255a32880FDeC7F6728C6568bA0, 0xb6919Ef2ee4aFC163BC954C5678e2BB570c2D103]",
+ "100",
+ "4000000",
+ "20000000000",
+ "2597",
+ "0",
+ "[0, 0]",
+ "[0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000]",
+ "[0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000]"
+ ],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "gas": "0x77a842",
+ "value": "0x0",
+ "input": "0x5bcd3d83000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000003d090000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000000000000a250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000b4c5553442f446f6c6c6172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4c555344446f6c6c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d103000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x464",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [
+ {
+ "transactionType": "CREATE",
+ "address": "0xcc68509f9ca0e1ed119eac7c468ec1b1c42f384f",
+ "initCode": "0x615c335150346109c2576020615ddc5f395f516020602082615ddc015f395f51116109c2576020602082615ddc015f395f51018082615ddc0160803950506020615dfc5f395f51600a602082615ddc015f395f51116109c2576020602082615ddc015f395f51018082615ddc0160c03950506020615e9c5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c25780156100d857905b60208160051b6020860101615ddc015f395f518060a01c6109c2578160051b61012001526001018181186100a9575b5050806101005250506020615ebc5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f5160208160051b018083615ddc01610220395050506020615edc5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c257801561018257905b60208160051b6020860101615ddc015f395f518060081c6109c2578160051b6103600152600101818118610153575b5050806103405250506020615efc5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c25780156101f257905b60208160051b6020860101615ddc015f395f518060201b6109c2578160051b61048001526001018181186101c3575b5050806104605250506020615f1c5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c257801561026257905b60208160051b6020860101615ddc015f395f518060a01c6109c2578160051b6105a00152600101818118610233575b5050806105805250506101005160208160051b015f81601f0160051c600981116109c25780156102ae57905b8060051b61010001518160051b6060016153f3015260010181811861028e575b505050506103405160208160051b015f81601f0160051c600981116109c25780156102f657905b8060051b61034001518160051b610180016153f301526001018181186102d5575b505050505f6106a0525f61557351600881116109c257801561033e57905b60028160051b6101a0016153f30151186103335760016106a05261033e565b600101818118610314575b50506106a05161569352610100516106a0526106a0516153f3526106a05180607f1c6109c257615413526102205160208160051b015f81601f0160051c600981116109c25780156103ac57905b8060051b61022001518160051b6102c0016153f3015260010181811861038b575b50505050336154335260646020615e1c5f395f51026106c0526106c051600c556106c051600d556020615e3c5f395f51600a556020615e5c5f395f51600b556020615e7c5f395f51156109c2576020615e7c5f395f5160235561f374602455426040524260605261041e6106e0610981565b6106e0516025555f6106e0525f610800525f610920525f61541351600881116109c257801561070a57905b80610a4052615413516001810380600f0b81186109c2579050610a405112156104ac57601954600781116109c257670de0b6b3a7640000604052670de0b6b3a764000060605261049a610a60610981565b610a605181601a015560018101601955505b61092051600781116109c257610a4051610580518110156109c25760051b6105a00151610a4051610460518110156109c25760051b61048001518060e01c90508060e01b818160e01c186109c2579050178160051b6109400152600181016109205250600154600781116109c2575f81600201556001810160015550601054600781116109c2575f816011015560018101601055506003610a4051610340518110156109c25760051b6103600151186106c0576106e051600781116109c257610a4051610100518110156109c25760051b610120015163313ce567610a60526020610a606004610a7c845afa6105a4573d5f5f3e3d5ffd5b60203d106109c257610a60518060081c6109c257610aa052610aa0905051604d81116109c25780600a0a90508160051b6107000152600181016106e05250610a4051610100518110156109c25760051b61012001516338d52e0f610a80526020610a806004610a9c845afa61061b573d5f5f3e3d5ffd5b60203d106109c257610a80518060a01c6109c257610ac052610ac0905051610a605261080051600781116109c257610a605163313ce567610a80526020610a806004610a9c845afa61066f573d5f5f3e3d5ffd5b60203d106109c257610a80518060081c6109c257610ac052610ac090505180601203601281116109c2579050604d81116109c25780600a0a90508160051b61082001526001810161080052506106ff565b6106e051600781116109c2575f8160051b6107000152600181016106e0525061080051600781116109c2575f8160051b61082001526001810161080052505b600101818118610449575b50506106e05160208160051b015f81601f0160051c600981116109c257801561075057905b8060051b6106e001518160051b610500016153f3015260010181811861072f575b505050506108005160208160051b015f81601f0160051c600981116109c257801561079857905b8060051b61080001518160051b610620016153f30152600101818118610777575b505050506109205160208160051b015f81601f0160051c600981116109c25780156107e057905b8060051b61092001518160051b6103e0016153f301526001018181186107bf575b505050506020608051015f81601f0160051c600281116109c257801561082257905b8060051b608001518160051b610740016153f30152600101818118610802575b505050602060c051015f81601f0160051c600281116109c257801561086357905b8060051b60c001518160051b6107a0016153f30152600101818118610843575b5050506020615b3351015f81601f0160051c600381116109c25780156108a657905b8060051b610740016153f301518160051b610a400152600101818118610885575b505050610a40805160208201209050615bd3526001430340615c135246615bf3527fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac56472610a6052615bd351610a80527f1c54f243822e0e9a0a377610b81577e771b3efe79964e76636b0d5d10247950d610aa05246610ac05230610ae052615c1351610b005260c0610a4052610a40805160208201209050615c3352335f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f610a40526020610a40a36153f36109c661000039615c53610000f35b6fffffffffffffffffffffffffffffffff604051116109c2576fffffffffffffffffffffffffffffffff606051116109c25760605160801b60405117815250565b5f80fd5f3560e01c60056005600683060261522a01601b395f51600760078260ff16848460181c0260181c06028260081c61ffff1601601939505f51818160181c14600336111661004c5761294e565b8060fe16361034826001160217615226578060081c61ffff16565b60206153f360403960206040f35b602060043560206154535f395f518110156152265760051b6080016153f30160403960206040f35b600a5460405260206040f35b600b5460405260206040f35b64012a05f20060405260206040f35b600c5460405260206040f35b600d5460405260206040f35b600e5460405260206040f35b600f5460405260206040f35b600435601054811015615226576011015460405260206040f35b60235460405260206040f35b60245460405260206040f35b60255460405260206040f35b6020806040528060400160206020615b335f395f510180615b338339508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b6020806040528060400160206020615b935f395f510180615b938339508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b601260405260206040f35b60208060805260066040527f76372e302e30000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b6004358060a01c6152265760405260266040516020525f5260405f205460605260206060f35b6004358060a01c615226576040526024358060a01c6152265760605260276040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b6004358060a01c6152265760405260296040516020525f5260405f205460605260206060f35b6020615c1360403960206040f35b33611360526102ee565b6084358060a01c61522657611360525b60043580600f0b8118615226576113205260243580600f0b811861522657611340525f546002146152265760025f55602033610dc05261132051610de05261134051610e005260406044610e203761136051610e60525f610e8052610354611380614466565b61138060035f55f35b3361136052610377565b6084358060a01c61522657611360525b60043580600f0b8118615226576113205260243580600f0b811861522657611340525f546002146152265760025f5560206156935f395f5161522657602033610dc05261132051610de05261134051610e005260406044610e203761136051610e60526001610e80526103eb611380614466565b61138060035f55f35b33610a805261040e565b6044358060a01c61522657610a80525b600435600401600881351161522657803560208160051b018083610960375050505f546002146152265760025f55610a80511561522657610450610ac061323c565b610ac051610aa052610463610be0613055565b610be0805160208160051b0180610ac0828560045afa50505050610488610d00612d26565b610d00805160208160051b0180610be0828560045afa50505050610be05160208160051b01806103c082610be060045afa505050610ac05160208160051b01806104e082610ac060045afa505050610aa051610600526104e9610d20614714565b610d2051610d0052602854610d2052610ac05160208160051b0180610d4082610ac060045afa5050505f60206154135f395f51600881116152265780156105c857905b80610e6052610e6051610960518110156152265760051b6109800151156105b357610e6051610d40518110156152265760051b610d60018051610e6051604052610e6051610960518110156152265760051b6109800151606052336080525f60a052610599610e80612993565b610e805180820182811061522657905090508152506105bd565b610d205115615226575b60010181811861052c575b5050610be05160208160051b01806103c082610be060045afa505050610d405160208160051b01806104e082610d4060045afa505050610aa05161060052610611610e80614714565b610e8051610e6052610d0051610e60511115615226575f610e80525f610fa052610d2051156109a857606036610fc03760206153f35f395f51610d0051610e60518082018281106152265790509050046110205260403661104037600160206153f35f395f510360021b60206153f35f395f51600a540204611080525f60206154135f395f51600881116152265780156108ad57905b806110a052610e60516110a051610ac0518110156152265760051b610ae001518082028115838383041417156152265790509050610d005180156152265780820490509050610fc0525f610fe0526110a051610d40518110156152265760051b610d6001516110005261100051610fc0511161072f57610fc0516110005103610fe05261073d565b61100051610fc05103610fe0525b670de0b6b3a76400006110a051610be0518110156152265760051b610c0001516110a051610ac0518110156152265760051b610ae00151611000518082018281106152265790509050808202811583838304141715615226579050905004611040526110405160405261102051606052611080516080526107bf6110c06138c4565b6110c05161106052610e805160078111615226576402540be40061106051610fe0518082028115838383041417156152265790509050048160051b610ea0015260018101610e8052506110a0516010548110156152265760110180546402540be4006110a051610e80518110156152265760051b610ea0015164012a05f20081028164012a05f2008204186152265790500480820182811061522657905090508155506110a051610d40518110156152265760051b610d600180516110a051610e80518110156152265760051b610ea0015180820382811161522657905090508152506001018181186106a7575b5050610be05160208160051b0180604082610be060045afa505050610d405160208160051b018061016082610d4060045afa5050506108ed6111c0613188565b6111c0805160208160051b01806110a0828560045afa505050506110a05160208160051b01806040826110a060045afa505050610aa051610160526109336111c0613347565b6111c051610e6052610d0051610d2051610e6051610d00518082038281116152265790509050808202811583838304141715615226579050905004610fa0526110a05160208160051b0180610340826110a060045afa505050610aa05161046052610e605161048052610a23613ed056610a23565b610e6051610fa052610e6051604052610e60516060526109c9610fc0612952565b610fc0516022556025546040526109e1611000613984565b6110006040610fc060408360045afa505042610fe0511015610a235742610fe052610fc051604052610fe051606052610a1b611000612952565b611000516025555b602435610fa0511015610a95576014610fc0527f536c697070616765207363726577656420796f75000000000000000000000000610fe052610fc050610fc05180610fe001601f825f031636823750506308c379a0610f80526020610fa052601f19601f610fc0510116604401610f9cfd5b610d2051610fa0518082018281106152265790509050610d20526026610a80516020525f5260405f208054610fa0518082018281106152265790509050815550610d2051602855610a80515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610fa051610fc0526020610fc0a3337f189c623b666b1b45b83d7178f39b8c087cb09774317ca2f53c2d3c3726f222a2608080610fc05280610fc0015f610960518083528060051b5f8260088111615226578015610b7a57905b8060051b61098001518160051b602088010152600101818118610b5c575b5050820160200191505090508101905080610fe05280610fc0015f610e80518083528060051b5f8260088111615226578015610bd057905b8060051b610ea001518160051b602088010152600101818118610bb2575b50508201602001915050905081019050610e605161100052610d205161102052610fc0a26020610fa060035f55f35b33610b0052610c19565b6064358060a01c61522657610b00525b60243580600f0b811861522657610ae0525f546002146152265760025f556004351561522657606036610b20375f610c80525f610ca0526004356103c052610ae0516103e052610c6a610cc0614a57565b610cc08051610b20526020810151610b405260408101805160208160051b0180610b60828560045afa50505050610160810151610c8052610180810151610ca05250604435610b20511015610d1e576018610cc0527f4e6f7420656e6f75676820636f696e732072656d6f7665640000000000000000610ce052610cc050610cc05180610ce001601f825f031636823750506308c379a0610c80526020610ca052601f19601f610cc0510116604401610c9cfd5b610ae0516010548110156152265760110180546402540be400610b405164012a05f20081028164012a05f20082041861522657905004808201828110615226579050905081555033604052600435606052610d77614f3d565b610ae051604052610b2051606052610b0051608052610d94612b55565b337f6f48129db1f37ccb9cc5dd7e119cb32750cabdf75b48375d730d26ce3659bbe1610ae051610cc052600435610ce052610b2051610d0052602854610d20526080610cc0a2610b605160208160051b018061034082610b6060045afa505050610c805161046052610ca05161048052610e0c613ed0565b6020610b2060035f55f35b33610a8052610e31565b6044358060a01c61522657610a80525b600435600401600881351161522657803560208160051b018083610960375050505f546002146152265760025f55610e6a610ac061323c565b610ac051610aa052610e7d610be0612d26565b610be0805160208160051b0180610ac0828560045afa50505050610ea2610d00613055565b610d00805160208160051b0180610be0828560045afa50505050610ac05160208160051b01806103c082610ac060045afa505050610be05160208160051b01806104e082610be060045afa505050610aa05161060052610f03610d20614714565b610d2051610d0052610be05160208160051b0180610d2082610be060045afa5050505f60206154135f395f5160088111615226578015610fdb57905b80610e4052610e4051610960518110156152265760051b610980015115610fd057610e4051610d20518110156152265760051b610d40018051610e4051610960518110156152265760051b61098001518082038281116152265790509050815250610e4051604052610e4051610960518110156152265760051b6109800151606052610a8051608052610fd0612b55565b600101818118610f3f575b5050610ac05160208160051b01806103c082610ac060045afa505050610d205160208160051b01806104e082610d2060045afa505050610aa05161060052611024610e60614714565b610e6051610e4052600160206153f35f395f510360021b60206153f35f395f51600a540204610e605260206153f35f395f51610d0051610e4051808201828110615226579050905004610e80525f610ea0525f610fc052608036610fe0375f60206154135f395f51600881116152265780156112a257905b8061106052610e405161106051610be0518110156152265760051b610c0001518082028115838383041417156152265790509050610d005180156152265780820490509050611000525f6110205261106051610d20518110156152265760051b610d400151611040526110405161100051116111245761100051611040510361102052611132565b611040516110005103611020525b670de0b6b3a764000061106051610ac0518110156152265760051b610ae0015161106051610be0518110156152265760051b610c000151611040518082018281106152265790509050808202811583838304141715615226579050905004610fe052610fe051604052610e8051606052610e60516080526111b46110806138c4565b61108051610fc052610ea05160078111615226576402540be400610fc051611020518082028115838383041417156152265790509050048160051b610ec0015260018101610ea05250611060516010548110156152265760110180546402540be40061106051610ea0518110156152265760051b610ec0015164012a05f20081028164012a05f20082041861522657905004808201828110615226579050905081555061106051610d20518110156152265760051b610d4001805161106051610ea0518110156152265760051b610ec00151808203828111615226579050905081525060010181811861109c575b5050610ac05160208160051b01806103c082610ac060045afa505050610d205160208160051b01806104e082610d2060045afa505050610aa051610600526112eb611060614714565b61106051610e4052610ac05160208160051b0180604082610ac060045afa505050610d205160208160051b018061016082610d2060045afa505050611331611060613188565b611060805160208160051b0180611180828560045afa50505050610aa0516112a052610e40516112c05261016061034061016061118060045afa50611374613ed0565b60285461106052610d0051610d0051610e40518082038281116152265790509050611060518082028115838383041417156152265790509050046001810181811061522657905061108052600261108051106152265760243561108051111561143c5760146110a0527f536c697070616765207363726577656420796f750000000000000000000000006110c0526110a0506110a051806110c001601f825f031636823750506308c379a061106052602061108052601f19601f6110a051011660440161107cfd5b336040526110805160605261144f614f3d565b337f3631c28b1f9dd213e0319fb167b554d76b6c283a41143eb400a0d1adb1af17556080806110a052806110a0015f610960518083528060051b5f82600881116152265780156114b957905b8060051b61098001518160051b60208801015260010181811861149b575b50508201602001915050905081019050806110c052806110a0015f610ea0518083528060051b5f826008811161522657801561150f57905b8060051b610ec001518160051b6020880101526001018181186114f1575b50508201602001915050905081019050610e40516110e05261106051611080518082038281116152265790509050611100526110a0a2602061108060035f55f35b336103c05260016103e052611599565b6044358060a01c615226576103c05260016103e052611599565b6044358060a01c615226576103c0526064358060011c615226576103e0525b602435600401600881351161522657803560208160051b0180836102a0375050505f546002146152265760025f5560285461040052600435156152265760206153f35f395f516102a05118615226575f610420526115f8610660613055565b610660805160208160051b0180610540828560045afa505050505f610660525f60206154135f395f516008811161522657801561176257905b80610680526104005161068051610540518110156152265760051b610560015160043580820281158383830414171561522657905090500461066052610680516102a0518110156152265760051b6102c001516106605110156117185760306106a0527f5769746864726177616c20726573756c74656420696e20666577657220636f696106c0527f6e73207468616e206578706563746564000000000000000000000000000000006106e0526106a0506106a051806106c001601f825f031636823750506308c379a061066052602061068052601f19601f6106a051011660440161067cfd5b610420516007811161522657610660518160051b610440015260018101610420525061068051604052610660516060526103c051608052611757612b55565b600101818118611631575b505033604052600435606052611776614f3d565b6025546040526117876106c0613984565b6106c0604061068060408360045afa50506022546106c0526fffffffffffffffffffffffffffffffff6106c051166106e0526106e051610400516106e0516004358082028115838383041417156152265790509050048082038281116152265790509050610740526106c05161012052602454610140526106a05161016052611811610700613dc6565b610700516107605260406040604061074060045afa50611832610720612952565b61072051602255426106a051101561186a57426106a052610680516040526106a051606052611862610700612952565b610700516025555b337f347ad828e58cbe534d8f6b67985d791360756b18f0d95fd9f197a66cc46480ea6060806107005280610700015f610420518083528060051b5f82600881116152265780156118d457905b8060051b61044001518160051b6020880101526001018181186118b6575b50508201602001915050905081019050806107205280610700015f5f82525f5f5f6008811161522657801561191b57905b5f8160051b602087010152600101818118611905575b505081016020019050905081019050600435610400510361074052610700a26103e0511561194b5761194b614faa565b6020806107005280610700015f610420518083528060051b5f826008811161522657801561199357905b8060051b61044001518160051b602088010152600101818118611975575b5050820160200191505090508101905061070060035f55f35b5f546002146152265760025f556119c1614faa565b60035f55005b6fffffffffffffffffffffffffffffffff60043560195481101561522657601a01541660405260206040f35b60043560195481101561522657601a015460801c60405260206040f35b611a1b6103e061323c565b6103e0516103c052611a2e610500612d26565b610500805160208160051b0180610860828560045afa50505050611a53610620613055565b610620805160208160051b0180610980828560045afa50505050610240604061024061086060045afa50611a88610740613188565b610740805160208160051b01806103e0828560045afa505050506103e05160208160051b01806040826103e060045afa5050506103c05161016052611ace610520613347565b610520516105005260206103e05160208160051b01806040826103e060045afa5050506103c051610160526105005161018052611b0c6105206139a9565b61052060043581518110156152265760051b60208201019050f35b5f5460021461522657602060043560195481101561522657601a015461012052602354610140526fffffffffffffffffffffffffffffffff6025541661016052611b72610200613dc6565b610200f35b5f54600214615226576020602254610120526024546101405260255460801c61016052611ba5610200613dc6565b610200f35b6004358060a01c6152265760c0523360405260c051606052602435608052611bd06151aa565b600160e052602060e0f35b6004358060a01c6152265760c0526024358060a01c6152265760e05260c05160405260e051606052604435608052611c116151aa565b602760c0516020525f5260405f2080336020525f5260405f20905054610100527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101005114611cc8576101005160443580820382811161522657905090506101205261012051602760c0516020525f5260405f2080336020525f5260405f209050553360c0517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561012051610140526020610140a35b6001610120526020610120f35b6004358060a01c615226576040526024356027336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b6004358060a01c61522657610120526024358060a01c61522657610140526084358060081c61522657610160526101205115615226576064354211615226576029610120516020525f5260405f2054610180525f60026101c0527f19010000000000000000000000000000000000000000000000000000000000006101e0526101c0805160208201836103200181518152505080830192505050611de2610200615117565b610200518161032001526020810190507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961024052610120516102605261014051610280526044356102a052610180516102c0526064356102e05260c061022052610220805160208201209050816103200152602081019050806103005261030090508051602082012090506101a052610120513b15611fab575f604060a46102603760406102405261024080516020820183610320018281848460045afa50505080830192505050610160516102a0526102a0601f810180516102e0525060016102c0526102c09050805160208201836103200181518152505080830192505050806103005261030090506020815101806101c0828460045afa5050507f1626ba7e0000000000000000000000000000000000000000000000000000000061012051631626ba7e6102405260406101a051610260528061028052806102600160206101c051018082826101c060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050602061024060c461025c845afa611f93573d5f5f3e3d5ffd5b60203d10615226576102409050511861522657611feb565b610120515f610240526101a0516101c052610160516101e05260a4356102005260c43561022052602061024060806101c060015afa506102405118615226575b6044356027610120516020525f5260405f2080610140516020525f5260405f20905055600161018051016029610120516020525f5260405f205561014051610120517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256044356101c05260206101c0a360016101c05260206101c0f35b6020612075610120615117565b610120f35b60043580600f0b81186152265760405260243580600f0b811861522657606052602060206154335f395f5163e31593d8608052602060806004609c845afa6120c4573d5f5f3e3d5ffd5b60203d10615226576080518060a01c6152265760c05260c09050516383aa796a60e0526040516101005260605161012052604435610140523061016052602060e0608460fc845afa612118573d5f5f3e3d5ffd5b60203d106152265760e09050f35b60043580600f0b81186152265760405260243580600f0b811861522657606052602060206154335f395f5163e31593d8608052602060806004609c845afa612170573d5f5f3e3d5ffd5b60203d10615226576080518060a01c6152265760c05260c0905051630c601c2c60e0526040516101005260605161012052604435610140523061016052602060e0608460fc845afa6121c4573d5f5f3e3d5ffd5b60203d106152265760e09050f35b60243580600f0b811861522657610ae05260206004356103c052610ae0516103e0526121ff610b00614a57565b610b00f35b5f546002146152265760285460405260206040f35b5f546002146152265761222d6103e061323c565b6103e0516103c052612240610500612d26565b610500805160208160051b0180610860828560045afa50505050612265610620613055565b610620805160208160051b0180610980828560045afa50505050610240604061024061086060045afa5061229a610740613188565b610740805160208160051b01806103e0828560045afa505050506103e05160208160051b01806040826103e060045afa5050506103c051610160526122e0610520613347565b610520516105005261050051670de0b6b3a7640000810281670de0b6b3a764000082041861522657905060285480156152265780820490509050610520526020610520f35b600435600401600881351161522657803560208160051b0180836040375050506024358060011c6152265761016052602060206154335f395f5163e31593d8610180526020610180600461019c845afa612381573d5f5f3e3d5ffd5b60203d1061522657610180518060a01c615226576101c0526101c090505163fb79eb276101e0526060806102005280610200015f6040518083528060051b5f82600881116152265780156123ee57905b8060051b606001518160051b6020880101526001018181186123d1575b50508201602001915050905081019050610160516102205230610240525060206101e06101846101fc845afa612426573d5f5f3e3d5ffd5b60203d10615226576101e09050f35b606461244160c061323c565b60c0510460e052602060e0f35b602061245a60c061323c565b60c0f35b602061246b6101e0613055565b6101e060043581518110156152265760051b60208201019050f35b602080610300526124986101e0613055565b6101e081610300015f82518083528060051b5f82600881116152265780156124db57905b8060051b6020880101518160051b6020880101526001018181186124bc575b505082016020019150509050905081019050610300f35b60208061036052612504610240612d26565b61024081610360015f82518083528060051b5f826008811161522657801561254757905b8060051b6020880101518160051b602088010152600101818118612528575b505082016020019150509050905081019050610360f35b60043580600f0b81186152265760405260243580600f0b811861522657606052602060206154335f395f5163e31593d8608052602060806004609c845afa6125a8573d5f5f3e3d5ffd5b60203d10615226576080518060a01c6152265760c05260c090505163a63530bd60e05260405161010052606051610120523061014052602060e0606460fc845afa6125f5573d5f5f3e3d5ffd5b60203d106152265760e09050f35b60206154335f395f5163f851a44060c052602060c0600460dc845afa61262b573d5f5f3e3d5ffd5b60203d106152265760c0518060a01c6152265761010052610100905051331861522657600e5462015180810181811061522657905042106152265742620151808101818110615226579050602435106152265761268860e061323c565b60e05160c0526004356064810281606482041861522657905060e052600435156126ba57620f423f60043511156126bc565b5f5b156152265760c05160e051106126ec5760c051600a810281600a82041861522657905060e0511161522657612708565b60c05160e051600a810281600a82041861522657905010615226575b60c051600c5560e051600d5542600e55602435600f557fa2b71ec6df949300b59aab36b55e189697b750119dd349fcfa8c0f779e83c25460c0516101005260e051610120524261014052602435610160526080610100a1005b60206154335f395f5163f851a44060c052602060c0600460dc845afa612789573d5f5f3e3d5ffd5b60203d106152265760c0518060a01c61522657610100526101009050513318615226576127b660e061323c565b60e05160c05260c051600c5560c051600d5542600e5542600f557f46e22fb3709ad289f62ce63d469248536dbc78d82b84a3d7e74ad606dc20193860c05160e0524261010052604060e0a1005b60206154335f395f5163f851a440604052602060406004605c845afa61282b573d5f5f3e3d5ffd5b60203d10615226576040518060a01c61522657608052608090505133186152265764012a05f2006004351161522657600435600a556802b5e3af16b188000060243560043580820281158383830414171561522657905090501161522657602435600b557f750d10a7f37466ce785ee6bcb604aac543358db42afbcc332a3c12a49c80bf6d6040600460403760406040a1005b60206154335f395f5163f851a440604052602060406004605c845afa6128e6573d5f5f3e3d5ffd5b60203d10615226576040518060a01c6152265760805260809050513318615226576024356004350215615226576004356023556024356024557f68dc4e067dff1862b896b7a0faf55f97df1a60d0aaa79481b69d675f2026a28c6040600460403760406040a1005b5f5ffd5b6fffffffffffffffffffffffffffffffff60405111615226576fffffffffffffffffffffffffffffffff606051116152265760605160801b60405117815250565b602060405160206154535f395f518110156152265760051b6080016153f3015f395f516370a0823160e0523061010052602060e0602460fc845afa6129da573d5f5f3e3d5ffd5b60203d106152265760e090505160c05260a051612af6576060511561522657602060405160206154535f395f518110156152265760051b6080016153f3015f395f516323b872dd60e05260805161010052306101205260605161014052602060e0606460fc5f855af1612a4f573d5f5f3e3d5ffd5b3d612a6657803b1561522657600161016052612a7e565b60203d106152265760e0518060011c61522657610160525b6101609050511561522657602060405160206154535f395f518110156152265760051b6080016153f3015f395f516370a0823160e0523061010052602060e0602460fc845afa612ad0573d5f5f3e3d5ffd5b60203d106152265760e090505160c051808203828111615226579050905060c052612b27565b60c0516040516001548110156152265760020154808203828111615226579050905060c05260605160c05110615226575b60405160015481101561522657600201805460c051808201828110615226579050905081555060c051815250565b608051156152265760206156935f395f51612c1e576040516001548110156152265760020180546060518082038281116152265790509050815550602060405160206154535f395f518110156152265760051b6080016153f3015f395f5163a9059cbb60a05260805160c05260605160e052602060a0604460bc5f855af1612bdf573d5f5f3e3d5ffd5b3d612bf657803b1561522657600161010052612c0e565b60203d106152265760a0518060011c61522657610100525b6101009050511561522657612d24565b602060405160206154535f395f518110156152265760051b6080016153f3015f395f516370a0823160c0523060e052602060c0602460dc845afa612c64573d5f5f3e3d5ffd5b60203d106152265760c090505160a052602060405160206154535f395f518110156152265760051b6080016153f3015f395f5163a9059cbb60c05260805160e05260605161010052602060c0604460dc5f855af1612cc4573d5f5f3e3d5ffd5b3d612cdb57803b1561522657600161012052612cf3565b60203d106152265760c0518060011c61522657610120525b610120905051156152265760a051606051808203828111615226579050905060405160015481101561522657600201555b565b60206156b35f395f5160208160051b01806156b360403950505f60206154135f395f516008811161522657801561303a57905b8061016052600160206101605160206155735f395f518110156152265760051b6101a0016153f3015f395f5118612db65760206101605160206157d35f395f518110156152265760051b610400016153f3015f395f511515612db8565b5f5b612ee757600360206101605160206155735f395f518110156152265760051b6101a0016153f3015f395f511861302f57670de0b6b3a7640000610160516040518110156152265760051b6060015160206101605160206154535f395f518110156152265760051b6080016153f3015f395f516307a2d13a6101805260206101605160206158f35f395f518110156152265760051b610520016153f3016101a0396020610180602461019c845afa612e71573d5f5f3e3d5ffd5b60203d106152265761018090505180820281158383830414171561522657905090506020610160516020615a135f395f518110156152265760051b610640016153f3015f395f51808202811583838304141715615226579050905004610160516040518110156152265760051b6060015261302f565b60206101605160206157d35f395f518110156152265760051b610400016153f3015f395f5173ffffffffffffffffffffffffffffffffffffffff811690508060a01c615226575a7fffffffff0000000000000000000000000000000000000000000000000000000060206101605160206157d35f395f518110156152265760051b610400016153f3015f395f51166101e05260206101c0526101c05060206102206101c0516101e08585fa90509050612fa2573d5f5f3e3d5ffd5b3d602081183d60201002186102005261020080516101805260208101516101a0525060206101805118615226576101a0516101805160200360031b1c6101c052670de0b6b3a7640000610160516040518110156152265760051b606001516101c051808202811583838304141715615226579050905004610160516040518110156152265760051b606001525b600101818118612d59575b505060405160208160051b01808382604060045afa50505050565b5f6040525f610160525f60206154135f395f516008811161522657801561316d57905b806101805260206156935f395f516130c557610180516001548110156152265760020154610180516010548110156152265760110154808203828111615226579050905061016052613143565b60206101805160206154535f395f518110156152265760051b6080016153f3015f395f516370a082316101a052306101c05260206101a060246101bc845afa613110573d5f5f3e3d5ffd5b60203d10615226576101a09050516101805160105481101561522657601101548082038281116152265790509050610160525b6040516007811161522657610160518160051b606001526001810160405250600101818118613078575b505060405160208160051b01808382604060045afa50505050565b5f610280525f60206154135f395f516008811161522657801561321f57905b806103a052610280516007811161522657670de0b6b3a76400006103a0516040518110156152265760051b606001516103a051610160518110156152265760051b61018001518082028115838383041417156152265790509050048160051b6102a001526001810161028052506001018181186131a7575b50506102805160208160051b0180838261028060045afa50505050565b600f54604052600d5460605260405142106132605760605181525061334556613345565b600c54608052600e5460a052608051606051116132e257608051606051608051034260a0518082038281116152265790509050808202811583838304141715615226579050905060405160a051808203828111615226579050905080156152265780820490509050808203828111615226579050905081525061334556613345565b608051608051606051034260a0518082038281116152265790509050808202811583838304141715615226579050905060405160a05180820382811161522657905090508015615226578082049050905080820182811061522657905090508152505b565b5f610180525f6040516008811161522657801561339157905b8060051b606001516101a052610180516101a051808201828110615226579050905061018052600101818118613360575b5050610180516133a4575f8152506135bd565b610180516101a0526101605160206153f35f395f5180820281158383830414171561522657905090506101c0525f60ff905b806101e0526101a051610200525f6040516008811161522657801561343f57905b8060051b6060015161022052610200516101a05180820281158383830414171561522657905090506102205180156152265780820490509050610200526001018181186133f7575b50506102005160206153f35f395f5160206153f35f395f510a80156152265780820490509050610200526101a0516102205260646101c051610180518082028115838383041417156152265790509050046102005160206153f35f395f51808202811583838304141715615226579050905080820182811061522657905090506101a051808202811583838304141715615226579050905060646101c051606481038181116152265790506101a051808202811583838304141715615226579050905004600160206153f35f395f51016102005180820281158383830414171561522657905090508082018281106152265790509050801561522657808204905090506101a052610220516101a05111613582576001610220516101a0518082038281116152265790509050116135ad576101a05183525050506135bd566135ad565b60016101a051610220518082038281116152265790509050116135ad576101a05183525050506135bd565b6001018181186133d65750505f5ffd5b565b60605160405114615226575f606051126152265760206154135f395f516060511215615226575f604051126152265760206154135f395f516040511215615226576101c051610200526101e0516102205260603661024037610220516102a0526102005160206153f35f395f5180820281158383830414171561522657905090506102c0525f6008905b806102e05260206154135f395f516102e051186136655761371f565b6040516102e0511861367d57608051610260526136ab565b6060516102e05114613714576102e05160a0518110156152265760051b60c00151610260526136ab56613714565b61024051610260518082018281106152265790509050610240526102a0516102205180820281158383830414171561522657905090506102605160206153f35f395f518082028115838383041417156152265790509050801561522657808204905090506102a0525b600101818118613649575b50506102a051610220518082028115838383041417156152265790509050606481028160648204186152265790506102c05160206153f35f395f518082028115838383041417156152265790509050801561522657808204905090506102a0526102405161022051606481028160648204186152265790506102c0518015615226578082049050905080820182811061522657905090506102e05261022051610300525f60ff905b80610320526103005161028052610300516103005180820281158383830414171561522657905090506102a0518082018281106152265790509050610300518060011b818160011c186152265790506102e0518082018281106152265790509050610220518082038281116152265790509050801561522657808204905090506103005261028051610300511161388757600161028051610300518082038281116152265790509050116138b2576103005183525050506138c2566138b2565b600161030051610280518082038281116152265790509050116138b2576103005183525050506138c2565b6001018181186137c75750505f5ffd5b565b600b5460a0526402540be40060a051116138e357608051815250613982565b60405160605180820182811061522657905090506fffffffffffffffffffffffffffffffff8111615226576002810a905060c0526402540be4006402540be40060a051038060021b818160021c186152265790506040518082028115838383041417156152265790509050606051808202811583838304141715615226579050905060c051801561522657808204905090500160805160a05102048152505b565b6fffffffffffffffffffffffffffffffff60405116815260405160801c602082015250565b60206153f35f395f5161016051026101a05260206153f35f395f5160206153f35f395f510a61018051046101c0525f60206154135f395f5160088111615226578015613a4357905b806101e0526101c0516101805180820281158383830414171561522657905090506101e0516040518110156152265760051b60600151801561522657808204905090506101c0526001018181186139f1575b50505f6101e05260646101a05160405115615226575f60051b6060015180820281158383830414171561522657905090500461030052600160078101905b806103205260206153f35f395f516103205118613a9d57613b57565b6101e051600781116152265761030051610320516040518110156152265760051b606001516101c05160405115615226575f60051b606001518082028115838383041417156152265790509050048082018281106152265790509050670de0b6b3a7640000810281670de0b6b3a7640000820418615226579050610300516101c0518082018281106152265790509050801561522657808204905090508160051b6102000152600181016101e05250600101818118613a81575b50506101e05160208160051b018083826101e060045afa50505050565b6040516060527ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d760405113613bac575f815250613dc4565b680755bf798b4a1bf1e46040511315613c1b5760106080527f7761645f657870206f766572666c6f770000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b6503782dace9d9604051604e1b056060526b8000000000000000000000006bb17217f7d1cf79abc9e3b39860605160601b050160601d6080526bb17217f7d1cf79abc9e3b39860805102606051036060526d02d16720577bd19bf614176fe9ea6060516c10fe68e7fd37d0007b713f7650606051010260601d0160a05279d835ebba824c98fb31b83b2ca45c0000000000000000000000006060516e0587f503bb6ea29d25fcb74019645060a0516d04a4fd9f2a8b96949216d2255a6c60605160a05101030260601d01020160c0526d0277594991cfc85f6e2461837cd96060516c240c330e9fb2d9cbaf0fd5aafc606051030260601d0160e0526d1a521255e34f6a5061b25ef1c9c460605160e0510260601d0360e0526db1bbb201f443cf962f1a1d3db4a560605160e0510260601d0160e0526e02c72388d9f74f51a9331fed693f1560605160e0510260601d0360e0526e05180bb14799ab47a8a8cb2a527d5760605160e0510260601d0160e05260e05160c051056101005274029d9dc38563c32e5c2f6dc192ee70ef65f9978af3610100510260805160c3035f8112615226571c8152505b565b6fffffffffffffffffffffffffffffffff6101205116610180526101205160801c6101a05242610160511015613ec65761014051670de0b6b3a764000061016051420302048060ff1c615226577f80000000000000000000000000000000000000000000000000000000000000008114615226575f03604052613e4a6101e0613b74565b6101e0516101c052670de0b6b3a7640000610180516101c05180670de0b6b3a764000003670de0b6b3a7640000811161522657905080820281158383830414171561522657905090506101a0516101c0518082028115838383041417156152265790509050808201828110615226579050905004815250613ece565b6101a0518152505b565b602554604052613ee16104e0613984565b6104e060406104a060408360045afa505060195460208160051b015f81601f0160051c60098111615226578015613f2d57905b80601901548160051b6104e00152600101818118613f14575b505050506104e05160208160051b0180610600826104e060045afa5050506103405160208160051b018060408261034060045afa50505061046051610160526104805161018052613f7f6108406139a9565b610840805160208160051b0180610720828560045afa505050505f6008905b806108405260206153f35f395f51600181038181116152265790506108405118613fc757614096565b61084051610720518110156152265760051b61074001511561408b5761084051610720518110156152265760051b6107400151671bc16d674ec80000818118671bc16d674ec800008310021890506108a052610840516104e0518110156152265760051b610500015161012052602354610140526104a0516101605261404e610860613dc6565b610860516108c0526040604060406108a060045afa5061406f610880612952565b6108805161084051610600518110156152265760051b61062001525b600101818118613f9e575b50506106005160208160051b015f81601f0160051c600981116152265780156140d457905b8060051b610600015181601901556001018181186140bb575b5050505060225461084052610480516108a0526108405161012052602454610140526104c05161016052614109610860613dc6565b610860516108c0526040604060406108a060045afa5061412a610880612952565b610880516022555f6002905b80610860524261086051600181116152265760051b6104a00151101561416c574261086051600181116152265760051b6104a001525b6001018181186141365750506104a0516040526104c051606052614191610860612952565b61086051602555565b6141a5610c2061323c565b610c2051610c00526109805160208160051b018060408261098060045afa505050610c0051610160526141d9610c40613347565b610c4051610c2052610bc051604052610be051606052610960516080526109805160208160051b018060a08261098060045afa505050610c00516101c052610c20516101e05261422a610c606135bf565b610c6051610c4052610be051610980518110156152265760051b6109a00151610c4051808203828111615226579050905060018103818111615226579050610c60526402540be400610c6051610bc051610980518110156152265760051b6109a0015161096051808201828110615226579050905060011c604052610be051610980518110156152265760051b6109a00151610c4051808201828110615226579050905060011c606052600a546080526142e5610ca06138c4565b610ca051808202811583838304141715615226579050905004610c8052610c6051610c80518082038281116152265790509050670de0b6b3a7640000810281670de0b6b3a7640000820418615226579050610be051610aa0518110156152265760051b610ac0015180156152265780820490509050610c6052610be051601054811015615226576011018054610be051610aa0518110156152265760051b610ac001516402540be400610c805164012a05f20081028164012a05f20082041861522657905004670de0b6b3a7640000810281670de0b6b3a76400008204186152265790500480820182811061522657905090508155506109805160208160051b0180610ca08261098060045afa50505061096051610bc051610ca0518110156152265760051b610cc00152610c4051610be051610ca0518110156152265760051b610cc00152610ca05160208160051b018061034082610ca060045afa505050610c005161046052610c20516104805261445d613ed0565b610c6051815250565b610e0051610de0511461522657610e20511561522657614487610fc0612d26565b610fc0805160208160051b0180610ea0828560045afa505050506144ac6110e0613055565b6110e0805160208160051b0180610fc0828560045afa50505050610ea05160208160051b0180604082610ea060045afa505050610fc05160208160051b018061016082610fc060045afa505050614504611200613188565b611200805160208160051b01806110e0828560045afa50505050610de051604052610e2051606052610dc051608052610e805160a052614545611220612993565b6112205161120052610de0516110e0518110156152265760051b6111000151670de0b6b3a764000061120051610de051610ea0518110156152265760051b610ec0015180820281158383830414171561522657905090500480820182811061522657905090506112205261122051610960526110e05160208160051b0180610980826110e060045afa505050610ea05160208160051b0180610aa082610ea060045afa505050610de051610bc052610e0051610be05261460661126061419a565b6112605161124052610e40516112405110156146a657602e611260527f45786368616e676520726573756c74656420696e20666577657220636f696e73611280527f207468616e2065787065637465640000000000000000000000000000000000006112a05261126050611260518061128001601f825f031636823750506308c379a061122052602061124052601f19601f61126051011660440161123cfd5b610e005160405261124051606052610e60516080526146c3612b55565b337f8b3e96f2b889fa771c53c981b40daf005f63f637f1869f707052d15a3dd97140610de051611260526112005161128052610e00516112a052611240516112c0526080611260a261124051815250565b6103c05160208160051b01806040826103c060045afa5050506104e05160208160051b0180610160826104e060045afa505050614752610740613188565b610740805160208160051b0180610620828560045afa505050506106205160208160051b018060408261062060045afa5050506106005161016052614798610740613347565b61074051815250565b5f606051126152265760206154135f395f516060511215615226576060366101c0376101a0516102205260405160206153f35f395f518082028115838383041417156152265790509050610240525f6008905b806102605260206154135f395f516102605118614810576148b2565b60605161026051146148a757610260516080518110156152265760051b60a001516101e05261483e566148a7565b6101c0516101e05180820182811061522657905090506101c052610220516101a05180820281158383830414171561522657905090506101e05160206153f35f395f51808202811583838304141715615226579050905080156152265780820490509050610220525b6001018181186147f4575b5050610220516101a0518082028115838383041417156152265790509050606481028160648204186152265790506102405160206153f35f395f51808202811583838304141715615226579050905080156152265780820490509050610220526101c0516101a0516064810281606482041861522657905061024051801561522657808204905090508082018281106152265790509050610260526101a051610280525f60ff905b806102a052610280516102005261028051610280518082028115838383041417156152265790509050610220518082018281106152265790509050610280518060011b818160011c186152265790506102605180820182811061522657905090506101a05180820382811161522657905090508015615226578082049050905061028052610200516102805111614a1a5760016102005161028051808203828111615226579050905011614a4557610280518352505050614a5556614a45565b60016102805161020051808203828111615226579050905011614a4557610280518352505050614a55565b60010181811861495a5750505f5ffd5b565b614a6261042061323c565b6104205161040052614a75610540612d26565b610540805160208160051b0180610420828560045afa505050506104205160208160051b01806108a08261042060045afa505050614ab4610660613055565b610660805160208160051b01806109c0828560045afa5050505061024060406102406108a060045afa50614ae9610780613188565b610780805160208160051b0180610540828560045afa505050506105405160208160051b018060408261054060045afa5050506104005161016052614b2f610680613347565b610680516106605260285461068052610660516103c051610660518082028115838383041417156152265790509050610680518015615226578082049050905080820382811161522657905090506106a052610400516040526103e0516060526105405160208160051b018060808261054060045afa5050506106a0516101a052614bbb6106e06147a1565b6106e0516106c052600160206153f35f395f510360021b60206153f35f395f51600a5402046106e0526105405160208160051b01806107008261054060045afa50505060206153f35f395f5160011b610660516106a05180820182811061522657905090500461082052608036610840375f6008905b806108c05260206154135f395f516108c05118614c4d57614daa565b5f610840526108c051610540518110156152265760051b6105600151610860526103e0516108c05118614cdf57610860516106a051808202811583838304141715615226579050905061066051801561522657808204905090506106c051808203828111615226579050905061084052610860516106c051808201828110615226579050905060011c61088052614d2b565b61086051610860516106a0518082028115838383041417156152265790509050610660518015615226578082049050905080820382811161522657905090506108405261086051610880525b61088051604052610820516060526106e051608052614d4b6108e06138c4565b6108e0516108a052610860516402540be4006108a0516108405180820281158383830414171561522657905090500480820382811161522657905090506108c051610700518110156152265760051b6107200152600101818118614c31575b50506103e051610700518110156152265760051b6107200151610400516040526103e0516060526107005160208160051b018060808261070060045afa5050506106a0516101a052614dfd6108e06147a1565b6108e05180820382811161522657905090506108c0526103e051610540518110156152265760051b61056001516106c0518082038281116152265790509050670de0b6b3a7640000810281670de0b6b3a76400008204186152265790506103e051610420518110156152265760051b6104400151801561522657808204905090506108e0526103e051610420518110156152265760051b61044001516108c05160018103818111615226579050670de0b6b3a7640000810281670de0b6b3a7640000820418615226579050046108c0526106c0516103e051610540518110156152265760051b61056001526108c05181526108e0516108c051808203828111615226579050905060208201526105405160208160051b016040830181818361054060045afa50505050610400516101608201526106a05161018082015250565b602854606051808203828111615226579050905060285560266040516020525f5260405f20805460605180820382811161522657905090508155505f6040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b60206154335f395f5163cab4d3db610160526020610160600461017c845afa614fd5573d5f5f3e3d5ffd5b60203d1061522657610160518060a01c615226576101a0526101a0905051610140526101405161500457615115565b60105460208160051b015f81601f0160051c6009811161522657801561503f57905b80601001548160051b6101600152600101818118615026575b505050505f60206154135f395f51600881116152265780156150d257905b806102805261028051610160518110156152265760051b6101800151156150c7576102805160405261028051610160518110156152265760051b6101800151606052610140516080526150ae612b55565b5f61028051610160518110156152265760051b61018001525b60010181811861505d575b50506101605160208160051b015f81601f0160051c6009811161522657801561511057905b8060051b610160015181601001556001018181186150f7575b505050505b565b6020615bf35f395f51461461519f577fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564726060526020615bd36080397f1c54f243822e0e9a0a377610b81577e771b3efe79964e76636b0d5d10247950d60a0524660c0523060e0526020615c136101003960c060405260408051602082012090508152506151a8565b6020615c338239505b565b60266040516020525f5260405f208054608051808203828111615226579050905081555060266060516020525f5260405f20805460805180820182811061522657905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60805160a052602060a0a3565b5f80fd0299538309065752a30a809452480d1cfc52e90c008153c207076c533d0ad40ddb8c1550652081066c00dc059c4258c4011a053931ab5219c72554fd4d5001c90576a9cd3e255e455e604cd2156085b72df5de03f4651a4d01d20bff6567df02ca207a6529357750006705e2e7d26400f425ec0238621a1025fd0684b124f20518160ddd220405a9059cbb1baa4570a0823102372530c5408519ac05ddca3f43009d055e0d443f21266506fdde03013205a7256d0903fe85c66106570075258edfdd5f00a905ddc1f59d02dea5cc2b27d721d24590d2083719f3253644e515206805313ce56701be05081579a50c09851ddc3b01012605d505accf1d3de5bfa0b13302c60595d89b410178051be913a5010e057706db750e1765fee3f7f900b505095ea7b31cd54514f0597924860565bbea6b28be45907a016b1b7705b4b577ad00d0054903b0d1245e2523b872dd1bdb65687276531b27252969e04a157aa5551a65882761051405228800e8055409491a00c405015c28382803454a6e32c60e21857ecebe0002a0257e3db030035d85dd62ed3e025d45bb7b8b802219053c157e6426034576a2f0f0244e053df0212402d485f446c1d02435053db06dd8232565afb430120367a5841953f387181e185b184618541846183f1831190860a16576797065728300030a0023000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000003d090000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000000000000a2500000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000b4c5553442f446f6c6c6172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4c555344446f6c6c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d10300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+ ],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x6ec39d56006098dfab8f892bf2584c2df0cdbbdba32790318b4e7a7bd3a1069b",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x115ac",
+ "value": "0x0",
+ "input": "0x1f7e8c7e000000000000000000000000cc68509f9ca0e1ed119eac7c468ec1b1c42f384f",
+ "nonce": "0x465",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xc140cd970fd44fbe40cd8cf44d599756778eb631c5c62bbd2e2f4791efbd31f1",
+ "transactionType": "CALL",
+ "contractName": null,
+ "contractAddress": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "function": "grantRole(bytes32,address)",
+ "arguments": ["0x3a2e010201653e4743db35ee85e81b63eb19cf8948f24794ef2b4dba5ecf49c9", "0xED3084c98148e2528DaDCB53C56352e549C488fA"],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "gas": "0x125c8",
+ "value": "0x0",
+ "input": "0x2f2ff15d3a2e010201653e4743db35ee85e81b63eb19cf8948f24794ef2b4dba5ecf49c9000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x466",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x6d154269fb29eefff3c1cbbcdeab165cb2bb1b421df7ce1dbbaf950e22e62169",
+ "transactionType": "CALL",
+ "contractName": null,
+ "contractAddress": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "function": "grantRole(bytes32,address)",
+ "arguments": ["0xa3405bb4244d0786f3e4178acef3953ebb3f56c1e97e9530871f50739923c1cf", "0xED3084c98148e2528DaDCB53C56352e549C488fA"],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "gas": "0x125c8",
+ "value": "0x0",
+ "input": "0x2f2ff15da3405bb4244d0786f3e4178acef3953ebb3f56c1e97e9530871f50739923c1cf000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x467",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xc3ec04777c62001f9020f9caaaccf7b8b92d88b9b006da09643da9abad39aa8a",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1157b",
+ "value": "0x0",
+ "input": "0xe2d443bd0000000000000000000000004e38d89362f7e5db0096ce44ebd021c3962aa9a0",
+ "nonce": "0x468",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xa77b0dbf15da5c7707c0a2ab5e056386f75b0172dca10f9cf3f0631930bd40b4",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1961f",
+ "value": "0x0",
+ "input": "0xa14d1f780000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000e10",
+ "nonce": "0x469",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x3882a2c08ecb242154d48ddbe6a5285b48694ee91829781e4634c6aa7e3fd7ef",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x11c70",
+ "value": "0x0",
+ "input": "0x9b94607c000000000000000000000000acdc85afcd8b83eb171affcbe29fad204f6ae45c",
+ "nonce": "0x46a",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ }
+ ],
+ "receipts": [
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x825071",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x29d4c9a8b3b5b9480032ac1ee2374be917a6f5fd22a3f5db882d819be6b9b3bb",
+ "transactionIndex": "0x6c",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xc4f14",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xe17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x9ad4fa",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x569b506b9a9876af9d309da49dcfd4c34de030f61ab3227fb9f3e751b03c7cbd",
+ "transactionIndex": "0x6d",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x188489",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xd3c81bd07948a38546bca894f8bfecb552613798"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xa24583",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x1afc7573f218b35609513d77be2ca2392aa11440dc2490aaa16bb8ec3ba688fd",
+ "transactionIndex": "0x6e",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x77089",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xd11b60c336a8416162272475ff9df572e516fc51"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xc0ae85",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xf5c03465a68a86b700aba947ffdc09e320cfd13c4a659cb54b858141e604407c",
+ "transactionIndex": "0x6f",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x1e6902",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x0e9f3299b9443d3d5130771f26b7e18a2a7aa9db"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xc49913",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xd1ab4e2ee714a62be280b18b1c04b8a2e6ec63eddf8990e0bb88de7c70bc1a03",
+ "transactionIndex": "0x70",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x3ea8e",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x58860e93b6fc7a6e4abd0f5d851a88654a34d0c0"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x104204c",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x3c4a05d831ee1a3f2d1afe2e53a3b1be5104618b35cb1216941e43419072d49c",
+ "transactionIndex": "0x71",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x3f8739",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xb64f2347752192f51930ad6ad3bea0b3a2074fac"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x108f337",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xdd953eb1dafbdb036b436d2cd1fa8c430bfb3a4cf2effb1924a161d570ca1bda",
+ "transactionIndex": "0x72",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x4d2eb",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x12fe22572873d18764df0c999b6c998bfab247fb"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x141080b",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xda",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673"],
+ "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000012fe22572873d18764df0c999b6c998bfab247fb0000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000a80000000000000000000000000e17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000091d14854000000000000000000000000000000000000000000000000000000008456cb59000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000008bb9c5bf00000000000000000000000000000000000000000000000000000000d547741f000000000000000000000000000000000000000000000000000000001e4e0091000000000000000000000000000000000000000000000000000000003f4ba83a00000000000000000000000000000000000000000000000000000000000000000000000000000000d3c81bd07948a38546bca894f8bfecb5526137980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000d11b60c336a8416162272475ff9df572e516fc51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000e9f3299b9443d3d5130771f26b7e18a2a7aa9db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000291a47c90400000000000000000000000000000000000000000000000000000000421e108c0000000000000000000000000000000000000000000000000000000091df16d300000000000000000000000000000000000000000000000000000000b0bd67b4000000000000000000000000000000000000000000000000000000008b38ebb300000000000000000000000000000000000000000000000000000000ebef28a700000000000000000000000000000000000000000000000000000000017df32700000000000000000000000000000000000000000000000000000000fbff3a4100000000000000000000000000000000000000000000000000000000e0ee685500000000000000000000000000000000000000000000000000000000bc3ea01800000000000000000000000000000000000000000000000000000000a9b8b79600000000000000000000000000000000000000000000000000000000214f788200000000000000000000000000000000000000000000000000000000b42165d000000000000000000000000000000000000000000000000000000000221e2e600000000000000000000000000000000000000000000000000000000033c5aa5700000000000000000000000000000000000000000000000000000000c0030add00000000000000000000000000000000000000000000000000000000dd390ea000000000000000000000000000000000000000000000000000000000ba2d8cdd0000000000000000000000000000000000000000000000000000000093e4e9ee000000000000000000000000000000000000000000000000000000001a867af500000000000000000000000000000000000000000000000000000000f986cd5700000000000000000000000000000000000000000000000000000000f6f172cb0000000000000000000000000000000000000000000000000000000015f9739800000000000000000000000000000000000000000000000000000000e2d443bd00000000000000000000000000000000000000000000000000000000016afee700000000000000000000000000000000000000000000000000000000be1d86e10000000000000000000000000000000000000000000000000000000092324611000000000000000000000000000000000000000000000000000000001f7e8c7e000000000000000000000000000000000000000000000000000000001c1f8aa3000000000000000000000000000000000000000000000000000000000083faee00000000000000000000000000000000000000000000000000000000147f1b96000000000000000000000000000000000000000000000000000000006605bfda00000000000000000000000000000000000000000000000000000000826d5b8b00000000000000000000000000000000000000000000000000000000d3815fb900000000000000000000000000000000000000000000000000000000965cc7ac000000000000000000000000000000000000000000000000000000003535f48b00000000000000000000000000000000000000000000000000000000ad3401ed0000000000000000000000000000000000000000000000000000000036c3df2400000000000000000000000000000000000000000000000000000000c5f956af000000000000000000000000000000000000000000000000000000008fe6368300000000000000000000000000000000000000000000000000000000e8b734240000000000000000000000000000000000000000000000000000000000000000000000000000000058860e93b6fc7a6e4abd0f5d851a88654a34d0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b64f2347752192f51930ad6ad3bea0b3a2074fac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000202ed4d2d6000000000000000000000000000000000000000000000000000000007efc918f0000000000000000000000000000000000000000000000000000000081f17467000000000000000000000000000000000000000000000000000000009aae55a70000000000000000000000000000000000000000000000000000000082ae27cd00000000000000000000000000000000000000000000000000000000b4eae1cb000000000000000000000000000000000000000000000000000000009c494373000000000000000000000000000000000000000000000000000000009d202bf8000000000000000000000000000000000000000000000000000000009b52b9a80000000000000000000000000000000000000000000000000000000017b2bffa0000000000000000000000000000000000000000000000000000000087dcd5fb000000000000000000000000000000000000000000000000000000005b0bdd8a0000000000000000000000000000000000000000000000000000000092beb04200000000000000000000000000000000000000000000000000000000245cd973000000000000000000000000000000000000000000000000000000002287fe4000000000000000000000000000000000000000000000000000000000c4cb35cf00000000000000000000000000000000000000000000000000000000edecef95000000000000000000000000000000000000000000000000000000007e625a550000000000000000000000000000000000000000000000000000000030bbe58500000000000000000000000000000000000000000000000000000000de858d7c000000000000000000000000000000000000000000000000000000006060663e00000000000000000000000000000000000000000000000000000000a14d1f7800000000000000000000000000000000000000000000000000000000cec10c11000000000000000000000000000000000000000000000000000000009b94607c00000000000000000000000000000000000000000000000000000000ecfd1a9e000000000000000000000000000000000000000000000000000000007853c88800000000000000000000000000000000000000000000000000000000cbd4e7b4000000000000000000000000000000000000000000000000000000008106016300000000000000000000000000000000000000000000000000000000b98c9fe600000000000000000000000000000000000000000000000000000000aeaf4f0400000000000000000000000000000000000000000000000000000000040da68500000000000000000000000000000000000000000000000000000000edc8d27d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243cfffd39000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000000000000000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdb",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdc",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdd",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0xd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xde",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdf",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004100000000000000000000000000000000000000000800000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000081000000000800000000000000100000020000000000001000000800000010000000000000000000000000400020000000000000000000000000008000800000000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000200000000000000000400000000000000000100002000000020000000000000008000000000000000000000000400800000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x3814d4",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x1425043",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x56be8eb80be13dc0436d0c942e8acc83862b112bfb0731b42ca6bf120054001b",
+ "transactionIndex": "0x74",
+ "logIndex": "0xe0",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004100000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000001000000000000010000000000040000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000400000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x56be8eb80be13dc0436d0c942e8acc83862b112bfb0731b42ca6bf120054001b",
+ "transactionIndex": "0x74",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x14838",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x143987b",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0xd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xacff54d7f5e37e2dfc5f3571b049b739d854cd8e794a2f800970c1f6fb9887df",
+ "transactionIndex": "0x75",
+ "logIndex": "0xe1",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001000000000000000000000000040000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000200000000000000000400000000000000000100000000000000000000000000008000000000000000000000000000800000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xacff54d7f5e37e2dfc5f3571b049b739d854cd8e794a2f800970c1f6fb9887df",
+ "transactionIndex": "0x75",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x14838",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14a91cf",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x8b7c0241c36b5eeb6e8efd2045c7d973d8998316e13ba3fc7dc99b78d3b8ec34",
+ "transactionIndex": "0x76",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x6f954",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14b70d4",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x088e9476d8b4139e22c8e66b078291edda3cd924ce0b0e7193f2a38e293e70ee"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xdb5488814de8a7f72a3170b7ef2a05b9a86ef6337764913dd43a3b6a53b7c4ab",
+ "transactionIndex": "0x77",
+ "logIndex": "0xe2",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xdb5488814de8a7f72a3170b7ef2a05b9a86ef6337764913dd43a3b6a53b7c4ab",
+ "transactionIndex": "0x77",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xdf05",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14c0cef",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f45"],
+ "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xcc2d6206a1dc7ec167dbc0f8f1f8f99432e5ce40055fc5ab11c4a471f4369a5f",
+ "transactionIndex": "0x78",
+ "logIndex": "0xe3",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000020000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xcc2d6206a1dc7ec167dbc0f8f1f8f99432e5ce40055fc5ab11c4a471f4369a5f",
+ "transactionIndex": "0x78",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x9c1b",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14cd999",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x8902fd14f40c20383dcae5d0f2b3b06b9973c89cac3e900cf9a999830277e8e6"],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000002",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x38f11c495a9932f57aededd4600e0814cbe503bae2fd2e9131ea2d462001a35c",
+ "transactionIndex": "0x79",
+ "logIndex": "0xe4",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000400000000000000000000000000000000000000000000000000000100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x38f11c495a9932f57aededd4600e0814cbe503bae2fd2e9131ea2d462001a35c",
+ "transactionIndex": "0x79",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xccaa",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14dfe6d",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x08f944f25b910c541435bcde52d233072e903b37afc29bc8b5787b6e74d82c1a"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000f695000000000000000000000000000000000000000000000000000000000000f1b30",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x243bebc21d94c75a0535bbd107b62ecf1f1cd3ebf01a97b5fb7ce59b5980a21d",
+ "transactionIndex": "0x7a",
+ "logIndex": "0xe5",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x243bebc21d94c75a0535bbd107b62ecf1f1cd3ebf01a97b5fb7ce59b5980a21d",
+ "transactionIndex": "0x7a",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x124d4",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14ecb60",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x8a77c775772f19a095a743319ccdc8208b70389844786995a8ca94a4f6a8dd02"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000e7ef0",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xe786a6732987d10d4b0575a99b6246d6d86992c84eefc876fa3a4b61cfb1213c",
+ "transactionIndex": "0x7b",
+ "logIndex": "0xe6",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000010000000000020000000",
+ "type": "0x2",
+ "transactionHash": "0xe786a6732987d10d4b0575a99b6246d6d86992c84eefc876fa3a4b61cfb1213c",
+ "transactionIndex": "0x7b",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xccf3",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x17e7e06",
+ "logs": [
+ {
+ "address": "0x7745a062c0a8aaefaa7e7df1e1aabbbafc988972",
+ "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000ff",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x30db3b6f8445902510a739692dd04d981f8d860a5f1f8654e65371aee14d9114",
+ "transactionIndex": "0x7c",
+ "logIndex": "0xe7",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000080000020000000000000000000000000000001000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x30db3b6f8445902510a739692dd04d981f8d860a5f1f8654e65371aee14d9114",
+ "transactionIndex": "0x7c",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x2fb2a6",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x7745a062c0a8aaefaa7e7df1e1aabbbafc988972"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x1832d0d",
+ "logs": [
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": [
+ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
+ "0x0000000000000000000000007745a062c0a8aaefaa7e7df1e1aabbbafc988972"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionIndex": "0x7d",
+ "logIndex": "0xe8",
+ "removed": false
+ },
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000001",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionIndex": "0x7d",
+ "logIndex": "0xe9",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000400000000000000000800000008000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000002000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionIndex": "0x7d",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x4af07",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x183f613",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xed36cfc26960d8bd74f7a170b6a0d3f9178b2e762438316637abb545ff659b7c",
+ "transactionIndex": "0x7e",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xc906",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x18556cb",
+ "logs": [
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": [
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x00000000000000000000000000000000000000000000054b40b1f852bda00000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionIndex": "0x7f",
+ "logIndex": "0xea",
+ "removed": false
+ },
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": [
+ "0xb1233017d63154bc561d57c16f7b6a55e2e1acd7fcac94045a9f35fb31a850ca",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x00000000000000000000000000000000000000000000054b40b1f852bda00000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionIndex": "0x7f",
+ "logIndex": "0xeb",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000800000000000010000000000000000000000800000000000000000000000000000008000000000000000000000000000000000000000000100000030000000000001000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000800000000000010000000000020000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionIndex": "0x7f",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x160b8",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x75e007",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x9c42f4d9153d55d78cf2011cd58875a5b9a8b1a30b7d0e7857d4fd6930016122"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0xdd23c73480e78a237032683322420b848b34320b6322ae37a01e94f6d6024fa5",
+ "transactionIndex": "0x5d",
+ "logIndex": "0xc5",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xdd23c73480e78a237032683322420b848b34320b6322ae37a01e94f6d6024fa5",
+ "transactionIndex": "0x5d",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x112de",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x76dd52",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x16374e3dc228b497b5a9b2dff5883c395120625fbe7e794fdcc5d305ce13ed07"],
+ "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f391a",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x1ba1babc2b61397f3e23f7006a6e030a0bd9293a1c34325a43f93d4529b66f61",
+ "transactionIndex": "0x5e",
+ "logIndex": "0xc6",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020020000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x1ba1babc2b61397f3e23f7006a6e030a0bd9293a1c34325a43f93d4529b66f61",
+ "transactionIndex": "0x5e",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xfd4b",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x780386",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x78293bd51057152112290a42345ccd9387562eac811030334ea757f4d49bdd23"],
+ "data": "0x0000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x8aaf682c47063531c0721ffca52534f5fbaf1e640febe3df6f65ad64683c4f84",
+ "transactionIndex": "0x5f",
+ "logIndex": "0xc7",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000002080000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x8aaf682c47063531c0721ffca52534f5fbaf1e640febe3df6f65ad64683c4f84",
+ "transactionIndex": "0x5f",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x12634",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xc9d4a9",
+ "logs": [
+ {
+ "address": "0xcc68509f9ca0e1ed119eac7c468ec1b1c42f384f",
+ "topics": [
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x0000000000000000000000006a8cbed756804b16e05e741edabd5cb544ae21bf"
+ ],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionIndex": "0x60",
+ "logIndex": "0xc8",
+ "removed": false
+ },
+ {
+ "address": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "topics": ["0xd1d60d4611e4091bb2e5f699eeb79136c21ac2305ad609f3de569afc3471eecc"],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000000000000000000000020000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionIndex": "0x60",
+ "logIndex": "0xc9",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000800000000000040000000000000000000000000000000000000000000080000002000000000000000000000000000000000000000000000000000000000000080000008000000000000000000000000000000000000000000000000020002000000000000000800000000000000000000000010000000000000000000000000000000000004000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000002000000040000000000000000000000000000001000000000000020800000000000000000000000000000000000000010000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionIndex": "0x60",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x51d123",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xca9db1",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x6ec39d56006098dfab8f892bf2584c2df0cdbbdba32790318b4e7a7bd3a1069b",
+ "transactionIndex": "0x61",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc908",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xcb6692",
+ "logs": [
+ {
+ "address": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x3a2e010201653e4743db35ee85e81b63eb19cf8948f24794ef2b4dba5ecf49c9",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0xc140cd970fd44fbe40cd8cf44d599756778eb631c5c62bbd2e2f4791efbd31f1",
+ "transactionIndex": "0x62",
+ "logIndex": "0xca",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000020000000000000000000100000000000000000000000000000100000000000000000001000000000000000000000000040000000000000000200000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000800000000000000000000100000080000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xc140cd970fd44fbe40cd8cf44d599756778eb631c5c62bbd2e2f4791efbd31f1",
+ "transactionIndex": "0x62",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc8e1",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xcc2f73",
+ "logs": [
+ {
+ "address": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0xa3405bb4244d0786f3e4178acef3953ebb3f56c1e97e9530871f50739923c1cf",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x6d154269fb29eefff3c1cbbcdeab165cb2bb1b421df7ce1dbbaf950e22e62169",
+ "transactionIndex": "0x63",
+ "logIndex": "0xcb",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000020000000000000000000000000800000000000000000000000100000000000000000001000000000000000000000000040000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040000000000000000000000000000000000000800000000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x6d154269fb29eefff3c1cbbcdeab165cb2bb1b421df7ce1dbbaf950e22e62169",
+ "transactionIndex": "0x63",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc8e1",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xccf858",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xc3ec04777c62001f9020f9caaaccf7b8b92d88b9b006da09643da9abad39aa8a",
+ "transactionIndex": "0x64",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc8e5",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xce1e5f",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0xe6bcf4a564a699a1c83d282eab21db81fe3ef3c3f867c402e63d074bb77925ff"],
+ "data": "0x0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000e10",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0xa77b0dbf15da5c7707c0a2ab5e056386f75b0172dca10f9cf3f0631930bd40b4",
+ "transactionIndex": "0x65",
+ "logIndex": "0xcc",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000010000000080001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xa77b0dbf15da5c7707c0a2ab5e056386f75b0172dca10f9cf3f0631930bd40b4",
+ "transactionIndex": "0x65",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x12607",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xceec4e",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0xdac3a48dff76eec0a284b649cfb07035804ede2892dbaf7e72050756144fbb8c"],
+ "data": "0x000000000000000000000000acdc85afcd8b83eb171affcbe29fad204f6ae45c",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x3882a2c08ecb242154d48ddbe6a5285b48694ee91829781e4634c6aa7e3fd7ef",
+ "transactionIndex": "0x66",
+ "logIndex": "0xcd",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x3882a2c08ecb242154d48ddbe6a5285b48694ee91829781e4634c6aa7e3fd7ef",
+ "transactionIndex": "0x66",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xcdef",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ }
+ ],
+ "libraries": [],
+ "pending": [],
+ "returns": {},
+ "timestamp": 1715578665,
+ "chain": 1,
+ "commit": "5db9383a"
+}
diff --git a/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json b/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json
new file mode 100644
index 000000000..aa35ab295
--- /dev/null
+++ b/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json
@@ -0,0 +1,1448 @@
+{
+ "transactions": [
+ {
+ "hash": "0x29d4c9a8b3b5b9480032ac1ee2374be917a6f5fd22a3f5db882d819be6b9b3bb",
+ "transactionType": "CREATE",
+ "contractName": "AccessControlFacet",
+ "contractAddress": "0xe17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x100066",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50610db9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635c975abb116100765780638bb9c5bf1161005b5780638bb9c5bf1461011e57806391d1485414610131578063d547741f1461014457600080fd5b80635c975abb146100fe5780638456cb591461011657600080fd5b80631e4e0091146100a8578063248a9ca3146100bd5780632f2ff15d146100e35780633f4ba83a146100f6575b600080fd5b6100bb6100b6366004610b10565b610157565b005b6100d06100cb366004610b32565b6101db565b6040519081526020015b60405180910390f35b6100bb6100f1366004610b4b565b6101ec565b6100bb61020d565b6101066102f4565b60405190151581526020016100da565b6100bb610307565b6100bb61012c366004610b32565b6103ed565b61010661013f366004610b4b565b6103f9565b6100bb610152366004610b4b565b61040c565b610162600033610428565b6101cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064015b60405180910390fd5b6101d7828261044b565b5050565b60006101e68261046b565b92915050565b6101f58261046b565b6101fe81610489565b6102088383610493565b505050565b60165460ff16610279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016101c4565b610284600033610428565b6102ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064016101c4565b6102f26104fe565b565b600061030260165460ff1690565b905090565b60165460ff1615610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016101c4565b61037f600033610428565b6103e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064016101c4565b6102f261055c565b6103f6816105b7565b50565b60006104058383610428565b9392505050565b6104158261046b565b61041e81610489565b61020883836105bd565b600061040582610436610628565b6000868152602091909152604090209061067e565b80610454610628565b600093845260205260409092206002019190915550565b6000610475610628565b600092835260205250604090206002015490565b6103f681336106ad565b6104b48161049f610628565b60008581526020919091526040902090610754565b50604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610552565b6103f681335b6105de816105c9610628565b60008581526020919091526040902090610776565b50604051339073ffffffffffffffffffffffffffffffffffffffff83169084907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90600090a45050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061067760017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd77610bc3565b1692915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610405565b6106b78282610428565b6101d7576106da8173ffffffffffffffffffffffffffffffffffffffff16610798565b6106e58360206107b7565b6040516020016106f6929190610bfa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101c491600401610c7b565b60006104058373ffffffffffffffffffffffffffffffffffffffff84166109ce565b60006104058373ffffffffffffffffffffffffffffffffffffffff8416610a1d565b60606101e673ffffffffffffffffffffffffffffffffffffffff831660145b606060006107c6836002610ccc565b6107d1906002610ce3565b67ffffffffffffffff8111156107e9576107e9610cf6565b6040519080825280601f01601f191660200182016040528015610813576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084a5761084a610d25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108ad576108ad610d25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600160028402015b6001811115610995577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061092257610922610d25565b1a60f81b82828151811061093857610938610d25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016108e4565b508315610405576040517fc913478500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600183016020526040812054610a15575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556101e6565b5060006101e6565b60008181526001830160205260408120548015610b06576000610a41600183610bc3565b8554909150600090610a5590600190610bc3565b9050818114610aba576000866000018281548110610a7557610a75610d25565b9060005260206000200154905080876000018481548110610a9857610a98610d25565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610acb57610acb610d54565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506101e6565b60009150506101e6565b60008060408385031215610b2357600080fd5b50508035926020909101359150565b600060208284031215610b4457600080fd5b5035919050565b60008060408385031215610b5e57600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff81168114610b8957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101e6576101e6610b94565b60005b83811015610bf1578181015183820152602001610bd9565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610c32816017850160208801610bd6565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351610c6f816028840160208801610bd6565b01602801949350505050565b6020815260008251806020840152610c9a816040850160208701610bd6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80820281158282048414176101e6576101e6610b94565b808201808211156101e6576101e6610b94565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212205bde9c390867f57489d1468716558e95e312be2323121c8a6a186414406ffd7464736f6c63430008130033",
+ "nonce": "0x44d",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x569b506b9a9876af9d309da49dcfd4c34de030f61ab3227fb9f3e751b03c7cbd",
+ "transactionType": "CREATE",
+ "contractName": "DiamondCutFacet",
+ "contractAddress": "0xd3c81bd07948a38546bca894f8bfecb552613798",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x1fdf7e",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50611c5f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004611589565b610045565b005b61004d61009e565b61009761005a8587611706565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061015592505050565b5050505050565b6100a6610396565b6004015473ffffffffffffffffffffffffffffffffffffffff163314610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201527f657200000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b565b60005b835181101561034b57600084828151811061017557610175611862565b60200260200101516020015190506000600281111561019657610196611891565b8160028111156101a8576101a8611891565b036101f6576101f18583815181106101c2576101c2611862565b6020026020010151600001518684815181106101e0576101e0611862565b6020026020010151604001516103ec565b610338565b600181600281111561020a5761020a611891565b03610253576101f185838151811061022457610224611862565b60200260200101516000015186848151811061024257610242611862565b602002602001015160400151610786565b600281600281111561026757610267611891565b036102b0576101f185838151811061028157610281611862565b60200260200101516000015186848151811061029f5761029f611862565b602002602001015160400151610b30565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e00000000000000000000000000000000000000000000000000606482015260840161014a565b5080610343816118ef565b915050610158565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161037f93929190611995565b60405180910390a16103918282610d0e565b505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006103e560017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c611afd565b1692915050565b600081511161047d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161014a565b6000610487610396565b905073ffffffffffffffffffffffffffffffffffffffff831661052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f6520616464726573732830290000000000000000000000000000000000000000606482015260840161014a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600182016020526040812054906bffffffffffffffffffffffff82169003610574576105748285610e07565b60005b835181101561009757600084828151811061059457610594611862565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff168015610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840161014a565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790558361076e81611b16565b9450505050808061077e906118ef565b915050610577565b6000815111610817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161014a565b6000610821610396565b905073ffffffffffffffffffffffffffffffffffffffff83166108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f6520616464726573732830290000000000000000000000000000000000000000606482015260840161014a565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600182016020526040812054906bffffffffffffffffffffffff8216900361090e5761090e8285610e07565b60005b835181101561009757600084828151811061092e5761092e611862565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff9081169087168103610a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161014a565b610a23858284610e96565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610b1881611b16565b94505050508080610b28906118ef565b915050610911565b6000815111610bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f20637574000000000000000000000000000000000000000000606482015260840161014a565b6000610bcb610396565b905073ffffffffffffffffffffffffffffffffffffffff831615610c71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d757374206265206164647265737328302900000000000000000000606482015260840161014a565b60005b8251811015610d08576000838281518110610c9157610c91611862565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16610cf3848284610e96565b50508080610d00906118ef565b915050610c74565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610d2d575050565b610d4f82604051806060016040528060288152602001611bde602891396114dc565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610d779190611b41565b600060405180830381855af49150503d8060008114610db2576040519150601f19603f3d011682016040523d82523d6000602084013e610db7565b606091505b509150915081610d0857805115610dd15780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040161014a929190611b5d565b610e2981604051806060016040528060248152602001611c06602491396114dc565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216610f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161014a565b7fe06ce3e4000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160161100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f7665206469616d60448201527f6f6e644375742066756e6374696f6e0000000000000000000000000000000000606482015260840161014a565b3073ffffffffffffffffffffffffffffffffffffffff8316036110af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e000000000000000000000000000000000000606482015260840161014a565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16929161113991611afd565b90508082146112805773ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040812080548390811061117b5761117b611862565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b9250829190859081106111d9576111d9611862565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604090208054806112b6576112b6611b94565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff00000000000000000000000000000000000000000000000000000000851682528690526040812081905581900361009757600285015460009061134f90600190611afd565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260018089016020526040909120015490915080821461143d57600087600201838154811061139b5761139b611862565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff90921692508291849081106113d9576113d9611862565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b8660020180548061145057611450611b94565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b813b8181610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014a9190611bc3565b803573ffffffffffffffffffffffffffffffffffffffff8116811461153b57600080fd5b919050565b60008083601f84011261155257600080fd5b50813567ffffffffffffffff81111561156a57600080fd5b60208301915083602082850101111561158257600080fd5b9250929050565b6000806000806000606086880312156115a157600080fd5b853567ffffffffffffffff808211156115b957600080fd5b818801915088601f8301126115cd57600080fd5b8135818111156115dc57600080fd5b8960208260051b85010111156115f157600080fd5b6020830197508096505061160760208901611517565b9450604088013591508082111561161d57600080fd5b5061162a88828901611540565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561168d5761168d61163b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116da576116da61163b565b604052919050565b600067ffffffffffffffff8211156116fc576116fc61163b565b5060051b60200190565b6000611719611714846116e2565b611693565b83815260208082019190600586811b86013681111561173757600080fd5b865b8181101561185557803567ffffffffffffffff8082111561175a5760008081fd5b818a019150606082360312156117705760008081fd5b61177861166a565b61178183611517565b815286830135600381106117955760008081fd5b81880152604083810135838111156117ad5760008081fd5b939093019236601f8501126117c457600092508283fd5b833592506117d4611714846116e2565b83815292871b840188019288810190368511156117f15760008081fd5b948901945b8486101561183e5785357fffffffff000000000000000000000000000000000000000000000000000000008116811461182f5760008081fd5b825294890194908901906117f6565b918301919091525088525050948301948301611739565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611920576119206118c0565b5060010190565b60005b8381101561194257818101518382015260200161192a565b50506000910152565b60008151808452611963816020860160208601611927565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015611ac0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611a47577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015611aab5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611a69565b509785019795505050908201906001016119be565b505073ffffffffffffffffffffffffffffffffffffffff8a16908801528681036040880152611aef818961194b565b9a9950505050505050505050565b81810381811115611b1057611b106118c0565b92915050565b60006bffffffffffffffffffffffff808316818103611b3757611b376118c0565b6001019392505050565b60008251611b53818460208701611927565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611b8c604083018461194b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b602081526000611bd6602083018461194b565b939250505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220eae05efcfa957bc46cd14c4726ab743abce9656ca27cbbd398f07b8ed6c3bd4564736f6c63430008130033",
+ "nonce": "0x44e",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x1afc7573f218b35609513d77be2ca2392aa11440dc2490aaa16bb8ec3ba688fd",
+ "transactionType": "CREATE",
+ "contractName": "DiamondLoupeFacet",
+ "contractAddress": "0xd11b60c336a8416162272475ff9df572e516fc51",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x9abe5",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b506107e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637a0ed627116100505780637a0ed627146100a9578063adfca15e146100be578063cdffacc6146100de57600080fd5b806301ffc9a71461006c57806352ef6b2c14610094575b600080fd5b61007f61007a366004610521565b610116565b60405190151581526020015b60405180910390f35b61009c61015f565b60405161008b919061056a565b6100b16101d8565b60405161008b9190610621565b6100d16100cc3660046106c9565b6103a5565b60405161008b91906106ff565b6100f16100ec366004610521565b610471565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b6000806101216104cb565b7fffffffff00000000000000000000000000000000000000000000000000000000909316600090815260039093016020525050604090205460ff1690565b6060600061016b6104cb565b600281018054604080516020808402820181019092528281529394508301828280156101cd57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101a2575b505050505091505090565b606060006101e46104cb565b60028101549091508067ffffffffffffffff81111561020557610205610712565b60405190808252806020026020018201604052801561024b57816020015b6040805180820190915260008152606060208201528152602001906001900390816102235790505b50925060005b8181101561039f57600083600201828154811061027057610270610741565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808583815181106102b0576102b0610741565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561037157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161031e5790505b505050505085838151811061038857610388610741565b602090810291909101810151015250600101610251565b50505090565b606060006103b16104cb565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600182016020908152604091829020805483518184028101840190945280845293945091929083018282801561046457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104115790505b5050505050915050919050565b60008061047c6104cb565b7fffffffff0000000000000000000000000000000000000000000000000000000090931660009081526020939093525050604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061051a60017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c610770565b1692915050565b60006020828403121561053357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461056357600080fd5b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156105b857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610586565b50909695505050505050565b600081518084526020808501945080840160005b838110156106165781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016105d8565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156106bb578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528701518784018790526106a8878501826105c4565b9588019593505090860190600101610648565b509098975050505050505050565b6000602082840312156106db57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461056357600080fd5b60208152600061056360208301846105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103818111156107aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220e6b69c87b559650f830a1b81dcbc39f26769324b84b677adf39178afd0de48cf64736f6c63430008130033",
+ "nonce": "0x44f",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xf5c03465a68a86b700aba947ffdc09e320cfd13c4a659cb54b858141e604407c",
+ "transactionType": "CREATE",
+ "contractName": "ManagerFacet",
+ "contractAddress": "0x0e9f3299b9443d3d5130771f26b7e18a2a7aa9db",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x278882",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50612364806100206000396000f3fe608060405234801561001057600080fd5b50600436106102d25760003560e01c80639232461111610186578063c0030add116100e3578063e2d443bd11610097578063f6f172cb11610071578063f6f172cb1461067e578063f986cd5714610691578063fbff3a41146106a457600080fd5b8063e2d443bd1461062f578063e8b7342414610642578063ebef28a71461066057600080fd5b8063d3815fb9116100c8578063d3815fb9146105e0578063dd390ea0146105fe578063e0ee68551461061157600080fd5b8063c0030add146105af578063c5f956af146105c257600080fd5b8063b0bd67b41161013a578063ba2d8cdd1161011f578063ba2d8cdd1461056b578063bc3ea0181461057e578063be1d86e11461059c57600080fd5b8063b0bd67b41461052f578063b42165d01461054d57600080fd5b8063965cc7ac1161016b578063965cc7ac146104ba578063a9b8b796146104d8578063ad3401ed1461051157600080fd5b8063923246111461049457806393e4e9ee146104a757600080fd5b8063221e2e60116102345780636605bfda116101e85780638b38ebb3116101cd5780638b38ebb31461048e5780638fe636831461048e57806391df16d31461048e57600080fd5b80636605bfda14610468578063826d5b8b1461047b57600080fd5b80633535f48b116102195780633535f48b1461040e57806336c3df241461042c578063421e108c1461044a57600080fd5b8063221e2e60146103dd57806333c5aa57146103fb57600080fd5b80631a47c9041161028b5780631c1f8aa3116102705780631c1f8aa3146103995780631f7e8c7e146103ac578063214f7882146103bf57600080fd5b80631a47c904146103685780631a867af51461038657600080fd5b8063017df327116102bc578063017df327146102ff578063147f1b961461034257806315f973981461035557600080fd5b806283faee146102d7578063016afee7146102ec575b600080fd5b6102ea6102e5366004611fc7565b6106b7565b005b6102ea6102fa366004611feb565b610774565b60095473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6102ea610350366004611fc7565b610879565b6102ea610363366004611fc7565b610931565b60135473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610394366004611fc7565b6109e9565b6102ea6103a7366004611fc7565b610aa1565b6102ea6103ba366004611fc7565b610b59565b600e5473ffffffffffffffffffffffffffffffffffffffff16610319565b600d5473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610409366004611fc7565b610c11565b60065473ffffffffffffffffffffffffffffffffffffffff16610319565b600c5473ffffffffffffffffffffffffffffffffffffffff16610319565b60125473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610476366004611fc7565b610cc9565b6102ea610489366004611fc7565b610d81565b30610319565b6102ea6104a2366004611fc7565b610e39565b6102ea6104b5366004611fc7565b610ef1565b60085473ffffffffffffffffffffffffffffffffffffffff16610319565b6103196104e6366004611fc7565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152601560205260409020541690565b60055473ffffffffffffffffffffffffffffffffffffffff16610319565b60025473ffffffffffffffffffffffffffffffffffffffff16610319565b600b5473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea610579366004611fc7565b610fa9565b60015473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea6105aa366004611fc7565b611061565b6102ea6105bd366004611fc7565b611119565b600a5473ffffffffffffffffffffffffffffffffffffffff16610319565b60075473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea61060c366004611fc7565b6111d1565b60045473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea61063d366004611fc7565b611289565b60115473ffffffffffffffffffffffffffffffffffffffff16610319565b600f5473ffffffffffffffffffffffffffffffffffffffff16610319565b6102ea61068c366004611feb565b611341565b6102ea61069f366004611fc7565b611405565b6102ea6106b2366004612024565b6114bd565b6106c2600033611efa565b61072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064015b60405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61077f600033611efa565b6107e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b6001546040517fb6232c9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152838116602483015290911690819063b6232c9990604401600060405180830381600087803b15801561085c57600080fd5b505af1158015610870573d6000803e3d6000fd5b50505050505050565b610884600033611efa565b6108ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61093c600033611efa565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6109f4600033611efa565b610a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610aac600033611efa565b610b12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610b64600033611efa565b610bca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610c1c600033611efa565b610c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610cd4600033611efa565b610d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610d8c600033611efa565b610df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e44600033611efa565b610eaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610efc600033611efa565b610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610fb4600033611efa565b61101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61106c600033611efa565b6110d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611124600033611efa565b61118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6111dc600033611efa565b611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611294600033611efa565b6112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61134c600033611efa565b6113b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260156020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b611410600033611efa565b611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6114c8600033611efa565b61152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610724565b60008573ffffffffffffffffffffffffffffffffffffffff1663e339eb4f86600060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156115bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261160391908101906120d2565b600154604080517f95d89b41000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216916395d89b41916004808201926000929091908290030181865afa158015611673573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116b991908101906120d2565b6001546040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526117129493929173ffffffffffffffffffffffffffffffffffffffff16908a908a906004016121e7565b6020604051808303816000875af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190612247565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919250600091908616906370a0823190602401602060405180830381865afa1580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a9190612264565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561188e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b29190612264565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152600060248301529192509087169063095ea7b3906044016020604051808303816000875af115801561192b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194f919061227d565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905287169063095ea7b3906044016020604051808303816000875af11580156119c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e9919061227d565b506001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152600060248301529091169063095ea7b3906044016020604051808303816000875af1158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a87919061227d565b506001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b25919061227d565b506001546040517fc66106570000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9182169185169063c661065790602401602060405180830381865afa158015611b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbc9190612247565b73ffffffffffffffffffffffffffffffffffffffff16148015611c8657506040517fc66106570000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff808816919085169063c661065790602401602060405180830381865afa158015611c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6e9190612247565b73ffffffffffffffffffffffffffffffffffffffff16145b611cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d47523a20434f494e5f4f524445525f4d49534d4154434800000000000000006044820152606401610724565b60408051808201918290526001547f70a0823100000000000000000000000000000000000000000000000000000000909252306044820152600091819073ffffffffffffffffffffffffffffffffffffffff166370a0823160648301602060405180830381865afa158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d899190612264565b81526040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260209091019073ffffffffffffffffffffffffffffffffffffffff8a16906370a0823190602401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190612264565b9052600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a8116919091179091556040517f0c3e4b54000000000000000000000000000000000000000000000000000000008152919250851690630c3e4b5490611eab908490600090339060040161229f565b6020604051808303816000875af1158015611eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eee9190612264565b50505050505050505050565b6000611f4382611f08611f4c565b6000868152602091909152604090209073ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415155b90505b92915050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00611f9b60017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd776122f4565b1692915050565b73ffffffffffffffffffffffffffffffffffffffff81168114611fc457600080fd5b50565b600060208284031215611fd957600080fd5b8135611fe481611fa2565b9392505050565b60008060408385031215611ffe57600080fd5b823561200981611fa2565b9150602083013561201981611fa2565b809150509250929050565b600080600080600060a0868803121561203c57600080fd5b853561204781611fa2565b9450602086013561205781611fa2565b9350604086013561206781611fa2565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156120c95781810151838201526020016120b1565b50506000910152565b6000602082840312156120e457600080fd5b815167ffffffffffffffff808211156120fc57600080fd5b818401915084601f83011261211057600080fd5b8151818111156121225761212261207f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156121685761216861207f565b8160405282815287602084870101111561218157600080fd5b6121928360208301602088016120ae565b979650505050505050565b600081518084526121b58160208601602086016120ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff808916835260c0602084015261221760c084018961219d565b8381036040850152612229818961219d565b91909616606084015260808301949094525060a00152949350505050565b60006020828403121561225957600080fd5b8151611fe481611fa2565b60006020828403121561227657600080fd5b5051919050565b60006020828403121561228f57600080fd5b81518015158114611fe457600080fd5b60808101818560005b60028110156122c75781518352602092830192909101906001016122a8565b50505083604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b81810381811115611f46577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212204f9ccdf644aef54406cccef94ed16de7be826020fe145183708fadc9e6eaef4e64736f6c63430008130033",
+ "nonce": "0x450",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xd1ab4e2ee714a62be280b18b1c04b8a2e6ec63eddf8990e0bb88de7c70bc1a03",
+ "transactionType": "CREATE",
+ "contractName": "OwnershipFacet",
+ "contractAddress": "0x58860e93b6fc7a6e4abd0f5d851a88654a34d0c0",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x51752",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b506103b5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461006c575b600080fd5b610043610081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f61007a366004610302565b610090565b005b600061008b61014c565b905090565b73ffffffffffffffffffffffffffffffffffffffff8116610138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f776e65727368697046616365743a204e6577206f776e65722063616e6e6f7460448201527f20626520746865207a65726f206164647265737300000000000000000000000060648201526084015b60405180910390fd5b610140610175565b61014981610227565b50565b60006101566102ac565b6004015473ffffffffffffffffffffffffffffffffffffffff16919050565b61017d6102ac565b6004015473ffffffffffffffffffffffffffffffffffffffff163314610225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201527f6572000000000000000000000000000000000000000000000000000000000000606482015260840161012f565b565b60006102316102ac565b60048101805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006102fb60017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c61033f565b1692915050565b60006020828403121561031457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461033857600080fd5b9392505050565b81810381811115610379577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea264697066735822122005e30e5b5f63f7d5488f6ee88a05c89f44fcab3a4df62b42203c04b65f73be4f64736f6c63430008130033",
+ "nonce": "0x451",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x3c4a05d831ee1a3f2d1afe2e53a3b1be5104618b35cb1216941e43419072d49c",
+ "transactionType": "CREATE",
+ "contractName": "UbiquityPoolFacet",
+ "contractAddress": "0xb64f2347752192f51930ad6ad3bea0b3a2074fac",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x529630",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b50614a8e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80639aae55a71161010f578063b98c9fe6116100a2578063de858d7c11610071578063de858d7c14610446578063ecfd1a9e14610459578063edc8d27d1461046c578063edecef951461047f57600080fd5b8063b98c9fe6146103eb578063c4cb35cf146103f3578063cbd4e7b414610420578063cec10c111461043357600080fd5b80639d202bf8116100de5780639d202bf8146103aa578063a14d1f78146103bd578063aeaf4f04146103d0578063b4eae1cb146103e357600080fd5b80639aae55a7146103485780639b52b9a81461035b5780639b94607c1461038f5780639c494373146103a257600080fd5b80637853c8881161018757806381f174671161015657806381f17467146102f857806382ae27cd1461030d57806387dcd5fb1461032d57806392beb0421461034057600080fd5b80637853c888146102975780637e625a55146102aa5780637efc918f146102d257806381060163146102e557600080fd5b80632ed4d2d6116101c35780632ed4d2d61461025657806330bbe585146102695780635b0bdd8a1461027c5780636060663e1461028457600080fd5b8063040da685146101f557806317b2bffa1461020a5780632287fe4014610230578063245cd97314610243575b600080fd5b6102086102033660046140d5565b6104ad565b005b61021d610218366004614105565b610517565b6040519081526020015b60405180910390f35b61021d61023e366004614147565b610528565b61021d610251366004614162565b610533565b610208610264366004614147565b610546565b610208610277366004614147565b6105a9565b61021d610609565b610208610292366004614105565b610618565b6102086102a536600461418c565b610678565b6102bd6102b83660046141ae565b6106d9565b60408051928352602083019190915201610227565b6102086102e03660046141e0565b610770565b6102086102f3366004614162565b6107d7565b610300610838565b604051610227919061421c565b61032061031b366004614147565b610842565b60405161022791906142e4565b61021d61033b36600461418c565b6108f1565b61021d6108fd565b610208610356366004614105565b610907565b610363610910565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610227565b61020861039d366004614147565b610923565b61021d610983565b6102bd6103b8366004614105565b61098d565b6102086103cb366004614162565b610a1e565b6102086103de366004614105565b610a7f565b61021d610adf565b610363610ae9565b6103fb610af4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610227565b61020861042e366004614105565b610afe565b6102086104413660046143f9565b610b5e565b6102086104543660046141e0565b610bc0565b61020861046736600461418c565b610c22565b61020861047a366004614105565b610c83565b61049261048d366004614433565b610c8c565b60408051938452602084019290925290820152606001610227565b6104b8600033610d0f565b6105095760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e0000000060448201526064015b60405180910390fd5b6105138282610d32565b5050565b600061052282610ed9565b92915050565b600061052282610fbf565b600061053f8383610ff9565b9392505050565b610551600033610d0f565b61059d5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a68161103f565b50565b6105b4600033610d0f565b6106005760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a68161119f565b600061061361122e565b905090565b610623600033610d0f565b61066f5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a6816114dc565b610683600033610d0f565b6106cf5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105138282611573565b6000805481907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0161074d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610500565b600260005561075e868686866115c4565b60016000559097909650945050505050565b61077b600033610d0f565b6107c75760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6107d2838383611b7c565b505050565b6107e2600033610d0f565b61082e5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105138282611f44565b6060610613611fd3565b6108e8604051806101c001604052806000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160008152602001600081525090565b6105228261204c565b600061053f83836124a6565b600061061361251a565b6105a6816127de565b60008061091b612a88565b915091509091565b61092e600033610d0f565b61097a5760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a681612ac1565b6000610613612b43565b6000805481907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01610a015760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610500565b6002600055610a0f83612bea565b60016000559094909350915050565b610a29600033610d0f565b610a755760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105138282612ed4565b610a8a600033610d0f565b610ad65760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a681612f63565b6000610613613025565b60008061091b61303a565b6000610613613073565b610b09600033610d0f565b610b555760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6105a68161309e565b610b69600033610d0f565b610bb55760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6107d28383836130e2565b610bcb600033610d0f565b610c175760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b6107d283838361317d565b610c2d600033610d0f565b610c795760405162461bcd60e51b815260206004820152601c60248201527f4d616e616765723a2043616c6c6572206973206e6f742061646d696e000000006044820152606401610500565b61051382826132ee565b6105a681613358565b60008060006002600080015403610ce55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610500565b6002600055610cf88989898989896135e1565b6001600055919b909a509098509650505050505050565b600061053f82610d1d613b63565b60008681526020919091526040902090613bb9565b6000610d3c613be8565b90508160ff16600003610dc257806016018381548110610d5e57610d5e614488565b90600052602060002090602091828204019190069054906101000a900460ff1615816016018481548110610d9457610d94614488565b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550610e98565b8160ff16600103610e1857806017018381548110610de257610de2614488565b90600052602060002090602091828204019190069054906101000a900460ff1615816017018481548110610d9457610d94614488565b8160ff16600203610e9857806015018381548110610e3857610e38614488565b90600052602060002090602091828204019190069054906101000a900460ff1615816015018481548110610e6e57610e6e614488565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055505b6040805184815260ff841660208201527fbec79b11b630e33aa3659219a5b4daa7afe827632aa430038e143137f8fe947c91015b60405180910390a1505050565b600080610ee4613be8565b905061053f816011018481548110610efe57610efe614488565b9060005260206000200154826001018581548110610f1e57610f1e614488565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb991906144b7565b90613c37565b600080610fca613be8565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600f9093016020525050604090205490565b600080611004613be8565b73ffffffffffffffffffffffffffffffffffffffff949094166000908152600e90940160209081526040808620948652939052505090205490565b73ffffffffffffffffffffffffffffffffffffffff81166110a25760405162461bcd60e51b815260206004820152601560248201527f5a65726f206164647265737320646574656374656400000000000000000000006044820152606401610500565b60008173ffffffffffffffffffffffffffffffffffffffff16639c84d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111391906144b7565b9050600061111f613be8565b73ffffffffffffffffffffffffffffffffffffffff84166000818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182529192507f52f81308a3d2d4628c2f3d497cfa085e5607381f7880df16645d1bffd1f3804d9101610ecc565b60006111a9613be8565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182529192507f2aa8eaa3c2488ba6ac1471de9d1eb0fc21ad69b649415dbdf94467ca4559a21691015b60405180910390a15050565b600080600061123b613be8565b9050600081601b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906144ea565b5093505092505060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611350919061453a565b60ff169050600083136113a55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420537461626c652f55534420707269636500000000000000006044820152606401610500565b601c8501546113b48342614586565b106114015760405162461bcd60e51b815260206004820152601560248201527f5374616c6520537461626c652f555344206461746100000000000000000000006044820152606401610500565b60088601546040517f687276530000000000000000000000000000000000000000000000000000000081526000600482018190529173ffffffffffffffffffffffffffffffffffffffff1690636872765390602401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149791906144b7565b90506114d0670de0b6b3a76400006114ca6114b385600a6146b9565b6114ca886114c487620f4240613c43565b90613c43565b90613c4f565b97505050505050505090565b620f424081111561152f5760405162461bcd60e51b815260206004820152601a60248201527f436f6c6c61746572616c20726174696f20746f6f206c617267650000000000006044820152606401610500565b6000611539613be8565b600681018390556040518381529091507f8a77c775772f19a095a743319ccdc8208b70389844786995a8ca94a4f6a8dd0290602001611222565b600061157d613be8565b600c8101849055600d810183905560408051858152602081018590529192507f08f944f25b910c541435bcde52d233072e903b37afc29bc8b5787b6e74d82c1a9101610ecc565b6000808560006115d2613be8565b90508060080160008260010184815481106115ef576115ef614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff166116705760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b600061167a613be8565b905080601701898154811061169157611691614488565b60009182526020918290209181049091015460ff601f9092166101000a900416156116fe5760405162461bcd60e51b815260206004820152601360248201527f52656465656d696e6720697320706175736564000000000000000000000000006044820152606401610500565b80600d015461170b61122e565b11156117595760405162461bcd60e51b815260206004820152601560248201527f446f6c6c617220707269636520746f6f206869676800000000000000000000006044820152606401610500565b60006117a1620f42406114ca61179a856014018e8154811061177d5761177d614488565b9060005260206000200154620f4240613c3790919063ffffffff16565b8c90613c43565b90506117ac8a613358565b6006820154620f424081106117d0576117c58b836124a6565b965060009550611837565b806000036117fb57600096506117f46117e761251a565b6114ca84620f4240613c43565b9550611837565b611810620f42406114ca836114c48f876124a6565b965061183461181d61251a565b6114ca61182d620f424085613c37565b8590613c43565b95505b61186f836011018c8154811061184f5761184f614488565b9060005260206000200154846001018d81548110610f1e57610f1e614488565b8711156118be5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420706f6f6c20636f6c6c61746572616c000000006044820152606401610500565b8787101561190e5760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c20736c697070616765000000000000000000000000006044820152606401610500565b8886101561195e5760405162461bcd60e51b815260206004820152601360248201527f476f7665726e616e636520736c697070616765000000000000000000000000006044820152606401610500565b336000908152600e8401602090815260408083208e84529091529020546119859088613c5b565b336000908152600e8501602090815260408083208f84529091529020556011830180546119d79189918e9081106119be576119be614488565b9060005260206000200154613c5b90919063ffffffff16565b836011018c815481106119ec576119ec614488565b6000918252602080832090910192909255338152600f85019091526040902054611a169087613c5b565b336000908152600f850160205260409020556012830154611a379087613c5b565b6012840155336000908152600b840160205260408120439055600101546040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018c905273ffffffffffffffffffffffffffffffffffffffff909116906379cc679090604401600060405180830381600087803b158015611ac357600080fd5b505af1158015611ad7573d6000803e3d6000fd5b50505050611ae3600090565b600b01546040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810188905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015611b5657600080fd5b505af1158015611b6a573d6000803e3d6000fd5b50505050505050505094509492505050565b611b8583613c67565b15611bd25760405162461bcd60e51b815260206004820152601860248201527f436f6c6c61746572616c20616c726561647920616464656400000000000000006044820152606401610500565b6000611bdc613be8565b60018181018054918201815560009081526020808220830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a1690811790915580835260028501825260408084208590556008860183529283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905582517f313ce567000000000000000000000000000000000000000000000000000000008152925194955092936009860193611d0193909263313ce567926004808401938290030181865afa158015611cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf6919061453a565b60129060ff16613c37565b81546001810183556000928352602083200155604080517f95d89b410000000000000000000000000000000000000000000000000000000081529051600785019273ffffffffffffffffffffffffffffffffffffffff8916926395d89b4192600480830193928290030181865afa158015611d80573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611dc691908101906146f4565b81546001810183556000928352602090922090910190611de69082614855565b505060118101805460018082018355600092835260208084209092018390556005840180548083018255908452828420620f42409101556013840180548083018255908452828420018390556014840180548083018255908452828420018390556016840180548083018255908452828420838204018054601f92831661010090810a60ff908102199092169092556017870180548086018255908752858720868204018054918516840a830219909116905560158701805480860182559087528587208682040180549190941690920a0219169055600a840180548083018255908452828420019490945560038301805480860182559083528183200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff96909616959095179094556004909101805492830181558152919091206201518091015550565b6000611f4e613be8565b601b810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155601c820184905560408051918252602082018590529192507f78293bd51057152112290a42345ccd9387562eac811030334ea757f4d49bdd239101610ecc565b60606000611fdf613be8565b6001810180546040805160208084028201810190925282815293945083018282801561204157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311612016575b505050505091505090565b6120f2604051806101c001604052806000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160001515815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160008152602001600081525090565b60006120fc613be8565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260088201602052604090205490915060ff166121765760405162461bcd60e51b815260206004820152601260248201527f496e76616c696420636f6c6c61746572616c00000000000000000000000000006044820152606401610500565b60008160020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050604051806101c001604052808281526020018360070183815481106121e3576121e3614488565b9060005260206000200180546121f8906147b4565b80601f0160208091040260200160405190810160405280929190818152602001828054612224906147b4565b80156122715780601f1061224657610100808354040283529160200191612271565b820191906000526020600020905b81548152906001019060200180831161225457829003601f168201915b505050505081526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018360030183815481106122ac576122ac614488565b6000918252602091829020015473ffffffffffffffffffffffffffffffffffffffff1682526004850180549290910191849081106122ec576122ec614488565b6000918252602080832090910154835273ffffffffffffffffffffffffffffffffffffffff881682526008860181526040918290205460ff161515908301526009850180549190920191908490811061234757612347614488565b9060005260206000200154815260200183600501838154811061236c5761236c614488565b9060005260206000200154815260200183600a01838154811061239157612391614488565b906000526020600020015481526020018360160183815481106123b6576123b6614488565b90600052602060002090602091828204019190069054906101000a900460ff16151581526020018360170183815481106123f2576123f2614488565b90600052602060002090602091828204019190069054906101000a900460ff161515815260200183601501838154811061242e5761242e614488565b90600052602060002090602091828204019190069054906101000a900460ff161515815260200183601301838154811061246a5761246a614488565b9060005260206000200154815260200183601401838154811061248f5761248f614488565b906000526020600020015481525092505050919050565b6000806124b1613be8565b90506125128160050185815481106124cb576124cb614488565b90600052602060002001546114ca8360090187815481106124ee576124ee614488565b9060005260206000200154600a61250591906146b9565b6114ca87620f4240613c43565b949350505050565b600080612525613be8565b905060008160180160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561259e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c291906144ea565b5093505092505060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263a919061453a565b60ff1690506000831361268f5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207072696365000000000000000000000000000000000000006044820152606401610500565b601985015461269e8342614586565b106126eb5760405162461bcd60e51b815260206004820152600a60248201527f5374616c652064617461000000000000000000000000000000000000000000006044820152606401610500565b60006127086126fb83600a6146b9565b6114ca86620f4240613c43565b9050600086601a0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386fc88d36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561277b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279f91906144b7565b905060006127b9826114ca670de0b6b3a764000080613c43565b90506127d1670de0b6b3a76400006114ca8386613c43565b9850505050505050505090565b60006127e8613be8565b3360009081526020829052604090205490915060ff1661284a5760405162461bcd60e51b815260206004820152601160248201527f4e6f7420616e20414d4f204d696e7465720000000000000000000000000000006044820152606401610500565b6000612854613be8565b905060003373ffffffffffffffffffffffffffffffffffffffff1663fe93de1f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c791906144b7565b90508160150181815481106128de576128de614488565b60009182526020918290209181049091015460ff601f9092166101000a9004161561294b5760405162461bcd60e51b815260206004820152601360248201527f426f72726f77696e6720697320706175736564000000000000000000000000006044820152606401610500565b81600801600083600101838154811061296657612966614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff166129e75760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b6129f081610ed9565b841115612a3f5760405162461bcd60e51b815260206004820152601a60248201527f4e6f7420656e6f756768206672656520636f6c6c61746572616c0000000000006044820152606401610500565b612a823385846001018481548110612a5957612a59614488565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190613d62565b50505050565b6000806000612a95613be8565b601881015460199091015473ffffffffffffffffffffffffffffffffffffffff90911694909350915050565b6000612acb613be8565b601a810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040519081529091507fdac3a48dff76eec0a284b649cfb07035804ede2892dbaf7e72050756144fbb8c90602001611222565b600080612b4e613be8565b600181015460009350909150825b81811015612be457612bc6620f42406114ca856005018481548110612b8357612b83614488565b90600052602060002001546114c4876009018681548110612ba657612ba6614488565b9060005260206000200154600a612bbd91906146b9565b6114c487610ed9565b612bd0908561496f565b935080612bdc81614982565b915050612b5c565b50505090565b600080826000612bf8613be8565b9050806008016000826001018481548110612c1557612c15614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff16612c965760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b6000612ca0613be8565b9050806017018681548110612cb757612cb7614488565b60009182526020918290209181049091015460ff601f9092166101000a90041615612d245760405162461bcd60e51b815260206004820152601360248201527f52656465656d696e6720697320706175736564000000000000000000000000006044820152606401610500565b6010810154336000908152600b830160205260409020544391612d479190613c5b565b10612d945760405162461bcd60e51b815260206004820152601e60248201527f546f6f20736f6f6e20746f20636f6c6c65637420726564656d7074696f6e00006044820152606401610500565b336000908152600f82016020526040812054819015612ddf57336000908152600f84016020526040812080549190556012840154909750612dd59088613c37565b6012840155600191505b336000908152600e8401602090815260408083208b845290915290205415612e8057336000908152600e8401602090815260408083208b845290915281208054919055601184018054919750612e5b918891908b908110612e4257612e42614488565b9060005260206000200154613c3790919063ffffffff16565b836011018981548110612e7057612e70614488565b6000918252602090912001555060015b8115612eaa57600b54612eaa9073ffffffffffffffffffffffffffffffffffffffff163389613d62565b8015612eca57612eca3387856001018b81548110612a5957612a59614488565b5050505050915091565b6000612ede613be8565b6018810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091556019820184905560408051918252602082018590529192507fe6bcf4a564a699a1c83d282eab21db81fe3ef3c3f867c402e63d074bb77925ff9101610ecc565b6000612f6d613be8565b90506000816001018381548110612f8657612f86614488565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16808352600885018252604092839020805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921682179092558451888152911615159281019290925292507f088e9476d8b4139e22c8e66b078291edda3cd924ce0b0e7193f2a38e293e70ee9101610ecc565b600080613030613be8565b6006015492915050565b6000806000613047613be8565b601b810154601c9091015473ffffffffffffffffffffffffffffffffffffffff90911694909350915050565b60008061307e613be8565b601a015473ffffffffffffffffffffffffffffffffffffffff1692915050565b60006130a8613be8565b601081018390556040518381529091507f8902fd14f40c20383dcae5d0f2b3b06b9973c89cac3e900cf9a999830277e8e690602001611222565b60006130ec613be8565b90508281601301858154811061310457613104614488565b90600052602060002001819055508181601401858154811061312857613128614488565b600091825260209182902001919091556040805186815291820185905281018390527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a150505050565b61318683613c67565b6131d25760405162461bcd60e51b815260206004820152601960248201527f436f6c6c61746572616c20646f6573206e6f74206578697374000000000000006044820152606401610500565b60006131dc613be8565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260028201602052604090205460038201805492935090918591908390811061322257613222614488565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508282600401828154811061328057613280614488565b600091825260209182902001919091556040805183815273ffffffffffffffffffffffffffffffffffffffff87169281019290925281018490527f9c42f4d9153d55d78cf2011cd58875a5b9a8b1a30b7d0e7857d4fd69300161229060600160405180910390a15050505050565b60006132f8613be8565b90508181600a01848154811061331057613310614488565b90600052602060002001819055507f4cb99f07bf9ab5f864d81d791709058819f4188481fb3c70b90a1765e003b16e8383604051610ecc929190918252602082015260400190565b6000613362613be8565b9050600081600301838154811061337b5761337b614488565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156133f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341a91906144ea565b5093505092505060008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561346e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613492919061453a565b60ff169050600083136134e75760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207072696365000000000000000000000000000000000000006044820152606401610500565b8460040186815481106134fc576134fc614488565b906000526020600020015482426135139190614586565b106135605760405162461bcd60e51b815260206004820152600a60248201527f5374616c652064617461000000000000000000000000000000000000000000006044820152606401610500565b60006135706126fb83600a6146b9565b90508086600501888154811061358857613588614488565b90600052602060002001819055507f16374e3dc228b497b5a9b2dff5883c395120625fbe7e794fdcc5d305ce13ed0787826040516135d0929190918252602082015260400190565b60405180910390a150505050505050565b60008060008860006135f1613be8565b905080600801600082600101848154811061360e5761360e614488565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205460ff1661368f5760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c2064697361626c6564000000000000000000000000006044820152606401610500565b613697613be8565b6016018b815481106136ab576136ab614488565b60009182526020918290209181049091015460ff601f9092166101000a900416156137185760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e67206973207061757365640000000000000000000000000000006044820152606401610500565b613720613be8565b600c015461372c61122e565b101561377a5760405162461bcd60e51b815260206004820152601460248201527f446f6c6c617220707269636520746f6f206c6f770000000000000000000000006044820152606401610500565b6137838b613358565b858061379d5750620f4240613796613be8565b6006015410155b156137b7576137ac8b8b6124a6565b935060009250613845565b6137bf613be8565b600601546000036137ed57600093506137e66137d961251a565b6114ca8c620f4240613c43565b9250613845565b600061380c620f42406114ca613801613be8565b600601548e90613c43565b9050600061381a8c83613c37565b90506138268d836124a6565b955061384061383361251a565b6114ca83620f4240613c43565b945050505b613875620f42406114ca61386e61385a613be8565b6013018f8154811061177d5761177d614488565b8d90613c43565b9450888510156138c75760405162461bcd60e51b815260206004820152600f60248201527f446f6c6c617220736c69707061676500000000000000000000000000000000006044820152606401610500565b878411156139175760405162461bcd60e51b815260206004820152601360248201527f436f6c6c61746572616c20736c697070616765000000000000000000000000006044820152606401610500565b868311156139675760405162461bcd60e51b815260206004820152601360248201527f476f7665726e616e636520736c697070616765000000000000000000000000006044820152606401610500565b61396f613be8565b600a018b8154811061398357613983614488565b90600052602060002001546139a18561399b8e610ed9565b90613c5b565b11156139ef5760405162461bcd60e51b815260206004820152600c60248201527f506f6f6c206365696c696e6700000000000000000000000000000000000000006044820152606401610500565b6000600b01546040517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906379cc679090604401600060405180830381600087803b158015613a6457600080fd5b505af1158015613a78573d6000803e3d6000fd5b50505050613ac8333086613a8a613be8565b6001018f81548110613a9e57613a9e614488565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16929190613e36565b6000600101546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810187905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b158015613b3d57600080fd5b505af1158015613b51573d6000803e3d6000fd5b50505050505096509650969350505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00613bb260017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd77614586565b1692915050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054151561053f565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00613bb260017f2a1c4d9e43cc908458204ba8dd637dd73ede6adc739c3209ac617ae953246cc1614586565b600061053f8284614586565b600061053f82846149ba565b600061053f82846149d1565b600061053f828461496f565b600080613c72613be8565b9050600081600101805480602002602001604051908101604052809291908181526020018280548015613cdb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311613cb0575b5050505050905060005b8151811015613d57578473ffffffffffffffffffffffffffffffffffffffff16828281518110613d1757613d17614488565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603613d4557506001949350505050565b80613d4f81614982565b915050613ce5565b506000949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613e94565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612a829085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613db4565b6000613ef6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613f899092919063ffffffff16565b9050805160001480613f17575080806020019051810190613f179190614a0c565b6107d25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610500565b60606125128484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613fbd9190614a29565b60006040518083038185875af1925050503d8060008114613ffa576040519150601f19603f3d011682016040523d82523d6000602084013e613fff565b606091505b50915091506140108783838761401b565b979650505050505050565b606083156140975782516000036140905773ffffffffffffffffffffffffffffffffffffffff85163b6140905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610500565b5081612512565b61251283838151156140ac5781518083602001fd5b8060405162461bcd60e51b81526004016105009190614a45565b60ff811681146105a657600080fd5b600080604083850312156140e857600080fd5b8235915060208301356140fa816140c6565b809150509250929050565b60006020828403121561411757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461414257600080fd5b919050565b60006020828403121561415957600080fd5b61053f8261411e565b6000806040838503121561417557600080fd5b61417e8361411e565b946020939093013593505050565b6000806040838503121561419f57600080fd5b50508035926020909101359150565b600080600080608085870312156141c457600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156141f557600080fd5b6141fe8461411e565b925061420c6020850161411e565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561426a57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614238565b50909695505050505050565b60005b83811015614291578181015183820152602001614279565b50506000910152565b600081518084526142b2816020860160208601614276565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815281516020820152600060208301516101c080604085015261430d6101e085018361429a565b91506040850151614336606086018273ffffffffffffffffffffffffffffffffffffffff169052565b50606085015173ffffffffffffffffffffffffffffffffffffffff8116608086015250608085015160a085015260a085015161437660c086018215159052565b5060c085015160e08581019190915285015161010080860191909152850151610120808601919091528501516101406143b28187018315159052565b86015190506101606143c78682018315159052565b86015190506101806143dc8682018315159052565b8601516101a0868101919091529095015193019290925250919050565b60008060006060848603121561440e57600080fd5b505081359360208301359350604090920135919050565b80151581146105a657600080fd5b60008060008060008060c0878903121561444c57600080fd5b863595506020870135945060408701359350606087013592506080870135915060a087013561447a81614425565b809150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156144c957600080fd5b5051919050565b805169ffffffffffffffffffff8116811461414257600080fd5b600080600080600060a0868803121561450257600080fd5b61450b866144d0565b945060208601519350604086015192506060860151915061452e608087016144d0565b90509295509295909350565b60006020828403121561454c57600080fd5b815161053f816140c6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561052257610522614557565b600181815b808511156145f257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156145d8576145d8614557565b808516156145e557918102915b93841c939080029061459e565b509250929050565b60008261460957506001610522565b8161461657506000610522565b816001811461462c576002811461463657614652565b6001915050610522565b60ff84111561464757614647614557565b50506001821b610522565b5060208310610133831016604e8410600b8410161715614675575081810a610522565b61467f8383614599565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146b1576146b1614557565b029392505050565b600061053f83836145fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561470657600080fd5b815167ffffffffffffffff8082111561471e57600080fd5b818401915084601f83011261473257600080fd5b815181811115614744576147446146c5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561478a5761478a6146c5565b816040528281528760208487010111156147a357600080fd5b614010836020830160208801614276565b600181811c908216806147c857607f821691505b602082108103614801577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156107d257600081815260208120601f850160051c8101602086101561482e5750805b601f850160051c820191505b8181101561484d5782815560010161483a565b505050505050565b815167ffffffffffffffff81111561486f5761486f6146c5565b6148838161487d84546147b4565b84614807565b602080601f8311600181146148d657600084156148a05750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561484d565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561492357888601518255948401946001909101908401614904565b508582101561495f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561052257610522614557565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036149b3576149b3614557565b5060010190565b808202811582820484141761052257610522614557565b600082614a07577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215614a1e57600080fd5b815161053f81614425565b60008251614a3b818460208701614276565b9190910192915050565b60208152600061053f602083018461429a56fea2646970667358221220343c2f151b0e944f752d8d2f199fe9c50ace488f84e16a2aba40011aaa5d745164736f6c63430008130033",
+ "nonce": "0x452",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xdd953eb1dafbdb036b436d2cd1fa8c430bfb3a4cf2effb1924a161d570ca1bda",
+ "transactionType": "CREATE",
+ "contractName": null,
+ "contractAddress": "0x12fe22572873d18764df0c999b6c998bfab247fb",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x64564",
+ "value": "0x0",
+ "input": "0x608060405234801561001057600080fd5b506104cb806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633cfffd3914610030575b600080fd5b61004361003e3660046103cf565b610045565b005b600061004f610245565b7f01ffc9a7000000000000000000000000000000000000000000000000000000006000908152600382016020526040808220805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f1f931c1c00000000000000000000000000000000000000000000000000000000845282842080548216831790557f48e2b09300000000000000000000000000000000000000000000000000000000845282842080548216831790557f7f5828d0000000000000000000000000000000000000000000000000000000008452918320805490921617905583519192506101469161029b565b6101747f2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd836000015161029b565b6101a27fd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0836000015161029b565b6101d07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a836000015161029b565b50601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556001600055565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061029460017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c61045b565b1692915050565b6102bc816102a7610306565b60008581526020919091526040902090610355565b50604051339073ffffffffffffffffffffffffffffffffffffffff83169084907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d90600090a45050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061029460017f7a9158dd65ad6382295fd9a8aad0a64b5d99867a77a0a1b2bc38a4f50be8bd7761045b565b60006103778373ffffffffffffffffffffffffffffffffffffffff8416610380565b90505b92915050565b60008181526001830160205260408120546103c75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561037a565b50600061037a565b6000602082840312156103e157600080fd5b6040516020810181811067ffffffffffffffff8211171561042b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823573ffffffffffffffffffffffffffffffffffffffff8116811461045257600080fd5b81529392505050565b8181038181111561037a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212205beec36dcd561f99ded7e9d8e36f3e88bb996cc370c357543136bbeec110208764736f6c63430008130033",
+ "nonce": "0x453",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionType": "CREATE",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": [
+ "(0xefC0e701A824943b469a694aC564Aa1efF7Ab7dd, 0x12fe22572873D18764Df0c999b6C998bFAB247FB, 0x3cfffd39000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd)",
+ "[(0xe17a61e55CCBc3D1E56B6A26eA1d4F8382a40AD9, 0, [0x248a9ca300000000000000000000000000000000000000000000000000000000, 0x2f2ff15d00000000000000000000000000000000000000000000000000000000, 0x91d1485400000000000000000000000000000000000000000000000000000000, 0x8456cb5900000000000000000000000000000000000000000000000000000000, 0x5c975abb00000000000000000000000000000000000000000000000000000000, 0x8bb9c5bf00000000000000000000000000000000000000000000000000000000, 0xd547741f00000000000000000000000000000000000000000000000000000000, 0x1e4e009100000000000000000000000000000000000000000000000000000000, 0x3f4ba83a00000000000000000000000000000000000000000000000000000000]), (0xd3C81BD07948a38546bCa894f8bfecB552613798, 0, [0x1f931c1c00000000000000000000000000000000000000000000000000000000]), (0xD11B60c336A8416162272475Ff9dF572E516fc51, 0, [0xcdffacc600000000000000000000000000000000000000000000000000000000, 0x52ef6b2c00000000000000000000000000000000000000000000000000000000, 0xadfca15e00000000000000000000000000000000000000000000000000000000, 0x7a0ed62700000000000000000000000000000000000000000000000000000000, 0x01ffc9a700000000000000000000000000000000000000000000000000000000]), (0x0E9f3299B9443d3D5130771f26B7E18a2a7aa9Db, 0, [0x1a47c90400000000000000000000000000000000000000000000000000000000, 0x421e108c00000000000000000000000000000000000000000000000000000000, 0x91df16d300000000000000000000000000000000000000000000000000000000, 0xb0bd67b400000000000000000000000000000000000000000000000000000000, 0x8b38ebb300000000000000000000000000000000000000000000000000000000, 0xebef28a700000000000000000000000000000000000000000000000000000000, 0x017df32700000000000000000000000000000000000000000000000000000000, 0xfbff3a4100000000000000000000000000000000000000000000000000000000, 0xe0ee685500000000000000000000000000000000000000000000000000000000, 0xbc3ea01800000000000000000000000000000000000000000000000000000000, 0xa9b8b79600000000000000000000000000000000000000000000000000000000, 0x214f788200000000000000000000000000000000000000000000000000000000, 0xb42165d000000000000000000000000000000000000000000000000000000000, 0x221e2e6000000000000000000000000000000000000000000000000000000000, 0x33c5aa5700000000000000000000000000000000000000000000000000000000, 0xc0030add00000000000000000000000000000000000000000000000000000000, 0xdd390ea000000000000000000000000000000000000000000000000000000000, 0xba2d8cdd00000000000000000000000000000000000000000000000000000000, 0x93e4e9ee00000000000000000000000000000000000000000000000000000000, 0x1a867af500000000000000000000000000000000000000000000000000000000, 0xf986cd5700000000000000000000000000000000000000000000000000000000, 0xf6f172cb00000000000000000000000000000000000000000000000000000000, 0x15f9739800000000000000000000000000000000000000000000000000000000, 0xe2d443bd00000000000000000000000000000000000000000000000000000000, 0x016afee700000000000000000000000000000000000000000000000000000000, 0xbe1d86e100000000000000000000000000000000000000000000000000000000, 0x9232461100000000000000000000000000000000000000000000000000000000, 0x1f7e8c7e00000000000000000000000000000000000000000000000000000000, 0x1c1f8aa300000000000000000000000000000000000000000000000000000000, 0x0083faee00000000000000000000000000000000000000000000000000000000, 0x147f1b9600000000000000000000000000000000000000000000000000000000, 0x6605bfda00000000000000000000000000000000000000000000000000000000, 0x826d5b8b00000000000000000000000000000000000000000000000000000000, 0xd3815fb900000000000000000000000000000000000000000000000000000000, 0x965cc7ac00000000000000000000000000000000000000000000000000000000, 0x3535f48b00000000000000000000000000000000000000000000000000000000, 0xad3401ed00000000000000000000000000000000000000000000000000000000, 0x36c3df2400000000000000000000000000000000000000000000000000000000, 0xc5f956af00000000000000000000000000000000000000000000000000000000, 0x8fe6368300000000000000000000000000000000000000000000000000000000, 0xe8b7342400000000000000000000000000000000000000000000000000000000]), (0x58860E93B6FC7A6e4aBD0F5d851A88654a34d0c0, 0, [0x8da5cb5b00000000000000000000000000000000000000000000000000000000, 0xf2fde38b00000000000000000000000000000000000000000000000000000000]), (0xb64f2347752192F51930Ad6Ad3bEa0B3A2074fAC, 0, [0x2ed4d2d600000000000000000000000000000000000000000000000000000000, 0x7efc918f00000000000000000000000000000000000000000000000000000000, 0x81f1746700000000000000000000000000000000000000000000000000000000, 0x9aae55a700000000000000000000000000000000000000000000000000000000, 0x82ae27cd00000000000000000000000000000000000000000000000000000000, 0xb4eae1cb00000000000000000000000000000000000000000000000000000000, 0x9c49437300000000000000000000000000000000000000000000000000000000, 0x9d202bf800000000000000000000000000000000000000000000000000000000, 0x9b52b9a800000000000000000000000000000000000000000000000000000000, 0x17b2bffa00000000000000000000000000000000000000000000000000000000, 0x87dcd5fb00000000000000000000000000000000000000000000000000000000, 0x5b0bdd8a00000000000000000000000000000000000000000000000000000000, 0x92beb04200000000000000000000000000000000000000000000000000000000, 0x245cd97300000000000000000000000000000000000000000000000000000000, 0x2287fe4000000000000000000000000000000000000000000000000000000000, 0xc4cb35cf00000000000000000000000000000000000000000000000000000000, 0xedecef9500000000000000000000000000000000000000000000000000000000, 0x7e625a5500000000000000000000000000000000000000000000000000000000, 0x30bbe58500000000000000000000000000000000000000000000000000000000, 0xde858d7c00000000000000000000000000000000000000000000000000000000, 0x6060663e00000000000000000000000000000000000000000000000000000000, 0xa14d1f7800000000000000000000000000000000000000000000000000000000, 0xcec10c1100000000000000000000000000000000000000000000000000000000, 0x9b94607c00000000000000000000000000000000000000000000000000000000, 0xecfd1a9e00000000000000000000000000000000000000000000000000000000, 0x7853c88800000000000000000000000000000000000000000000000000000000, 0xcbd4e7b400000000000000000000000000000000000000000000000000000000, 0x8106016300000000000000000000000000000000000000000000000000000000, 0xb98c9fe600000000000000000000000000000000000000000000000000000000, 0xaeaf4f0400000000000000000000000000000000000000000000000000000000, 0x040da68500000000000000000000000000000000000000000000000000000000, 0xedc8d27d00000000000000000000000000000000000000000000000000000000])]"
+ ],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x48e7e0",
+ "value": "0x0",
+ "input": "0x60806040523480156200001157600080fd5b506040516200182f3803806200182f8339810160408190526200003491620011f2565b8151620000419062000064565b6200005c8183602001518460400151620000c660201b60201c565b505062001568565b60006200007062000321565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b8351811015620002d2576000848281518110620000ea57620000ea6200130a565b6020026020010151602001519050600060028111156200010e576200010e62001320565b81600281111562000123576200012362001320565b0362000181576200017b8583815181106200014257620001426200130a565b6020026020010151600001518684815181106200016357620001636200130a565b6020026020010151604001516200035b60201b60201c565b620002bc565b600181600281111562000198576200019862001320565b03620001f0576200017b858381518110620001b757620001b76200130a565b602002602001015160000151868481518110620001d857620001d86200130a565b602002602001015160400151620005e660201b60201c565b600281600281111562000207576200020762001320565b036200025f576200017b8583815181106200022657620002266200130a565b6020026020010151600001518684815181106200024757620002476200130a565b6020026020010151604001516200087c60201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620002c9816200134c565b915050620000c9565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003089392919062001396565b60405180910390a16200031c8282620009e0565b505050565b60008060ff196200035460017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6200149d565b1692915050565b6000815111620003b15760405162461bcd60e51b815260206004820152602b60248201526000805160206200180f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002b3565b6000620003bd62000321565b90506001600160a01b0383166200041b5760405162461bcd60e51b815260206004820152602c6024820152600080516020620017cb83398151915260448201526b65206164647265737328302960a01b6064820152608401620002b3565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003620004545762000454828562000ab2565b60005b8351811015620005df5760008482815181106200047857620004786200130a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620005205760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620002b3565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583620005c481620014b9565b94505050508080620005d6906200134c565b91505062000457565b5050505050565b60008151116200063c5760405162461bcd60e51b815260206004820152602b60248201526000805160206200180f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002b3565b60006200064862000321565b90506001600160a01b038316620006a65760405162461bcd60e51b815260206004820152602c6024820152600080516020620017cb83398151915260448201526b65206164647265737328302960a01b6064820152608401620002b3565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003620006df57620006df828562000ab2565b60005b8351811015620005df5760008482815181106200070357620007036200130a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103620007b05760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401620002b3565b620007bd85828462000b1f565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200086181620014b9565b9450505050808062000873906200134c565b915050620006e2565b6000815111620008d25760405162461bcd60e51b815260206004820152602b60248201526000805160206200180f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002b3565b6000620008de62000321565b90506001600160a01b038316156200095f5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620002b3565b60005b8251811015620009da5760008382815181106200098357620009836200130a565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b0316620009c284828462000b1f565b50508080620009d1906200134c565b91505062000962565b50505050565b6001600160a01b038216620009f3575050565b62000a1882604051806060016040528060288152602001620017a36028913962000f79565b600080836001600160a01b03168360405162000a359190620014ea565b600060405180830381855af49150503d806000811462000a72576040519150601f19603f3d011682016040523d82523d6000602084013e62000a77565b606091505b509150915081620009da5780511562000a935780518082602001fd5b838360405163192105d760e01b8152600401620002b392919062001508565b62000ad781604051806060016040528060248152602001620017eb6024913962000f79565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000b9d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620002b3565b63381b38f960e21b6001600160e01b031982160162000c175760405162461bcd60e51b815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f7665206469616d60448201526e37b73221baba10333ab731ba34b7b760891b6064820152608401620002b3565b306001600160a01b0383160362000c885760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620002b3565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000cd9916200149d565b905080821462000dd2576001600160a01b0384166000908152600186016020526040812080548390811062000d125762000d126200130a565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000d665762000d666200130a565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000dfe5762000dfe62001536565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003620005df57600285015460009062000e64906001906200149d565b6001600160a01b038616600090815260018089016020526040909120015490915080821462000f1a57600087600201838154811062000ea75762000ea76200130a565b6000918252602090912001546002890180546001600160a01b03909216925082918490811062000edb5762000edb6200130a565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b8660020180548062000f305762000f3062001536565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b8181620009da5760405162461bcd60e51b8152600401620002b391906200154c565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171562000fd85762000fd862000f9d565b60405290565b604051601f8201601f191681016001600160401b038111828210171562001009576200100962000f9d565b604052919050565b80516001600160a01b03811681146200102957600080fd5b919050565b60005b838110156200104b57818101518382015260200162001031565b50506000910152565b60006001600160401b0382111562001070576200107062000f9d565b5060051b60200190565b600082601f8301126200108c57600080fd5b81516020620010a56200109f8362001054565b62000fde565b828152600592831b8501820192828201919087851115620010c557600080fd5b8387015b85811015620011e55780516001600160401b0380821115620010eb5760008081fd5b908901906060828c03601f1901811315620011065760008081fd5b6200111062000fb3565b6200111d89850162001011565b815260408085015160038110620011345760008081fd5b828b01529184015191838311156200114c5760008081fd5b82850194508d603f8601126200116457600093508384fd5b898501519350620011796200109f8562001054565b84815293871b85018101938a810193508e851115620011985760008081fd5b948101945b84861015620011d05785516001600160e01b031981168114620011c05760008081fd5b8452948a0194928a01926200119d565b908201528752505050928401928401620010c9565b5090979650505050505050565b600080604083850312156200120657600080fd5b82516001600160401b03808211156200121e57600080fd5b90840190606082870312156200123357600080fd5b6200123d62000fb3565b620012488362001011565b815260206200125981850162001011565b818301526040840151838111156200127057600080fd5b80850194505087601f8501126200128657600080fd5b8351838111156200129b576200129b62000f9d565b620012af601f8201601f1916830162000fde565b8181528983838801011115620012c457600080fd5b620012d5828483018589016200102e565b604084015250860151909450915080821115620012f157600080fd5b5062001300858286016200107a565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162001361576200136162001336565b5060010190565b60008151808452620013828160208601602086016200102e565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200146b57898403607f19018652815180516001600160a01b031685528381015189860190600381106200140757634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620014555783516001600160e01b031916825292860192600192909201919086019062001429565b50978501979550505090820190600101620013bf565b50506001600160a01b038a169088015286810360408801526200148f818962001368565b9a9950505050505050505050565b81810381811115620014b357620014b362001336565b92915050565b60006001600160601b038281166002600160601b03198101620014e057620014e062001336565b6001019392505050565b60008251620014fe8184602087016200102e565b9190910192915050565b6001600160a01b03831681526040602082018190526000906200152e9083018462001368565b949350505050565b634e487b7160e01b600052603160045260246000fd5b60208152600062001561602083018462001368565b9392505050565b61022b80620015786000396000f3fe60806040526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061005360017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6101b5565b600080357fffffffff000000000000000000000000000000000000000000000000000000001681529116602081905260409091205490925082915073ffffffffffffffffffffffffffffffffffffffff166004361015610114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4469616d6f6e643a2053656c6563746f7220697320746f6f2073686f7274000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604482015260640161010b565b3660008037600080366000845af43d6000803e8080156101b0573d6000f35b3d6000fd5b818103818111156101ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220f85fc07f2d35b24eaa0af26d3fd7ec2932df0ab65906b6f77e8f44c46edd70c564736f6c634300081300334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000012fe22572873d18764df0c999b6c998bfab247fb000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243cfffd39000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000a80000000000000000000000000e17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000091d14854000000000000000000000000000000000000000000000000000000008456cb59000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000008bb9c5bf00000000000000000000000000000000000000000000000000000000d547741f000000000000000000000000000000000000000000000000000000001e4e0091000000000000000000000000000000000000000000000000000000003f4ba83a00000000000000000000000000000000000000000000000000000000000000000000000000000000d3c81bd07948a38546bca894f8bfecb5526137980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000d11b60c336a8416162272475ff9df572e516fc51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000e9f3299b9443d3d5130771f26b7e18a2a7aa9db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000291a47c90400000000000000000000000000000000000000000000000000000000421e108c0000000000000000000000000000000000000000000000000000000091df16d300000000000000000000000000000000000000000000000000000000b0bd67b4000000000000000000000000000000000000000000000000000000008b38ebb300000000000000000000000000000000000000000000000000000000ebef28a700000000000000000000000000000000000000000000000000000000017df32700000000000000000000000000000000000000000000000000000000fbff3a4100000000000000000000000000000000000000000000000000000000e0ee685500000000000000000000000000000000000000000000000000000000bc3ea01800000000000000000000000000000000000000000000000000000000a9b8b79600000000000000000000000000000000000000000000000000000000214f788200000000000000000000000000000000000000000000000000000000b42165d000000000000000000000000000000000000000000000000000000000221e2e600000000000000000000000000000000000000000000000000000000033c5aa5700000000000000000000000000000000000000000000000000000000c0030add00000000000000000000000000000000000000000000000000000000dd390ea000000000000000000000000000000000000000000000000000000000ba2d8cdd0000000000000000000000000000000000000000000000000000000093e4e9ee000000000000000000000000000000000000000000000000000000001a867af500000000000000000000000000000000000000000000000000000000f986cd5700000000000000000000000000000000000000000000000000000000f6f172cb0000000000000000000000000000000000000000000000000000000015f9739800000000000000000000000000000000000000000000000000000000e2d443bd00000000000000000000000000000000000000000000000000000000016afee700000000000000000000000000000000000000000000000000000000be1d86e10000000000000000000000000000000000000000000000000000000092324611000000000000000000000000000000000000000000000000000000001f7e8c7e000000000000000000000000000000000000000000000000000000001c1f8aa3000000000000000000000000000000000000000000000000000000000083faee00000000000000000000000000000000000000000000000000000000147f1b96000000000000000000000000000000000000000000000000000000006605bfda00000000000000000000000000000000000000000000000000000000826d5b8b00000000000000000000000000000000000000000000000000000000d3815fb900000000000000000000000000000000000000000000000000000000965cc7ac000000000000000000000000000000000000000000000000000000003535f48b00000000000000000000000000000000000000000000000000000000ad3401ed0000000000000000000000000000000000000000000000000000000036c3df2400000000000000000000000000000000000000000000000000000000c5f956af000000000000000000000000000000000000000000000000000000008fe6368300000000000000000000000000000000000000000000000000000000e8b734240000000000000000000000000000000000000000000000000000000000000000000000000000000058860e93b6fc7a6e4abd0f5d851a88654a34d0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b64f2347752192f51930ad6ad3bea0b3a2074fac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000202ed4d2d6000000000000000000000000000000000000000000000000000000007efc918f0000000000000000000000000000000000000000000000000000000081f17467000000000000000000000000000000000000000000000000000000009aae55a70000000000000000000000000000000000000000000000000000000082ae27cd00000000000000000000000000000000000000000000000000000000b4eae1cb000000000000000000000000000000000000000000000000000000009c494373000000000000000000000000000000000000000000000000000000009d202bf8000000000000000000000000000000000000000000000000000000009b52b9a80000000000000000000000000000000000000000000000000000000017b2bffa0000000000000000000000000000000000000000000000000000000087dcd5fb000000000000000000000000000000000000000000000000000000005b0bdd8a0000000000000000000000000000000000000000000000000000000092beb04200000000000000000000000000000000000000000000000000000000245cd973000000000000000000000000000000000000000000000000000000002287fe4000000000000000000000000000000000000000000000000000000000c4cb35cf00000000000000000000000000000000000000000000000000000000edecef95000000000000000000000000000000000000000000000000000000007e625a550000000000000000000000000000000000000000000000000000000030bbe58500000000000000000000000000000000000000000000000000000000de858d7c000000000000000000000000000000000000000000000000000000006060663e00000000000000000000000000000000000000000000000000000000a14d1f7800000000000000000000000000000000000000000000000000000000cec10c11000000000000000000000000000000000000000000000000000000009b94607c00000000000000000000000000000000000000000000000000000000ecfd1a9e000000000000000000000000000000000000000000000000000000007853c88800000000000000000000000000000000000000000000000000000000cbd4e7b4000000000000000000000000000000000000000000000000000000008106016300000000000000000000000000000000000000000000000000000000b98c9fe600000000000000000000000000000000000000000000000000000000aeaf4f0400000000000000000000000000000000000000000000000000000000040da68500000000000000000000000000000000000000000000000000000000edc8d27d00000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x454",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x56be8eb80be13dc0436d0c942e8acc83862b112bfb0731b42ca6bf120054001b",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1c559",
+ "value": "0x0",
+ "input": "0x2f2ff15d2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x455",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xacff54d7f5e37e2dfc5f3571b049b739d854cd8e794a2f800970c1f6fb9887df",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1c559",
+ "value": "0x0",
+ "input": "0x2f2ff15dd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x456",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x8b7c0241c36b5eeb6e8efd2045c7d973d8998316e13ba3fc7dc99b78d3b8ec34",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x9a1fb",
+ "value": "0x0",
+ "input": "0x7efc918f0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021e19e0c9bab2400000",
+ "nonce": "0x457",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xdb5488814de8a7f72a3170b7ef2a05b9a86ef6337764913dd43a3b6a53b7c4ab",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1340b",
+ "value": "0x0",
+ "input": "0xaeaf4f040000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x458",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xcc2d6206a1dc7ec167dbc0f8f1f8f99432e5ce40055fc5ab11c4a471f4369a5f",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0xe44d",
+ "value": "0x0",
+ "input": "0xcec10c11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x459",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x38f11c495a9932f57aededd4600e0814cbe503bae2fd2e9131ea2d462001a35c",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x12b51",
+ "value": "0x0",
+ "input": "0xcbd4e7b40000000000000000000000000000000000000000000000000000000000000002",
+ "nonce": "0x45a",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x243bebc21d94c75a0535bbd107b62ecf1f1cd3ebf01a97b5fb7ce59b5980a21d",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x19477",
+ "value": "0x0",
+ "input": "0x7853c88800000000000000000000000000000000000000000000000000000000000f695000000000000000000000000000000000000000000000000000000000000f1b30",
+ "nonce": "0x45b",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xe786a6732987d10d4b0575a99b6246d6d86992c84eefc876fa3a4b61cfb1213c",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x12bbc",
+ "value": "0x0",
+ "input": "0x6060663e00000000000000000000000000000000000000000000000000000000000e7ef0",
+ "nonce": "0x45c",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x30db3b6f8445902510a739692dd04d981f8d860a5f1f8654e65371aee14d9114",
+ "transactionType": "CREATE",
+ "contractName": "UbiquityDollarToken",
+ "contractAddress": "0x7745a062c0a8aaefaa7e7df1e1aabbbafc988972",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x3e01d7",
+ "value": "0x0",
+ "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000030565b6200002a62000030565b620000f1565b600054610100900460ff16156200009d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000ef576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161375962000129600039600081816106c70152818161076201528181610bc501528181610c5b0152610d8a01526137596000f3fe6080604052600436106101c25760003560e01c80635c975abb116100f7578063a457c2d711610095578063d0ebdbe711610064578063d0ebdbe714610512578063d500958414610532578063d505accf1461055e578063dd62ed3e1461057e57600080fd5b8063a457c2d714610492578063a9059cbb146104b2578063b84c8246146104d2578063c4d66de8146104f257600080fd5b80637ecebe00116100d15780637ecebe00146104205780638456cb591461044057806384b0196e1461045557806395d89b411461047d57600080fd5b80635c975abb146103a457806370a08231146103bd57806379cc67901461040057600080fd5b80633659cfe61161016457806340c10f191161013e57806340c10f191461033c57806342966c681461035c5780634f1ef2861461037c57806352d1902d1461038f57600080fd5b80633659cfe6146102e557806339509351146103075780633f4ba83a1461032757600080fd5b806318160ddd116101a057806318160ddd1461027557806323b872dd14610294578063313ce567146102b45780633644e515146102d057600080fd5b806306fdde03146101c7578063095ea7b3146101f257806313007d5514610222575b600080fd5b3480156101d357600080fd5b506101dc6105d1565b6040516101e991906130de565b60405180910390f35b3480156101fe57600080fd5b5061021261020d36600461311a565b610663565b60405190151581526020016101e9565b34801561022e57600080fd5b50610195546102509073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e9565b34801561028157600080fd5b506099545b6040519081526020016101e9565b3480156102a057600080fd5b506102126102af366004613144565b61067d565b3480156102c057600080fd5b50604051601281526020016101e9565b3480156102dc57600080fd5b506102866106a1565b3480156102f157600080fd5b50610305610300366004613180565b6106b0565b005b34801561031357600080fd5b5061021261032236600461311a565b610886565b34801561033357600080fd5b506103056108d2565b34801561034857600080fd5b5061030561035736600461311a565b6109e1565b34801561036857600080fd5b5061030561037736600461319b565b610b64565b61030561038a366004613277565b610bae565b34801561039b57600080fd5b50610286610d70565b3480156103b057600080fd5b506101305460ff16610212565b3480156103c957600080fd5b506102866103d8366004613180565b73ffffffffffffffffffffffffffffffffffffffff1660009081526097602052604090205490565b34801561040c57600080fd5b5061030561041b36600461311a565b610e42565b34801561042c57600080fd5b5061028661043b366004613180565b610fc8565b34801561044c57600080fd5b50610305610ff3565b34801561046157600080fd5b5061046a611100565b6040516101e997969594939291906132d9565b34801561048957600080fd5b506101dc6111c2565b34801561049e57600080fd5b506102126104ad36600461311a565b6111d2565b3480156104be57600080fd5b506102126104cd36600461311a565b611289565b3480156104de57600080fd5b506103056104ed366004613398565b611297565b3480156104fe57600080fd5b5061030561050d366004613180565b61138a565b34801561051e57600080fd5b5061030561052d366004613180565b61156f565b34801561053e57600080fd5b506101955473ffffffffffffffffffffffffffffffffffffffff16610250565b34801561056a57600080fd5b506103056105793660046133e1565b61169d565b34801561058a57600080fd5b50610286610599366004613454565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260986020908152604080832093909416825291909152205490565b6060609a80546105e090613487565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90613487565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b600033610671818585611828565b60019150505b92915050565b60003361068b8582856119a7565b610696858585611a64565b506001949350505050565b60006106ab611a7c565b905090565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036107605760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166107d57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461085e5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610757565b61086781611a86565b6040805160008082526020820190925261088391839190611b6c565b50565b33600081815260986020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067190829086906108cd9087906134d4565b611828565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061350e565b6109d75760405162461bcd60e51b815260206004820152601960248201527f455243323055626971756974793a206e6f7420706175736572000000000000006044820152606401610757565b6109df611d37565b565b6101955473ffffffffffffffffffffffffffffffffffffffff166391d148547f2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab5919061350e565b610b015760405162461bcd60e51b815260206004820152601860248201527f446f6c6c617220746f6b656e3a206e6f74206d696e74657200000000000000006044820152606401610757565b610b09611db5565b610b138282611e09565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb1233017d63154bc561d57c16f7b6a55e2e1acd7fcac94045a9f35fb31a850ca9060200160405180910390a35050565b610b6c611db5565b610b763382611ef0565b60405181815233907f62626c8ae1f1f3ad3b2f42ba7b806bbc48e9a59dab06414984113eaab612fe479060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610c595760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610757565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cce7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d575760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610757565b610d6082611a86565b610d6c82826001611b6c565b5050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e1d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610757565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6101955473ffffffffffffffffffffffffffffffffffffffff166391d148547fd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f16919061350e565b610f625760405162461bcd60e51b815260206004820152601860248201527f446f6c6c617220746f6b656e3a206e6f74206275726e657200000000000000006044820152606401610757565b610f6a611db5565b610f748282611ef0565b8173ffffffffffffffffffffffffffffffffffffffff167f62626c8ae1f1f3ad3b2f42ba7b806bbc48e9a59dab06414984113eaab612fe4782604051610fbc91815260200190565b60405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260fd6020526040812054610677565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac919061350e565b6110f85760405162461bcd60e51b815260206004820152601960248201527f455243323055626971756974793a206e6f7420706175736572000000000000006044820152606401610757565b6109df61208e565b60006060806000806000606060c9546000801b148015611120575060ca54155b61116c5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610757565b6111746120ea565b61117c6120f9565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606061019480546105e090613487565b33600081815260986020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561127c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610757565b6106968286868403611828565b600033610671818585611a64565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081526000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611331919061350e565b61137d5760405162461bcd60e51b815260206004820152601860248201527f455243323055626971756974793a206e6f742061646d696e00000000000000006044820152606401610757565b610194610d6c828261357e565b600054610100900460ff16158080156113aa5750600054600160ff909116105b806113c45750303b1580156113c4575060005460ff166001145b6114365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610757565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561149457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611509826040518060400160405280600f81526020017f556269717569747920446f6c6c617200000000000000000000000000000000008152506040518060400160405280600381526020017f7541440000000000000000000000000000000000000000000000000000000000815250612108565b8015610d6c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081526000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611609919061350e565b6116555760405162461bcd60e51b815260206004820152601860248201527f455243323055626971756974793a206e6f742061646d696e00000000000000006044820152606401610757565b61019580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b834211156116ed5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610757565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861171c8c6121b2565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611784826121e7565b905060006117948287878761222f565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118115760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610757565b61181c8a8a8a611828565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166118b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff82166119395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152609860209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611a5e5781811015611a515760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610757565b611a5e8484848403611828565b50505050565b611a6c611db5565b611a77838383612259565b505050565b60006106ab61248c565b610195546040517f91d148540000000000000000000000000000000000000000000000000000000081526000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b20919061350e565b6108835760405162461bcd60e51b815260206004820152601860248201527f455243323055626971756974793a206e6f742061646d696e00000000000000006044820152606401610757565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b9f57611a7783612500565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c24575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611c2191810190613698565b60015b611c965760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610757565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d2b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610757565b50611a778383836125f0565b611d3f612615565b61013080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6101305460ff16156109df5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610757565b73ffffffffffffffffffffffffffffffffffffffff8216611e6c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610757565b611e7860008383612668565b8060996000828254611e8a91906134d4565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611f795760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610757565b611f8582600083612668565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260976020526040902054818110156120215760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b612096611db5565b61013080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d8b3390565b606060cb80546105e090613487565b606060cc80546105e090613487565b600054610100900460ff166121855760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b61218f8282612673565b612198826126fa565b6121a06127b6565b6121a861283b565b611a7783826128b8565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260fd602052604090208054600181018255905b50919050565b60006106776121f4611a7c565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006122408787878761298c565b9150915061224d81612a7b565b5090505b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83166122e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff821661236b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610757565b612376838383612668565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260976020526040902054818110156124125760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610757565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061247f9086815260200190565b60405180910390a3611a5e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6124b7612be0565b6124bf612c39565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff81163b61258a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610757565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6125f983612c6a565b6000825111806126065750805b15611a7757611a5e8383612cb7565b6101305460ff166109df5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610757565b611a77838383612ce3565b600054610100900460ff166126f05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b610d6c8282612d5d565b600054610100900460ff166127775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b610883816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612df3565b600054610100900460ff166128335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b6109df612e98565b600054610100900460ff166109df5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b600054610100900460ff166129355760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b610194612942828261357e565b505061019580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156129c35750600090506003612a72565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612a17573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612a6b57600060019250925050612a72565b9150600090505b94509492505050565b6000816004811115612a8f57612a8f6136b1565b03612a975750565b6001816004811115612aab57612aab6136b1565b03612af85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610757565b6002816004811115612b0c57612b0c6136b1565b03612b595760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610757565b6003816004811115612b6d57612b6d6136b1565b036108835760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610757565b600080612beb6120ea565b805190915015612c02578051602090910120919050565b60c9548015612c115792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612c446120f9565b805190915015612c5b578051602090910120919050565b60ca548015612c115792915050565b612c7381612500565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612cdc83836040518060600160405280602781526020016136fd60279139612f40565b9392505050565b6101305460ff1615611a775760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e7366657220776860448201527f696c6520706175736564000000000000000000000000000000000000000000006064820152608401610757565b600054610100900460ff16612dda5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b609a612de6838261357e565b50609b611a77828261357e565b600054610100900460ff16612e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b60cb612e7c838261357e565b5060cc612e89828261357e565b5050600060c981905560ca5550565b600054610100900460ff16612f155760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610757565b61013080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612f6a91906136e0565b600060405180830381855af49150503d8060008114612fa5576040519150601f19603f3d011682016040523d82523d6000602084013e612faa565b606091505b5091509150612fbb86838387612fc5565b9695505050505050565b6060831561304157825160000361303a5773ffffffffffffffffffffffffffffffffffffffff85163b61303a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610757565b5081612251565b61225183838151156130565781518083602001fd5b8060405162461bcd60e51b815260040161075791906130de565b60005b8381101561308b578181015183820152602001613073565b50506000910152565b600081518084526130ac816020860160208601613070565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612cdc6020830184613094565b803573ffffffffffffffffffffffffffffffffffffffff8116811461311557600080fd5b919050565b6000806040838503121561312d57600080fd5b613136836130f1565b946020939093013593505050565b60008060006060848603121561315957600080fd5b613162846130f1565b9250613170602085016130f1565b9150604084013590509250925092565b60006020828403121561319257600080fd5b612cdc826130f1565b6000602082840312156131ad57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156131fe576131fe6131b4565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613244576132446131b4565b8160405280935085815286868601111561325d57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561328a57600080fd5b613293836130f1565b9150602083013567ffffffffffffffff8111156132af57600080fd5b8301601f810185136132c057600080fd5b6132cf858235602084016131e3565b9150509250929050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261331560e084018a613094565b8381036040850152613327818a613094565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156133865783518352928401929184019160010161336a565b50909c9b505050505050505050505050565b6000602082840312156133aa57600080fd5b813567ffffffffffffffff8111156133c157600080fd5b8201601f810184136133d257600080fd5b612251848235602084016131e3565b600080600080600080600060e0888a0312156133fc57600080fd5b613405886130f1565b9650613413602089016130f1565b95506040880135945060608801359350608088013560ff8116811461343757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561346757600080fd5b613470836130f1565b915061347e602084016130f1565b90509250929050565b600181811c9082168061349b57607f821691505b6020821081036121e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80820180821115610677577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561352057600080fd5b81518015158114612cdc57600080fd5b601f821115611a7757600081815260208120601f850160051c810160208610156135575750805b601f850160051c820191505b8181101561357657828155600101613563565b505050505050565b815167ffffffffffffffff811115613598576135986131b4565b6135ac816135a68454613487565b84613530565b602080601f8311600181146135ff57600084156135c95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613576565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561364c5788860151825594840194600190910190840161362d565b508582101561368857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156136aa57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082516136f2818460208701613070565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220970bd42e1159915b240b28bcccb023ae91e7d46acca8554bfa2f84542540823164736f6c63430008130033",
+ "nonce": "0x45d",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionType": "CREATE",
+ "contractName": "ERC1967Proxy",
+ "contractAddress": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "function": null,
+ "arguments": ["0x7745A062C0A8aAEFAA7E7DF1e1AAbBBAfc988972", "0xc4d66de8000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa"],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "gas": "0x616bc",
+ "value": "0x0",
+ "input": "0x60806040526040516104ee3803806104ee833981016040819052610022916102de565b61002e82826000610035565b50506103fb565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104c760279139610180565b9392505050565b6001600160a01b0381163b61013f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019d91906103ac565b600060405180830381855af49150503d80600081146101d8576040519150601f19603f3d011682016040523d82523d6000602084013e6101dd565b606091505b5090925090506101ef868383876101f9565b9695505050505050565b60608315610268578251600003610261576001600160a01b0385163b6102615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610136565b5081610272565b610272838361027a565b949350505050565b81511561028a5781518083602001fd5b8060405162461bcd60e51b815260040161013691906103c8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102d55781810151838201526020016102bd565b50506000910152565b600080604083850312156102f157600080fd5b82516001600160a01b038116811461030857600080fd5b60208401519092506001600160401b038082111561032557600080fd5b818501915085601f83011261033957600080fd5b81518181111561034b5761034b6102a4565b604051601f8201601f19908116603f01168101908382118183101715610373576103736102a4565b8160405282815288602084870101111561038c57600080fd5b61039d8360208301602088016102ba565b80955050505050509250929050565b600082516103be8184602087016102ba565b9190910192915050565b60208152600082518060208401526103e78160408501602087016102ba565b601f01601f19169190910160400192915050565b60be806104096000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6065565b565b600060607f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156083573d6000f35b3d6000fdfea264697066735822122057026e6ac0ea6508fb970bc3e341e4a42a730a9f9143add21b32331d6561376b64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007745a062c0a8aaefaa7e7df1e1aabbbafc98897200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa00000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x45e",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xed36cfc26960d8bd74f7a170b6a0d3f9178b2e762438316637abb545ff659b7c",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x115a9",
+ "value": "0x0",
+ "input": "0xf986cd57000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "nonce": "0x45f",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionType": "CALL",
+ "contractName": "ERC1967Proxy",
+ "contractAddress": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "gas": "0x1e730",
+ "value": "0x0",
+ "input": "0x40c10f19000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000054b40b1f852bda00000",
+ "nonce": "0x460",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xdd23c73480e78a237032683322420b848b34320b6322ae37a01e94f6d6024fa5",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x17ba7",
+ "value": "0x0",
+ "input": "0xde858d7c0000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba00000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "nonce": "0x461",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x1ba1babc2b61397f3e23f7006a6e030a0bd9293a1c34325a43f93d4529b66f61",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x17270",
+ "value": "0x0",
+ "input": "0xedc8d27d0000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x462",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x8aaf682c47063531c0721ffca52534f5fbaf1e640febe3df6f65ad64683c4f84",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1965d",
+ "value": "0x0",
+ "input": "0x810601630000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "nonce": "0x463",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionType": "CALL",
+ "contractName": null,
+ "contractAddress": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "function": "deploy_plain_pool(string,string,address[],uint256,uint256,uint256,uint256,uint256,uint8[],bytes4[],address[])",
+ "arguments": [
+ "\"LUSD/Dollar\"",
+ "\"LUSDDollar\"",
+ "[0x5f98805A4E8be255a32880FDeC7F6728C6568bA0, 0xb6919Ef2ee4aFC163BC954C5678e2BB570c2D103]",
+ "100",
+ "4000000",
+ "20000000000",
+ "2597",
+ "0",
+ "[0, 0]",
+ "[0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000]",
+ "[0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000]"
+ ],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "gas": "0x77a842",
+ "value": "0x0",
+ "input": "0x5bcd3d83000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000003d090000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000000000000a250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000b4c5553442f446f6c6c6172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4c555344446f6c6c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d103000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "nonce": "0x464",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [
+ {
+ "transactionType": "CREATE",
+ "address": "0xcc68509f9ca0e1ed119eac7c468ec1b1c42f384f",
+ "initCode": "0x615c335150346109c2576020615ddc5f395f516020602082615ddc015f395f51116109c2576020602082615ddc015f395f51018082615ddc0160803950506020615dfc5f395f51600a602082615ddc015f395f51116109c2576020602082615ddc015f395f51018082615ddc0160c03950506020615e9c5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c25780156100d857905b60208160051b6020860101615ddc015f395f518060a01c6109c2578160051b61012001526001018181186100a9575b5050806101005250506020615ebc5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f5160208160051b018083615ddc01610220395050506020615edc5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c257801561018257905b60208160051b6020860101615ddc015f395f518060081c6109c2578160051b6103600152600101818118610153575b5050806103405250506020615efc5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c25780156101f257905b60208160051b6020860101615ddc015f395f518060201b6109c2578160051b61048001526001018181186101c3575b5050806104605250506020615f1c5f395f516008602082615ddc015f395f51116109c257602081615ddc015f395f515f81600881116109c257801561026257905b60208160051b6020860101615ddc015f395f518060a01c6109c2578160051b6105a00152600101818118610233575b5050806105805250506101005160208160051b015f81601f0160051c600981116109c25780156102ae57905b8060051b61010001518160051b6060016153f3015260010181811861028e575b505050506103405160208160051b015f81601f0160051c600981116109c25780156102f657905b8060051b61034001518160051b610180016153f301526001018181186102d5575b505050505f6106a0525f61557351600881116109c257801561033e57905b60028160051b6101a0016153f30151186103335760016106a05261033e565b600101818118610314575b50506106a05161569352610100516106a0526106a0516153f3526106a05180607f1c6109c257615413526102205160208160051b015f81601f0160051c600981116109c25780156103ac57905b8060051b61022001518160051b6102c0016153f3015260010181811861038b575b50505050336154335260646020615e1c5f395f51026106c0526106c051600c556106c051600d556020615e3c5f395f51600a556020615e5c5f395f51600b556020615e7c5f395f51156109c2576020615e7c5f395f5160235561f374602455426040524260605261041e6106e0610981565b6106e0516025555f6106e0525f610800525f610920525f61541351600881116109c257801561070a57905b80610a4052615413516001810380600f0b81186109c2579050610a405112156104ac57601954600781116109c257670de0b6b3a7640000604052670de0b6b3a764000060605261049a610a60610981565b610a605181601a015560018101601955505b61092051600781116109c257610a4051610580518110156109c25760051b6105a00151610a4051610460518110156109c25760051b61048001518060e01c90508060e01b818160e01c186109c2579050178160051b6109400152600181016109205250600154600781116109c2575f81600201556001810160015550601054600781116109c2575f816011015560018101601055506003610a4051610340518110156109c25760051b6103600151186106c0576106e051600781116109c257610a4051610100518110156109c25760051b610120015163313ce567610a60526020610a606004610a7c845afa6105a4573d5f5f3e3d5ffd5b60203d106109c257610a60518060081c6109c257610aa052610aa0905051604d81116109c25780600a0a90508160051b6107000152600181016106e05250610a4051610100518110156109c25760051b61012001516338d52e0f610a80526020610a806004610a9c845afa61061b573d5f5f3e3d5ffd5b60203d106109c257610a80518060a01c6109c257610ac052610ac0905051610a605261080051600781116109c257610a605163313ce567610a80526020610a806004610a9c845afa61066f573d5f5f3e3d5ffd5b60203d106109c257610a80518060081c6109c257610ac052610ac090505180601203601281116109c2579050604d81116109c25780600a0a90508160051b61082001526001810161080052506106ff565b6106e051600781116109c2575f8160051b6107000152600181016106e0525061080051600781116109c2575f8160051b61082001526001810161080052505b600101818118610449575b50506106e05160208160051b015f81601f0160051c600981116109c257801561075057905b8060051b6106e001518160051b610500016153f3015260010181811861072f575b505050506108005160208160051b015f81601f0160051c600981116109c257801561079857905b8060051b61080001518160051b610620016153f30152600101818118610777575b505050506109205160208160051b015f81601f0160051c600981116109c25780156107e057905b8060051b61092001518160051b6103e0016153f301526001018181186107bf575b505050506020608051015f81601f0160051c600281116109c257801561082257905b8060051b608001518160051b610740016153f30152600101818118610802575b505050602060c051015f81601f0160051c600281116109c257801561086357905b8060051b60c001518160051b6107a0016153f30152600101818118610843575b5050506020615b3351015f81601f0160051c600381116109c25780156108a657905b8060051b610740016153f301518160051b610a400152600101818118610885575b505050610a40805160208201209050615bd3526001430340615c135246615bf3527fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac56472610a6052615bd351610a80527f1c54f243822e0e9a0a377610b81577e771b3efe79964e76636b0d5d10247950d610aa05246610ac05230610ae052615c1351610b005260c0610a4052610a40805160208201209050615c3352335f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f610a40526020610a40a36153f36109c661000039615c53610000f35b6fffffffffffffffffffffffffffffffff604051116109c2576fffffffffffffffffffffffffffffffff606051116109c25760605160801b60405117815250565b5f80fd5f3560e01c60056005600683060261522a01601b395f51600760078260ff16848460181c0260181c06028260081c61ffff1601601939505f51818160181c14600336111661004c5761294e565b8060fe16361034826001160217615226578060081c61ffff16565b60206153f360403960206040f35b602060043560206154535f395f518110156152265760051b6080016153f30160403960206040f35b600a5460405260206040f35b600b5460405260206040f35b64012a05f20060405260206040f35b600c5460405260206040f35b600d5460405260206040f35b600e5460405260206040f35b600f5460405260206040f35b600435601054811015615226576011015460405260206040f35b60235460405260206040f35b60245460405260206040f35b60255460405260206040f35b6020806040528060400160206020615b335f395f510180615b338339508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b6020806040528060400160206020615b935f395f510180615b938339508051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b601260405260206040f35b60208060805260066040527f76372e302e30000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b6004358060a01c6152265760405260266040516020525f5260405f205460605260206060f35b6004358060a01c615226576040526024358060a01c6152265760605260276040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b6004358060a01c6152265760405260296040516020525f5260405f205460605260206060f35b6020615c1360403960206040f35b33611360526102ee565b6084358060a01c61522657611360525b60043580600f0b8118615226576113205260243580600f0b811861522657611340525f546002146152265760025f55602033610dc05261132051610de05261134051610e005260406044610e203761136051610e60525f610e8052610354611380614466565b61138060035f55f35b3361136052610377565b6084358060a01c61522657611360525b60043580600f0b8118615226576113205260243580600f0b811861522657611340525f546002146152265760025f5560206156935f395f5161522657602033610dc05261132051610de05261134051610e005260406044610e203761136051610e60526001610e80526103eb611380614466565b61138060035f55f35b33610a805261040e565b6044358060a01c61522657610a80525b600435600401600881351161522657803560208160051b018083610960375050505f546002146152265760025f55610a80511561522657610450610ac061323c565b610ac051610aa052610463610be0613055565b610be0805160208160051b0180610ac0828560045afa50505050610488610d00612d26565b610d00805160208160051b0180610be0828560045afa50505050610be05160208160051b01806103c082610be060045afa505050610ac05160208160051b01806104e082610ac060045afa505050610aa051610600526104e9610d20614714565b610d2051610d0052602854610d2052610ac05160208160051b0180610d4082610ac060045afa5050505f60206154135f395f51600881116152265780156105c857905b80610e6052610e6051610960518110156152265760051b6109800151156105b357610e6051610d40518110156152265760051b610d60018051610e6051604052610e6051610960518110156152265760051b6109800151606052336080525f60a052610599610e80612993565b610e805180820182811061522657905090508152506105bd565b610d205115615226575b60010181811861052c575b5050610be05160208160051b01806103c082610be060045afa505050610d405160208160051b01806104e082610d4060045afa505050610aa05161060052610611610e80614714565b610e8051610e6052610d0051610e60511115615226575f610e80525f610fa052610d2051156109a857606036610fc03760206153f35f395f51610d0051610e60518082018281106152265790509050046110205260403661104037600160206153f35f395f510360021b60206153f35f395f51600a540204611080525f60206154135f395f51600881116152265780156108ad57905b806110a052610e60516110a051610ac0518110156152265760051b610ae001518082028115838383041417156152265790509050610d005180156152265780820490509050610fc0525f610fe0526110a051610d40518110156152265760051b610d6001516110005261100051610fc0511161072f57610fc0516110005103610fe05261073d565b61100051610fc05103610fe0525b670de0b6b3a76400006110a051610be0518110156152265760051b610c0001516110a051610ac0518110156152265760051b610ae00151611000518082018281106152265790509050808202811583838304141715615226579050905004611040526110405160405261102051606052611080516080526107bf6110c06138c4565b6110c05161106052610e805160078111615226576402540be40061106051610fe0518082028115838383041417156152265790509050048160051b610ea0015260018101610e8052506110a0516010548110156152265760110180546402540be4006110a051610e80518110156152265760051b610ea0015164012a05f20081028164012a05f2008204186152265790500480820182811061522657905090508155506110a051610d40518110156152265760051b610d600180516110a051610e80518110156152265760051b610ea0015180820382811161522657905090508152506001018181186106a7575b5050610be05160208160051b0180604082610be060045afa505050610d405160208160051b018061016082610d4060045afa5050506108ed6111c0613188565b6111c0805160208160051b01806110a0828560045afa505050506110a05160208160051b01806040826110a060045afa505050610aa051610160526109336111c0613347565b6111c051610e6052610d0051610d2051610e6051610d00518082038281116152265790509050808202811583838304141715615226579050905004610fa0526110a05160208160051b0180610340826110a060045afa505050610aa05161046052610e605161048052610a23613ed056610a23565b610e6051610fa052610e6051604052610e60516060526109c9610fc0612952565b610fc0516022556025546040526109e1611000613984565b6110006040610fc060408360045afa505042610fe0511015610a235742610fe052610fc051604052610fe051606052610a1b611000612952565b611000516025555b602435610fa0511015610a95576014610fc0527f536c697070616765207363726577656420796f75000000000000000000000000610fe052610fc050610fc05180610fe001601f825f031636823750506308c379a0610f80526020610fa052601f19601f610fc0510116604401610f9cfd5b610d2051610fa0518082018281106152265790509050610d20526026610a80516020525f5260405f208054610fa0518082018281106152265790509050815550610d2051602855610a80515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610fa051610fc0526020610fc0a3337f189c623b666b1b45b83d7178f39b8c087cb09774317ca2f53c2d3c3726f222a2608080610fc05280610fc0015f610960518083528060051b5f8260088111615226578015610b7a57905b8060051b61098001518160051b602088010152600101818118610b5c575b5050820160200191505090508101905080610fe05280610fc0015f610e80518083528060051b5f8260088111615226578015610bd057905b8060051b610ea001518160051b602088010152600101818118610bb2575b50508201602001915050905081019050610e605161100052610d205161102052610fc0a26020610fa060035f55f35b33610b0052610c19565b6064358060a01c61522657610b00525b60243580600f0b811861522657610ae0525f546002146152265760025f556004351561522657606036610b20375f610c80525f610ca0526004356103c052610ae0516103e052610c6a610cc0614a57565b610cc08051610b20526020810151610b405260408101805160208160051b0180610b60828560045afa50505050610160810151610c8052610180810151610ca05250604435610b20511015610d1e576018610cc0527f4e6f7420656e6f75676820636f696e732072656d6f7665640000000000000000610ce052610cc050610cc05180610ce001601f825f031636823750506308c379a0610c80526020610ca052601f19601f610cc0510116604401610c9cfd5b610ae0516010548110156152265760110180546402540be400610b405164012a05f20081028164012a05f20082041861522657905004808201828110615226579050905081555033604052600435606052610d77614f3d565b610ae051604052610b2051606052610b0051608052610d94612b55565b337f6f48129db1f37ccb9cc5dd7e119cb32750cabdf75b48375d730d26ce3659bbe1610ae051610cc052600435610ce052610b2051610d0052602854610d20526080610cc0a2610b605160208160051b018061034082610b6060045afa505050610c805161046052610ca05161048052610e0c613ed0565b6020610b2060035f55f35b33610a8052610e31565b6044358060a01c61522657610a80525b600435600401600881351161522657803560208160051b018083610960375050505f546002146152265760025f55610e6a610ac061323c565b610ac051610aa052610e7d610be0612d26565b610be0805160208160051b0180610ac0828560045afa50505050610ea2610d00613055565b610d00805160208160051b0180610be0828560045afa50505050610ac05160208160051b01806103c082610ac060045afa505050610be05160208160051b01806104e082610be060045afa505050610aa05161060052610f03610d20614714565b610d2051610d0052610be05160208160051b0180610d2082610be060045afa5050505f60206154135f395f5160088111615226578015610fdb57905b80610e4052610e4051610960518110156152265760051b610980015115610fd057610e4051610d20518110156152265760051b610d40018051610e4051610960518110156152265760051b61098001518082038281116152265790509050815250610e4051604052610e4051610960518110156152265760051b6109800151606052610a8051608052610fd0612b55565b600101818118610f3f575b5050610ac05160208160051b01806103c082610ac060045afa505050610d205160208160051b01806104e082610d2060045afa505050610aa05161060052611024610e60614714565b610e6051610e4052600160206153f35f395f510360021b60206153f35f395f51600a540204610e605260206153f35f395f51610d0051610e4051808201828110615226579050905004610e80525f610ea0525f610fc052608036610fe0375f60206154135f395f51600881116152265780156112a257905b8061106052610e405161106051610be0518110156152265760051b610c0001518082028115838383041417156152265790509050610d005180156152265780820490509050611000525f6110205261106051610d20518110156152265760051b610d400151611040526110405161100051116111245761100051611040510361102052611132565b611040516110005103611020525b670de0b6b3a764000061106051610ac0518110156152265760051b610ae0015161106051610be0518110156152265760051b610c000151611040518082018281106152265790509050808202811583838304141715615226579050905004610fe052610fe051604052610e8051606052610e60516080526111b46110806138c4565b61108051610fc052610ea05160078111615226576402540be400610fc051611020518082028115838383041417156152265790509050048160051b610ec0015260018101610ea05250611060516010548110156152265760110180546402540be40061106051610ea0518110156152265760051b610ec0015164012a05f20081028164012a05f20082041861522657905004808201828110615226579050905081555061106051610d20518110156152265760051b610d4001805161106051610ea0518110156152265760051b610ec00151808203828111615226579050905081525060010181811861109c575b5050610ac05160208160051b01806103c082610ac060045afa505050610d205160208160051b01806104e082610d2060045afa505050610aa051610600526112eb611060614714565b61106051610e4052610ac05160208160051b0180604082610ac060045afa505050610d205160208160051b018061016082610d2060045afa505050611331611060613188565b611060805160208160051b0180611180828560045afa50505050610aa0516112a052610e40516112c05261016061034061016061118060045afa50611374613ed0565b60285461106052610d0051610d0051610e40518082038281116152265790509050611060518082028115838383041417156152265790509050046001810181811061522657905061108052600261108051106152265760243561108051111561143c5760146110a0527f536c697070616765207363726577656420796f750000000000000000000000006110c0526110a0506110a051806110c001601f825f031636823750506308c379a061106052602061108052601f19601f6110a051011660440161107cfd5b336040526110805160605261144f614f3d565b337f3631c28b1f9dd213e0319fb167b554d76b6c283a41143eb400a0d1adb1af17556080806110a052806110a0015f610960518083528060051b5f82600881116152265780156114b957905b8060051b61098001518160051b60208801015260010181811861149b575b50508201602001915050905081019050806110c052806110a0015f610ea0518083528060051b5f826008811161522657801561150f57905b8060051b610ec001518160051b6020880101526001018181186114f1575b50508201602001915050905081019050610e40516110e05261106051611080518082038281116152265790509050611100526110a0a2602061108060035f55f35b336103c05260016103e052611599565b6044358060a01c615226576103c05260016103e052611599565b6044358060a01c615226576103c0526064358060011c615226576103e0525b602435600401600881351161522657803560208160051b0180836102a0375050505f546002146152265760025f5560285461040052600435156152265760206153f35f395f516102a05118615226575f610420526115f8610660613055565b610660805160208160051b0180610540828560045afa505050505f610660525f60206154135f395f516008811161522657801561176257905b80610680526104005161068051610540518110156152265760051b610560015160043580820281158383830414171561522657905090500461066052610680516102a0518110156152265760051b6102c001516106605110156117185760306106a0527f5769746864726177616c20726573756c74656420696e20666577657220636f696106c0527f6e73207468616e206578706563746564000000000000000000000000000000006106e0526106a0506106a051806106c001601f825f031636823750506308c379a061066052602061068052601f19601f6106a051011660440161067cfd5b610420516007811161522657610660518160051b610440015260018101610420525061068051604052610660516060526103c051608052611757612b55565b600101818118611631575b505033604052600435606052611776614f3d565b6025546040526117876106c0613984565b6106c0604061068060408360045afa50506022546106c0526fffffffffffffffffffffffffffffffff6106c051166106e0526106e051610400516106e0516004358082028115838383041417156152265790509050048082038281116152265790509050610740526106c05161012052602454610140526106a05161016052611811610700613dc6565b610700516107605260406040604061074060045afa50611832610720612952565b61072051602255426106a051101561186a57426106a052610680516040526106a051606052611862610700612952565b610700516025555b337f347ad828e58cbe534d8f6b67985d791360756b18f0d95fd9f197a66cc46480ea6060806107005280610700015f610420518083528060051b5f82600881116152265780156118d457905b8060051b61044001518160051b6020880101526001018181186118b6575b50508201602001915050905081019050806107205280610700015f5f82525f5f5f6008811161522657801561191b57905b5f8160051b602087010152600101818118611905575b505081016020019050905081019050600435610400510361074052610700a26103e0511561194b5761194b614faa565b6020806107005280610700015f610420518083528060051b5f826008811161522657801561199357905b8060051b61044001518160051b602088010152600101818118611975575b5050820160200191505090508101905061070060035f55f35b5f546002146152265760025f556119c1614faa565b60035f55005b6fffffffffffffffffffffffffffffffff60043560195481101561522657601a01541660405260206040f35b60043560195481101561522657601a015460801c60405260206040f35b611a1b6103e061323c565b6103e0516103c052611a2e610500612d26565b610500805160208160051b0180610860828560045afa50505050611a53610620613055565b610620805160208160051b0180610980828560045afa50505050610240604061024061086060045afa50611a88610740613188565b610740805160208160051b01806103e0828560045afa505050506103e05160208160051b01806040826103e060045afa5050506103c05161016052611ace610520613347565b610520516105005260206103e05160208160051b01806040826103e060045afa5050506103c051610160526105005161018052611b0c6105206139a9565b61052060043581518110156152265760051b60208201019050f35b5f5460021461522657602060043560195481101561522657601a015461012052602354610140526fffffffffffffffffffffffffffffffff6025541661016052611b72610200613dc6565b610200f35b5f54600214615226576020602254610120526024546101405260255460801c61016052611ba5610200613dc6565b610200f35b6004358060a01c6152265760c0523360405260c051606052602435608052611bd06151aa565b600160e052602060e0f35b6004358060a01c6152265760c0526024358060a01c6152265760e05260c05160405260e051606052604435608052611c116151aa565b602760c0516020525f5260405f2080336020525f5260405f20905054610100527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101005114611cc8576101005160443580820382811161522657905090506101205261012051602760c0516020525f5260405f2080336020525f5260405f209050553360c0517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561012051610140526020610140a35b6001610120526020610120f35b6004358060a01c615226576040526024356027336020525f5260405f20806040516020525f5260405f20905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b6004358060a01c61522657610120526024358060a01c61522657610140526084358060081c61522657610160526101205115615226576064354211615226576029610120516020525f5260405f2054610180525f60026101c0527f19010000000000000000000000000000000000000000000000000000000000006101e0526101c0805160208201836103200181518152505080830192505050611de2610200615117565b610200518161032001526020810190507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961024052610120516102605261014051610280526044356102a052610180516102c0526064356102e05260c061022052610220805160208201209050816103200152602081019050806103005261030090508051602082012090506101a052610120513b15611fab575f604060a46102603760406102405261024080516020820183610320018281848460045afa50505080830192505050610160516102a0526102a0601f810180516102e0525060016102c0526102c09050805160208201836103200181518152505080830192505050806103005261030090506020815101806101c0828460045afa5050507f1626ba7e0000000000000000000000000000000000000000000000000000000061012051631626ba7e6102405260406101a051610260528061028052806102600160206101c051018082826101c060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050602061024060c461025c845afa611f93573d5f5f3e3d5ffd5b60203d10615226576102409050511861522657611feb565b610120515f610240526101a0516101c052610160516101e05260a4356102005260c43561022052602061024060806101c060015afa506102405118615226575b6044356027610120516020525f5260405f2080610140516020525f5260405f20905055600161018051016029610120516020525f5260405f205561014051610120517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256044356101c05260206101c0a360016101c05260206101c0f35b6020612075610120615117565b610120f35b60043580600f0b81186152265760405260243580600f0b811861522657606052602060206154335f395f5163e31593d8608052602060806004609c845afa6120c4573d5f5f3e3d5ffd5b60203d10615226576080518060a01c6152265760c05260c09050516383aa796a60e0526040516101005260605161012052604435610140523061016052602060e0608460fc845afa612118573d5f5f3e3d5ffd5b60203d106152265760e09050f35b60043580600f0b81186152265760405260243580600f0b811861522657606052602060206154335f395f5163e31593d8608052602060806004609c845afa612170573d5f5f3e3d5ffd5b60203d10615226576080518060a01c6152265760c05260c0905051630c601c2c60e0526040516101005260605161012052604435610140523061016052602060e0608460fc845afa6121c4573d5f5f3e3d5ffd5b60203d106152265760e09050f35b60243580600f0b811861522657610ae05260206004356103c052610ae0516103e0526121ff610b00614a57565b610b00f35b5f546002146152265760285460405260206040f35b5f546002146152265761222d6103e061323c565b6103e0516103c052612240610500612d26565b610500805160208160051b0180610860828560045afa50505050612265610620613055565b610620805160208160051b0180610980828560045afa50505050610240604061024061086060045afa5061229a610740613188565b610740805160208160051b01806103e0828560045afa505050506103e05160208160051b01806040826103e060045afa5050506103c051610160526122e0610520613347565b610520516105005261050051670de0b6b3a7640000810281670de0b6b3a764000082041861522657905060285480156152265780820490509050610520526020610520f35b600435600401600881351161522657803560208160051b0180836040375050506024358060011c6152265761016052602060206154335f395f5163e31593d8610180526020610180600461019c845afa612381573d5f5f3e3d5ffd5b60203d1061522657610180518060a01c615226576101c0526101c090505163fb79eb276101e0526060806102005280610200015f6040518083528060051b5f82600881116152265780156123ee57905b8060051b606001518160051b6020880101526001018181186123d1575b50508201602001915050905081019050610160516102205230610240525060206101e06101846101fc845afa612426573d5f5f3e3d5ffd5b60203d10615226576101e09050f35b606461244160c061323c565b60c0510460e052602060e0f35b602061245a60c061323c565b60c0f35b602061246b6101e0613055565b6101e060043581518110156152265760051b60208201019050f35b602080610300526124986101e0613055565b6101e081610300015f82518083528060051b5f82600881116152265780156124db57905b8060051b6020880101518160051b6020880101526001018181186124bc575b505082016020019150509050905081019050610300f35b60208061036052612504610240612d26565b61024081610360015f82518083528060051b5f826008811161522657801561254757905b8060051b6020880101518160051b602088010152600101818118612528575b505082016020019150509050905081019050610360f35b60043580600f0b81186152265760405260243580600f0b811861522657606052602060206154335f395f5163e31593d8608052602060806004609c845afa6125a8573d5f5f3e3d5ffd5b60203d10615226576080518060a01c6152265760c05260c090505163a63530bd60e05260405161010052606051610120523061014052602060e0606460fc845afa6125f5573d5f5f3e3d5ffd5b60203d106152265760e09050f35b60206154335f395f5163f851a44060c052602060c0600460dc845afa61262b573d5f5f3e3d5ffd5b60203d106152265760c0518060a01c6152265761010052610100905051331861522657600e5462015180810181811061522657905042106152265742620151808101818110615226579050602435106152265761268860e061323c565b60e05160c0526004356064810281606482041861522657905060e052600435156126ba57620f423f60043511156126bc565b5f5b156152265760c05160e051106126ec5760c051600a810281600a82041861522657905060e0511161522657612708565b60c05160e051600a810281600a82041861522657905010615226575b60c051600c5560e051600d5542600e55602435600f557fa2b71ec6df949300b59aab36b55e189697b750119dd349fcfa8c0f779e83c25460c0516101005260e051610120524261014052602435610160526080610100a1005b60206154335f395f5163f851a44060c052602060c0600460dc845afa612789573d5f5f3e3d5ffd5b60203d106152265760c0518060a01c61522657610100526101009050513318615226576127b660e061323c565b60e05160c05260c051600c5560c051600d5542600e5542600f557f46e22fb3709ad289f62ce63d469248536dbc78d82b84a3d7e74ad606dc20193860c05160e0524261010052604060e0a1005b60206154335f395f5163f851a440604052602060406004605c845afa61282b573d5f5f3e3d5ffd5b60203d10615226576040518060a01c61522657608052608090505133186152265764012a05f2006004351161522657600435600a556802b5e3af16b188000060243560043580820281158383830414171561522657905090501161522657602435600b557f750d10a7f37466ce785ee6bcb604aac543358db42afbcc332a3c12a49c80bf6d6040600460403760406040a1005b60206154335f395f5163f851a440604052602060406004605c845afa6128e6573d5f5f3e3d5ffd5b60203d10615226576040518060a01c6152265760805260809050513318615226576024356004350215615226576004356023556024356024557f68dc4e067dff1862b896b7a0faf55f97df1a60d0aaa79481b69d675f2026a28c6040600460403760406040a1005b5f5ffd5b6fffffffffffffffffffffffffffffffff60405111615226576fffffffffffffffffffffffffffffffff606051116152265760605160801b60405117815250565b602060405160206154535f395f518110156152265760051b6080016153f3015f395f516370a0823160e0523061010052602060e0602460fc845afa6129da573d5f5f3e3d5ffd5b60203d106152265760e090505160c05260a051612af6576060511561522657602060405160206154535f395f518110156152265760051b6080016153f3015f395f516323b872dd60e05260805161010052306101205260605161014052602060e0606460fc5f855af1612a4f573d5f5f3e3d5ffd5b3d612a6657803b1561522657600161016052612a7e565b60203d106152265760e0518060011c61522657610160525b6101609050511561522657602060405160206154535f395f518110156152265760051b6080016153f3015f395f516370a0823160e0523061010052602060e0602460fc845afa612ad0573d5f5f3e3d5ffd5b60203d106152265760e090505160c051808203828111615226579050905060c052612b27565b60c0516040516001548110156152265760020154808203828111615226579050905060c05260605160c05110615226575b60405160015481101561522657600201805460c051808201828110615226579050905081555060c051815250565b608051156152265760206156935f395f51612c1e576040516001548110156152265760020180546060518082038281116152265790509050815550602060405160206154535f395f518110156152265760051b6080016153f3015f395f5163a9059cbb60a05260805160c05260605160e052602060a0604460bc5f855af1612bdf573d5f5f3e3d5ffd5b3d612bf657803b1561522657600161010052612c0e565b60203d106152265760a0518060011c61522657610100525b6101009050511561522657612d24565b602060405160206154535f395f518110156152265760051b6080016153f3015f395f516370a0823160c0523060e052602060c0602460dc845afa612c64573d5f5f3e3d5ffd5b60203d106152265760c090505160a052602060405160206154535f395f518110156152265760051b6080016153f3015f395f5163a9059cbb60c05260805160e05260605161010052602060c0604460dc5f855af1612cc4573d5f5f3e3d5ffd5b3d612cdb57803b1561522657600161012052612cf3565b60203d106152265760c0518060011c61522657610120525b610120905051156152265760a051606051808203828111615226579050905060405160015481101561522657600201555b565b60206156b35f395f5160208160051b01806156b360403950505f60206154135f395f516008811161522657801561303a57905b8061016052600160206101605160206155735f395f518110156152265760051b6101a0016153f3015f395f5118612db65760206101605160206157d35f395f518110156152265760051b610400016153f3015f395f511515612db8565b5f5b612ee757600360206101605160206155735f395f518110156152265760051b6101a0016153f3015f395f511861302f57670de0b6b3a7640000610160516040518110156152265760051b6060015160206101605160206154535f395f518110156152265760051b6080016153f3015f395f516307a2d13a6101805260206101605160206158f35f395f518110156152265760051b610520016153f3016101a0396020610180602461019c845afa612e71573d5f5f3e3d5ffd5b60203d106152265761018090505180820281158383830414171561522657905090506020610160516020615a135f395f518110156152265760051b610640016153f3015f395f51808202811583838304141715615226579050905004610160516040518110156152265760051b6060015261302f565b60206101605160206157d35f395f518110156152265760051b610400016153f3015f395f5173ffffffffffffffffffffffffffffffffffffffff811690508060a01c615226575a7fffffffff0000000000000000000000000000000000000000000000000000000060206101605160206157d35f395f518110156152265760051b610400016153f3015f395f51166101e05260206101c0526101c05060206102206101c0516101e08585fa90509050612fa2573d5f5f3e3d5ffd5b3d602081183d60201002186102005261020080516101805260208101516101a0525060206101805118615226576101a0516101805160200360031b1c6101c052670de0b6b3a7640000610160516040518110156152265760051b606001516101c051808202811583838304141715615226579050905004610160516040518110156152265760051b606001525b600101818118612d59575b505060405160208160051b01808382604060045afa50505050565b5f6040525f610160525f60206154135f395f516008811161522657801561316d57905b806101805260206156935f395f516130c557610180516001548110156152265760020154610180516010548110156152265760110154808203828111615226579050905061016052613143565b60206101805160206154535f395f518110156152265760051b6080016153f3015f395f516370a082316101a052306101c05260206101a060246101bc845afa613110573d5f5f3e3d5ffd5b60203d10615226576101a09050516101805160105481101561522657601101548082038281116152265790509050610160525b6040516007811161522657610160518160051b606001526001810160405250600101818118613078575b505060405160208160051b01808382604060045afa50505050565b5f610280525f60206154135f395f516008811161522657801561321f57905b806103a052610280516007811161522657670de0b6b3a76400006103a0516040518110156152265760051b606001516103a051610160518110156152265760051b61018001518082028115838383041417156152265790509050048160051b6102a001526001810161028052506001018181186131a7575b50506102805160208160051b0180838261028060045afa50505050565b600f54604052600d5460605260405142106132605760605181525061334556613345565b600c54608052600e5460a052608051606051116132e257608051606051608051034260a0518082038281116152265790509050808202811583838304141715615226579050905060405160a051808203828111615226579050905080156152265780820490509050808203828111615226579050905081525061334556613345565b608051608051606051034260a0518082038281116152265790509050808202811583838304141715615226579050905060405160a05180820382811161522657905090508015615226578082049050905080820182811061522657905090508152505b565b5f610180525f6040516008811161522657801561339157905b8060051b606001516101a052610180516101a051808201828110615226579050905061018052600101818118613360575b5050610180516133a4575f8152506135bd565b610180516101a0526101605160206153f35f395f5180820281158383830414171561522657905090506101c0525f60ff905b806101e0526101a051610200525f6040516008811161522657801561343f57905b8060051b6060015161022052610200516101a05180820281158383830414171561522657905090506102205180156152265780820490509050610200526001018181186133f7575b50506102005160206153f35f395f5160206153f35f395f510a80156152265780820490509050610200526101a0516102205260646101c051610180518082028115838383041417156152265790509050046102005160206153f35f395f51808202811583838304141715615226579050905080820182811061522657905090506101a051808202811583838304141715615226579050905060646101c051606481038181116152265790506101a051808202811583838304141715615226579050905004600160206153f35f395f51016102005180820281158383830414171561522657905090508082018281106152265790509050801561522657808204905090506101a052610220516101a05111613582576001610220516101a0518082038281116152265790509050116135ad576101a05183525050506135bd566135ad565b60016101a051610220518082038281116152265790509050116135ad576101a05183525050506135bd565b6001018181186133d65750505f5ffd5b565b60605160405114615226575f606051126152265760206154135f395f516060511215615226575f604051126152265760206154135f395f516040511215615226576101c051610200526101e0516102205260603661024037610220516102a0526102005160206153f35f395f5180820281158383830414171561522657905090506102c0525f6008905b806102e05260206154135f395f516102e051186136655761371f565b6040516102e0511861367d57608051610260526136ab565b6060516102e05114613714576102e05160a0518110156152265760051b60c00151610260526136ab56613714565b61024051610260518082018281106152265790509050610240526102a0516102205180820281158383830414171561522657905090506102605160206153f35f395f518082028115838383041417156152265790509050801561522657808204905090506102a0525b600101818118613649575b50506102a051610220518082028115838383041417156152265790509050606481028160648204186152265790506102c05160206153f35f395f518082028115838383041417156152265790509050801561522657808204905090506102a0526102405161022051606481028160648204186152265790506102c0518015615226578082049050905080820182811061522657905090506102e05261022051610300525f60ff905b80610320526103005161028052610300516103005180820281158383830414171561522657905090506102a0518082018281106152265790509050610300518060011b818160011c186152265790506102e0518082018281106152265790509050610220518082038281116152265790509050801561522657808204905090506103005261028051610300511161388757600161028051610300518082038281116152265790509050116138b2576103005183525050506138c2566138b2565b600161030051610280518082038281116152265790509050116138b2576103005183525050506138c2565b6001018181186137c75750505f5ffd5b565b600b5460a0526402540be40060a051116138e357608051815250613982565b60405160605180820182811061522657905090506fffffffffffffffffffffffffffffffff8111615226576002810a905060c0526402540be4006402540be40060a051038060021b818160021c186152265790506040518082028115838383041417156152265790509050606051808202811583838304141715615226579050905060c051801561522657808204905090500160805160a05102048152505b565b6fffffffffffffffffffffffffffffffff60405116815260405160801c602082015250565b60206153f35f395f5161016051026101a05260206153f35f395f5160206153f35f395f510a61018051046101c0525f60206154135f395f5160088111615226578015613a4357905b806101e0526101c0516101805180820281158383830414171561522657905090506101e0516040518110156152265760051b60600151801561522657808204905090506101c0526001018181186139f1575b50505f6101e05260646101a05160405115615226575f60051b6060015180820281158383830414171561522657905090500461030052600160078101905b806103205260206153f35f395f516103205118613a9d57613b57565b6101e051600781116152265761030051610320516040518110156152265760051b606001516101c05160405115615226575f60051b606001518082028115838383041417156152265790509050048082018281106152265790509050670de0b6b3a7640000810281670de0b6b3a7640000820418615226579050610300516101c0518082018281106152265790509050801561522657808204905090508160051b6102000152600181016101e05250600101818118613a81575b50506101e05160208160051b018083826101e060045afa50505050565b6040516060527ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d760405113613bac575f815250613dc4565b680755bf798b4a1bf1e46040511315613c1b5760106080527f7761645f657870206f766572666c6f770000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b6503782dace9d9604051604e1b056060526b8000000000000000000000006bb17217f7d1cf79abc9e3b39860605160601b050160601d6080526bb17217f7d1cf79abc9e3b39860805102606051036060526d02d16720577bd19bf614176fe9ea6060516c10fe68e7fd37d0007b713f7650606051010260601d0160a05279d835ebba824c98fb31b83b2ca45c0000000000000000000000006060516e0587f503bb6ea29d25fcb74019645060a0516d04a4fd9f2a8b96949216d2255a6c60605160a05101030260601d01020160c0526d0277594991cfc85f6e2461837cd96060516c240c330e9fb2d9cbaf0fd5aafc606051030260601d0160e0526d1a521255e34f6a5061b25ef1c9c460605160e0510260601d0360e0526db1bbb201f443cf962f1a1d3db4a560605160e0510260601d0160e0526e02c72388d9f74f51a9331fed693f1560605160e0510260601d0360e0526e05180bb14799ab47a8a8cb2a527d5760605160e0510260601d0160e05260e05160c051056101005274029d9dc38563c32e5c2f6dc192ee70ef65f9978af3610100510260805160c3035f8112615226571c8152505b565b6fffffffffffffffffffffffffffffffff6101205116610180526101205160801c6101a05242610160511015613ec65761014051670de0b6b3a764000061016051420302048060ff1c615226577f80000000000000000000000000000000000000000000000000000000000000008114615226575f03604052613e4a6101e0613b74565b6101e0516101c052670de0b6b3a7640000610180516101c05180670de0b6b3a764000003670de0b6b3a7640000811161522657905080820281158383830414171561522657905090506101a0516101c0518082028115838383041417156152265790509050808201828110615226579050905004815250613ece565b6101a0518152505b565b602554604052613ee16104e0613984565b6104e060406104a060408360045afa505060195460208160051b015f81601f0160051c60098111615226578015613f2d57905b80601901548160051b6104e00152600101818118613f14575b505050506104e05160208160051b0180610600826104e060045afa5050506103405160208160051b018060408261034060045afa50505061046051610160526104805161018052613f7f6108406139a9565b610840805160208160051b0180610720828560045afa505050505f6008905b806108405260206153f35f395f51600181038181116152265790506108405118613fc757614096565b61084051610720518110156152265760051b61074001511561408b5761084051610720518110156152265760051b6107400151671bc16d674ec80000818118671bc16d674ec800008310021890506108a052610840516104e0518110156152265760051b610500015161012052602354610140526104a0516101605261404e610860613dc6565b610860516108c0526040604060406108a060045afa5061406f610880612952565b6108805161084051610600518110156152265760051b61062001525b600101818118613f9e575b50506106005160208160051b015f81601f0160051c600981116152265780156140d457905b8060051b610600015181601901556001018181186140bb575b5050505060225461084052610480516108a0526108405161012052602454610140526104c05161016052614109610860613dc6565b610860516108c0526040604060406108a060045afa5061412a610880612952565b610880516022555f6002905b80610860524261086051600181116152265760051b6104a00151101561416c574261086051600181116152265760051b6104a001525b6001018181186141365750506104a0516040526104c051606052614191610860612952565b61086051602555565b6141a5610c2061323c565b610c2051610c00526109805160208160051b018060408261098060045afa505050610c0051610160526141d9610c40613347565b610c4051610c2052610bc051604052610be051606052610960516080526109805160208160051b018060a08261098060045afa505050610c00516101c052610c20516101e05261422a610c606135bf565b610c6051610c4052610be051610980518110156152265760051b6109a00151610c4051808203828111615226579050905060018103818111615226579050610c60526402540be400610c6051610bc051610980518110156152265760051b6109a0015161096051808201828110615226579050905060011c604052610be051610980518110156152265760051b6109a00151610c4051808201828110615226579050905060011c606052600a546080526142e5610ca06138c4565b610ca051808202811583838304141715615226579050905004610c8052610c6051610c80518082038281116152265790509050670de0b6b3a7640000810281670de0b6b3a7640000820418615226579050610be051610aa0518110156152265760051b610ac0015180156152265780820490509050610c6052610be051601054811015615226576011018054610be051610aa0518110156152265760051b610ac001516402540be400610c805164012a05f20081028164012a05f20082041861522657905004670de0b6b3a7640000810281670de0b6b3a76400008204186152265790500480820182811061522657905090508155506109805160208160051b0180610ca08261098060045afa50505061096051610bc051610ca0518110156152265760051b610cc00152610c4051610be051610ca0518110156152265760051b610cc00152610ca05160208160051b018061034082610ca060045afa505050610c005161046052610c20516104805261445d613ed0565b610c6051815250565b610e0051610de0511461522657610e20511561522657614487610fc0612d26565b610fc0805160208160051b0180610ea0828560045afa505050506144ac6110e0613055565b6110e0805160208160051b0180610fc0828560045afa50505050610ea05160208160051b0180604082610ea060045afa505050610fc05160208160051b018061016082610fc060045afa505050614504611200613188565b611200805160208160051b01806110e0828560045afa50505050610de051604052610e2051606052610dc051608052610e805160a052614545611220612993565b6112205161120052610de0516110e0518110156152265760051b6111000151670de0b6b3a764000061120051610de051610ea0518110156152265760051b610ec0015180820281158383830414171561522657905090500480820182811061522657905090506112205261122051610960526110e05160208160051b0180610980826110e060045afa505050610ea05160208160051b0180610aa082610ea060045afa505050610de051610bc052610e0051610be05261460661126061419a565b6112605161124052610e40516112405110156146a657602e611260527f45786368616e676520726573756c74656420696e20666577657220636f696e73611280527f207468616e2065787065637465640000000000000000000000000000000000006112a05261126050611260518061128001601f825f031636823750506308c379a061122052602061124052601f19601f61126051011660440161123cfd5b610e005160405261124051606052610e60516080526146c3612b55565b337f8b3e96f2b889fa771c53c981b40daf005f63f637f1869f707052d15a3dd97140610de051611260526112005161128052610e00516112a052611240516112c0526080611260a261124051815250565b6103c05160208160051b01806040826103c060045afa5050506104e05160208160051b0180610160826104e060045afa505050614752610740613188565b610740805160208160051b0180610620828560045afa505050506106205160208160051b018060408261062060045afa5050506106005161016052614798610740613347565b61074051815250565b5f606051126152265760206154135f395f516060511215615226576060366101c0376101a0516102205260405160206153f35f395f518082028115838383041417156152265790509050610240525f6008905b806102605260206154135f395f516102605118614810576148b2565b60605161026051146148a757610260516080518110156152265760051b60a001516101e05261483e566148a7565b6101c0516101e05180820182811061522657905090506101c052610220516101a05180820281158383830414171561522657905090506101e05160206153f35f395f51808202811583838304141715615226579050905080156152265780820490509050610220525b6001018181186147f4575b5050610220516101a0518082028115838383041417156152265790509050606481028160648204186152265790506102405160206153f35f395f51808202811583838304141715615226579050905080156152265780820490509050610220526101c0516101a0516064810281606482041861522657905061024051801561522657808204905090508082018281106152265790509050610260526101a051610280525f60ff905b806102a052610280516102005261028051610280518082028115838383041417156152265790509050610220518082018281106152265790509050610280518060011b818160011c186152265790506102605180820182811061522657905090506101a05180820382811161522657905090508015615226578082049050905061028052610200516102805111614a1a5760016102005161028051808203828111615226579050905011614a4557610280518352505050614a5556614a45565b60016102805161020051808203828111615226579050905011614a4557610280518352505050614a55565b60010181811861495a5750505f5ffd5b565b614a6261042061323c565b6104205161040052614a75610540612d26565b610540805160208160051b0180610420828560045afa505050506104205160208160051b01806108a08261042060045afa505050614ab4610660613055565b610660805160208160051b01806109c0828560045afa5050505061024060406102406108a060045afa50614ae9610780613188565b610780805160208160051b0180610540828560045afa505050506105405160208160051b018060408261054060045afa5050506104005161016052614b2f610680613347565b610680516106605260285461068052610660516103c051610660518082028115838383041417156152265790509050610680518015615226578082049050905080820382811161522657905090506106a052610400516040526103e0516060526105405160208160051b018060808261054060045afa5050506106a0516101a052614bbb6106e06147a1565b6106e0516106c052600160206153f35f395f510360021b60206153f35f395f51600a5402046106e0526105405160208160051b01806107008261054060045afa50505060206153f35f395f5160011b610660516106a05180820182811061522657905090500461082052608036610840375f6008905b806108c05260206154135f395f516108c05118614c4d57614daa565b5f610840526108c051610540518110156152265760051b6105600151610860526103e0516108c05118614cdf57610860516106a051808202811583838304141715615226579050905061066051801561522657808204905090506106c051808203828111615226579050905061084052610860516106c051808201828110615226579050905060011c61088052614d2b565b61086051610860516106a0518082028115838383041417156152265790509050610660518015615226578082049050905080820382811161522657905090506108405261086051610880525b61088051604052610820516060526106e051608052614d4b6108e06138c4565b6108e0516108a052610860516402540be4006108a0516108405180820281158383830414171561522657905090500480820382811161522657905090506108c051610700518110156152265760051b6107200152600101818118614c31575b50506103e051610700518110156152265760051b6107200151610400516040526103e0516060526107005160208160051b018060808261070060045afa5050506106a0516101a052614dfd6108e06147a1565b6108e05180820382811161522657905090506108c0526103e051610540518110156152265760051b61056001516106c0518082038281116152265790509050670de0b6b3a7640000810281670de0b6b3a76400008204186152265790506103e051610420518110156152265760051b6104400151801561522657808204905090506108e0526103e051610420518110156152265760051b61044001516108c05160018103818111615226579050670de0b6b3a7640000810281670de0b6b3a7640000820418615226579050046108c0526106c0516103e051610540518110156152265760051b61056001526108c05181526108e0516108c051808203828111615226579050905060208201526105405160208160051b016040830181818361054060045afa50505050610400516101608201526106a05161018082015250565b602854606051808203828111615226579050905060285560266040516020525f5260405f20805460605180820382811161522657905090508155505f6040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b60206154335f395f5163cab4d3db610160526020610160600461017c845afa614fd5573d5f5f3e3d5ffd5b60203d1061522657610160518060a01c615226576101a0526101a0905051610140526101405161500457615115565b60105460208160051b015f81601f0160051c6009811161522657801561503f57905b80601001548160051b6101600152600101818118615026575b505050505f60206154135f395f51600881116152265780156150d257905b806102805261028051610160518110156152265760051b6101800151156150c7576102805160405261028051610160518110156152265760051b6101800151606052610140516080526150ae612b55565b5f61028051610160518110156152265760051b61018001525b60010181811861505d575b50506101605160208160051b015f81601f0160051c6009811161522657801561511057905b8060051b610160015181601001556001018181186150f7575b505050505b565b6020615bf35f395f51461461519f577fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564726060526020615bd36080397f1c54f243822e0e9a0a377610b81577e771b3efe79964e76636b0d5d10247950d60a0524660c0523060e0526020615c136101003960c060405260408051602082012090508152506151a8565b6020615c338239505b565b60266040516020525f5260405f208054608051808203828111615226579050905081555060266060516020525f5260405f20805460805180820182811061522657905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60805160a052602060a0a3565b5f80fd0299538309065752a30a809452480d1cfc52e90c008153c207076c533d0ad40ddb8c1550652081066c00dc059c4258c4011a053931ab5219c72554fd4d5001c90576a9cd3e255e455e604cd2156085b72df5de03f4651a4d01d20bff6567df02ca207a6529357750006705e2e7d26400f425ec0238621a1025fd0684b124f20518160ddd220405a9059cbb1baa4570a0823102372530c5408519ac05ddca3f43009d055e0d443f21266506fdde03013205a7256d0903fe85c66106570075258edfdd5f00a905ddc1f59d02dea5cc2b27d721d24590d2083719f3253644e515206805313ce56701be05081579a50c09851ddc3b01012605d505accf1d3de5bfa0b13302c60595d89b410178051be913a5010e057706db750e1765fee3f7f900b505095ea7b31cd54514f0597924860565bbea6b28be45907a016b1b7705b4b577ad00d0054903b0d1245e2523b872dd1bdb65687276531b27252969e04a157aa5551a65882761051405228800e8055409491a00c405015c28382803454a6e32c60e21857ecebe0002a0257e3db030035d85dd62ed3e025d45bb7b8b802219053c157e6426034576a2f0f0244e053df0212402d485f446c1d02435053db06dd8232565afb430120367a5841953f387181e185b184618541846183f1831190860a16576797065728300030a0023000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000003d090000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000000000000a2500000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000b4c5553442f446f6c6c6172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4c555344446f6c6c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d10300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+ ],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x6ec39d56006098dfab8f892bf2584c2df0cdbbdba32790318b4e7a7bd3a1069b",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x115ac",
+ "value": "0x0",
+ "input": "0x1f7e8c7e000000000000000000000000cc68509f9ca0e1ed119eac7c468ec1b1c42f384f",
+ "nonce": "0x465",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xc140cd970fd44fbe40cd8cf44d599756778eb631c5c62bbd2e2f4791efbd31f1",
+ "transactionType": "CALL",
+ "contractName": null,
+ "contractAddress": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "function": "grantRole(bytes32,address)",
+ "arguments": ["0x3a2e010201653e4743db35ee85e81b63eb19cf8948f24794ef2b4dba5ecf49c9", "0xED3084c98148e2528DaDCB53C56352e549C488fA"],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "gas": "0x125c8",
+ "value": "0x0",
+ "input": "0x2f2ff15d3a2e010201653e4743db35ee85e81b63eb19cf8948f24794ef2b4dba5ecf49c9000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x466",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x6d154269fb29eefff3c1cbbcdeab165cb2bb1b421df7ce1dbbaf950e22e62169",
+ "transactionType": "CALL",
+ "contractName": null,
+ "contractAddress": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "function": "grantRole(bytes32,address)",
+ "arguments": ["0xa3405bb4244d0786f3e4178acef3953ebb3f56c1e97e9530871f50739923c1cf", "0xED3084c98148e2528DaDCB53C56352e549C488fA"],
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "gas": "0x125c8",
+ "value": "0x0",
+ "input": "0x2f2ff15da3405bb4244d0786f3e4178acef3953ebb3f56c1e97e9530871f50739923c1cf000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "nonce": "0x467",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xc3ec04777c62001f9020f9caaaccf7b8b92d88b9b006da09643da9abad39aa8a",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1157b",
+ "value": "0x0",
+ "input": "0xe2d443bd0000000000000000000000004e38d89362f7e5db0096ce44ebd021c3962aa9a0",
+ "nonce": "0x468",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0xa77b0dbf15da5c7707c0a2ab5e056386f75b0172dca10f9cf3f0631930bd40b4",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x1961f",
+ "value": "0x0",
+ "input": "0xa14d1f780000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000e10",
+ "nonce": "0x469",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x3882a2c08ecb242154d48ddbe6a5285b48694ee91829781e4634c6aa7e3fd7ef",
+ "transactionType": "CALL",
+ "contractName": "Diamond",
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "gas": "0x11c70",
+ "value": "0x0",
+ "input": "0x9b94607c000000000000000000000000acdc85afcd8b83eb171affcbe29fad204f6ae45c",
+ "nonce": "0x46a",
+ "chainId": "0x1"
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ }
+ ],
+ "receipts": [
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x825071",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x29d4c9a8b3b5b9480032ac1ee2374be917a6f5fd22a3f5db882d819be6b9b3bb",
+ "transactionIndex": "0x6c",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xc4f14",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xe17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x9ad4fa",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x569b506b9a9876af9d309da49dcfd4c34de030f61ab3227fb9f3e751b03c7cbd",
+ "transactionIndex": "0x6d",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x188489",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xd3c81bd07948a38546bca894f8bfecb552613798"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xa24583",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x1afc7573f218b35609513d77be2ca2392aa11440dc2490aaa16bb8ec3ba688fd",
+ "transactionIndex": "0x6e",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x77089",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xd11b60c336a8416162272475ff9df572e516fc51"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xc0ae85",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xf5c03465a68a86b700aba947ffdc09e320cfd13c4a659cb54b858141e604407c",
+ "transactionIndex": "0x6f",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x1e6902",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x0e9f3299b9443d3d5130771f26b7e18a2a7aa9db"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xc49913",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xd1ab4e2ee714a62be280b18b1c04b8a2e6ec63eddf8990e0bb88de7c70bc1a03",
+ "transactionIndex": "0x70",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x3ea8e",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x58860e93b6fc7a6e4abd0f5d851a88654a34d0c0"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x104204c",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x3c4a05d831ee1a3f2d1afe2e53a3b1be5104618b35cb1216941e43419072d49c",
+ "transactionIndex": "0x71",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x3f8739",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xb64f2347752192f51930ad6ad3bea0b3a2074fac"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x108f337",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xdd953eb1dafbdb036b436d2cd1fa8c430bfb3a4cf2effb1924a161d570ca1bda",
+ "transactionIndex": "0x72",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x4d2eb",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x12fe22572873d18764df0c999b6c998bfab247fb"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x141080b",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xda",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673"],
+ "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000012fe22572873d18764df0c999b6c998bfab247fb0000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000a80000000000000000000000000e17a61e55ccbc3d1e56b6a26ea1d4f8382a40ad9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000091d14854000000000000000000000000000000000000000000000000000000008456cb59000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000008bb9c5bf00000000000000000000000000000000000000000000000000000000d547741f000000000000000000000000000000000000000000000000000000001e4e0091000000000000000000000000000000000000000000000000000000003f4ba83a00000000000000000000000000000000000000000000000000000000000000000000000000000000d3c81bd07948a38546bca894f8bfecb5526137980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000d11b60c336a8416162272475ff9df572e516fc51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000e9f3299b9443d3d5130771f26b7e18a2a7aa9db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000291a47c90400000000000000000000000000000000000000000000000000000000421e108c0000000000000000000000000000000000000000000000000000000091df16d300000000000000000000000000000000000000000000000000000000b0bd67b4000000000000000000000000000000000000000000000000000000008b38ebb300000000000000000000000000000000000000000000000000000000ebef28a700000000000000000000000000000000000000000000000000000000017df32700000000000000000000000000000000000000000000000000000000fbff3a4100000000000000000000000000000000000000000000000000000000e0ee685500000000000000000000000000000000000000000000000000000000bc3ea01800000000000000000000000000000000000000000000000000000000a9b8b79600000000000000000000000000000000000000000000000000000000214f788200000000000000000000000000000000000000000000000000000000b42165d000000000000000000000000000000000000000000000000000000000221e2e600000000000000000000000000000000000000000000000000000000033c5aa5700000000000000000000000000000000000000000000000000000000c0030add00000000000000000000000000000000000000000000000000000000dd390ea000000000000000000000000000000000000000000000000000000000ba2d8cdd0000000000000000000000000000000000000000000000000000000093e4e9ee000000000000000000000000000000000000000000000000000000001a867af500000000000000000000000000000000000000000000000000000000f986cd5700000000000000000000000000000000000000000000000000000000f6f172cb0000000000000000000000000000000000000000000000000000000015f9739800000000000000000000000000000000000000000000000000000000e2d443bd00000000000000000000000000000000000000000000000000000000016afee700000000000000000000000000000000000000000000000000000000be1d86e10000000000000000000000000000000000000000000000000000000092324611000000000000000000000000000000000000000000000000000000001f7e8c7e000000000000000000000000000000000000000000000000000000001c1f8aa3000000000000000000000000000000000000000000000000000000000083faee00000000000000000000000000000000000000000000000000000000147f1b96000000000000000000000000000000000000000000000000000000006605bfda00000000000000000000000000000000000000000000000000000000826d5b8b00000000000000000000000000000000000000000000000000000000d3815fb900000000000000000000000000000000000000000000000000000000965cc7ac000000000000000000000000000000000000000000000000000000003535f48b00000000000000000000000000000000000000000000000000000000ad3401ed0000000000000000000000000000000000000000000000000000000036c3df2400000000000000000000000000000000000000000000000000000000c5f956af000000000000000000000000000000000000000000000000000000008fe6368300000000000000000000000000000000000000000000000000000000e8b734240000000000000000000000000000000000000000000000000000000000000000000000000000000058860e93b6fc7a6e4abd0f5d851a88654a34d0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000b64f2347752192f51930ad6ad3bea0b3a2074fac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000202ed4d2d6000000000000000000000000000000000000000000000000000000007efc918f0000000000000000000000000000000000000000000000000000000081f17467000000000000000000000000000000000000000000000000000000009aae55a70000000000000000000000000000000000000000000000000000000082ae27cd00000000000000000000000000000000000000000000000000000000b4eae1cb000000000000000000000000000000000000000000000000000000009c494373000000000000000000000000000000000000000000000000000000009d202bf8000000000000000000000000000000000000000000000000000000009b52b9a80000000000000000000000000000000000000000000000000000000017b2bffa0000000000000000000000000000000000000000000000000000000087dcd5fb000000000000000000000000000000000000000000000000000000005b0bdd8a0000000000000000000000000000000000000000000000000000000092beb04200000000000000000000000000000000000000000000000000000000245cd973000000000000000000000000000000000000000000000000000000002287fe4000000000000000000000000000000000000000000000000000000000c4cb35cf00000000000000000000000000000000000000000000000000000000edecef95000000000000000000000000000000000000000000000000000000007e625a550000000000000000000000000000000000000000000000000000000030bbe58500000000000000000000000000000000000000000000000000000000de858d7c000000000000000000000000000000000000000000000000000000006060663e00000000000000000000000000000000000000000000000000000000a14d1f7800000000000000000000000000000000000000000000000000000000cec10c11000000000000000000000000000000000000000000000000000000009b94607c00000000000000000000000000000000000000000000000000000000ecfd1a9e000000000000000000000000000000000000000000000000000000007853c88800000000000000000000000000000000000000000000000000000000cbd4e7b4000000000000000000000000000000000000000000000000000000008106016300000000000000000000000000000000000000000000000000000000b98c9fe600000000000000000000000000000000000000000000000000000000aeaf4f0400000000000000000000000000000000000000000000000000000000040da68500000000000000000000000000000000000000000000000000000000edc8d27d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000243cfffd39000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000000000000000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdb",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdc",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdd",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0xd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xde",
+ "removed": false
+ },
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "logIndex": "0xdf",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004100000000000000000000000000000000000000000800000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000081000000000800000000000000100000020000000000001000000800000010000000000000000000000000400020000000000000000000000000008000800000000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000200000000000000000400000000000000000100002000000020000000000000008000000000000000000000000400800000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xfde72bf86abe4a31e46f993d9b44f44279f9fdcfad97b112768650e3bc3bc3bf",
+ "transactionIndex": "0x73",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x3814d4",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xed3084c98148e2528dadcb53c56352e549c488fa"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x1425043",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x2fa9c45d1262dc83e302ea747fa1a6189169018ef59e5bf5bff35c386ec653cd",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x56be8eb80be13dc0436d0c942e8acc83862b112bfb0731b42ca6bf120054001b",
+ "transactionIndex": "0x74",
+ "logIndex": "0xe0",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004100000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000001000000000000010000000000040000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000400000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x56be8eb80be13dc0436d0c942e8acc83862b112bfb0731b42ca6bf120054001b",
+ "transactionIndex": "0x74",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x14838",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x143987b",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0xd59228754c59506641ecd586d489c0e7d376eb0bc93b21e1c031933d8d48c3a0",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xacff54d7f5e37e2dfc5f3571b049b739d854cd8e794a2f800970c1f6fb9887df",
+ "transactionIndex": "0x75",
+ "logIndex": "0xe1",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000001000000000000000000000000040000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000200000000000000000400000000000000000100000000000000000000000000008000000000000000000000000000800000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xacff54d7f5e37e2dfc5f3571b049b739d854cd8e794a2f800970c1f6fb9887df",
+ "transactionIndex": "0x75",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x14838",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14a91cf",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x8b7c0241c36b5eeb6e8efd2045c7d973d8998316e13ba3fc7dc99b78d3b8ec34",
+ "transactionIndex": "0x76",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x6f954",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14b70d4",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x088e9476d8b4139e22c8e66b078291edda3cd924ce0b0e7193f2a38e293e70ee"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xdb5488814de8a7f72a3170b7ef2a05b9a86ef6337764913dd43a3b6a53b7c4ab",
+ "transactionIndex": "0x77",
+ "logIndex": "0xe2",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xdb5488814de8a7f72a3170b7ef2a05b9a86ef6337764913dd43a3b6a53b7c4ab",
+ "transactionIndex": "0x77",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xdf05",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14c0cef",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f45"],
+ "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xcc2d6206a1dc7ec167dbc0f8f1f8f99432e5ce40055fc5ab11c4a471f4369a5f",
+ "transactionIndex": "0x78",
+ "logIndex": "0xe3",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000020000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xcc2d6206a1dc7ec167dbc0f8f1f8f99432e5ce40055fc5ab11c4a471f4369a5f",
+ "transactionIndex": "0x78",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x9c1b",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14cd999",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x8902fd14f40c20383dcae5d0f2b3b06b9973c89cac3e900cf9a999830277e8e6"],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000002",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x38f11c495a9932f57aededd4600e0814cbe503bae2fd2e9131ea2d462001a35c",
+ "transactionIndex": "0x79",
+ "logIndex": "0xe4",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000400000000000000000000000000000000000000000000000000000100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x38f11c495a9932f57aededd4600e0814cbe503bae2fd2e9131ea2d462001a35c",
+ "transactionIndex": "0x79",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xccaa",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14dfe6d",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x08f944f25b910c541435bcde52d233072e903b37afc29bc8b5787b6e74d82c1a"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000f695000000000000000000000000000000000000000000000000000000000000f1b30",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x243bebc21d94c75a0535bbd107b62ecf1f1cd3ebf01a97b5fb7ce59b5980a21d",
+ "transactionIndex": "0x7a",
+ "logIndex": "0xe5",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x243bebc21d94c75a0535bbd107b62ecf1f1cd3ebf01a97b5fb7ce59b5980a21d",
+ "transactionIndex": "0x7a",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x124d4",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x14ecb60",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x8a77c775772f19a095a743319ccdc8208b70389844786995a8ca94a4f6a8dd02"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000e7ef0",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0xe786a6732987d10d4b0575a99b6246d6d86992c84eefc876fa3a4b61cfb1213c",
+ "transactionIndex": "0x7b",
+ "logIndex": "0xe6",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000010000000000020000000",
+ "type": "0x2",
+ "transactionHash": "0xe786a6732987d10d4b0575a99b6246d6d86992c84eefc876fa3a4b61cfb1213c",
+ "transactionIndex": "0x7b",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xccf3",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x17e7e06",
+ "logs": [
+ {
+ "address": "0x7745a062c0a8aaefaa7e7df1e1aabbbafc988972",
+ "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000ff",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x30db3b6f8445902510a739692dd04d981f8d860a5f1f8654e65371aee14d9114",
+ "transactionIndex": "0x7c",
+ "logIndex": "0xe7",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000080000020000000000000000000000000000001000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x30db3b6f8445902510a739692dd04d981f8d860a5f1f8654e65371aee14d9114",
+ "transactionIndex": "0x7c",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x2fb2a6",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0x7745a062c0a8aaefaa7e7df1e1aabbbafc988972"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x1832d0d",
+ "logs": [
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": [
+ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
+ "0x0000000000000000000000007745a062c0a8aaefaa7e7df1e1aabbbafc988972"
+ ],
+ "data": "0x",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionIndex": "0x7d",
+ "logIndex": "0xe8",
+ "removed": false
+ },
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": ["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000001",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionIndex": "0x7d",
+ "logIndex": "0xe9",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000400000000000000000800000008000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000002000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000000000010000000000000000010000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x7c4da0ec6bc8992f1a742bd387367915e627f36213b47d73dc048d1973f24967",
+ "transactionIndex": "0x7d",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x4af07",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": null,
+ "contractAddress": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103"
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x183f613",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xed36cfc26960d8bd74f7a170b6a0d3f9178b2e762438316637abb545ff659b7c",
+ "transactionIndex": "0x7e",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0xc906",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x18556cb",
+ "logs": [
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": [
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x00000000000000000000000000000000000000000000054b40b1f852bda00000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionIndex": "0x7f",
+ "logIndex": "0xea",
+ "removed": false
+ },
+ {
+ "address": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "topics": [
+ "0xb1233017d63154bc561d57c16f7b6a55e2e1acd7fcac94045a9f35fb31a850ca",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x00000000000000000000000000000000000000000000054b40b1f852bda00000",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "transactionHash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionIndex": "0x7f",
+ "logIndex": "0xeb",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000800000000000010000000000000000000000800000000000000000000000000000008000000000000000000000000000000000000000000100000030000000000001000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000800000000000010000000000020000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x004c51852cc82e0db8d40b4baacf0290ef082f143ecd8f4dd0350e11467eab74",
+ "transactionIndex": "0x7f",
+ "blockHash": "0x5e8f67a4d11e13771867255edb4894cd89cf16d4bf3be99f66a517f34e45ae0b",
+ "blockNumber": "0x12f066a",
+ "gasUsed": "0x160b8",
+ "effectiveGasPrice": "0xbcf76548",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xb6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x75e007",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x9c42f4d9153d55d78cf2011cd58875a5b9a8b1a30b7d0e7857d4fd6930016122"],
+ "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0xdd23c73480e78a237032683322420b848b34320b6322ae37a01e94f6d6024fa5",
+ "transactionIndex": "0x5d",
+ "logIndex": "0xc5",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xdd23c73480e78a237032683322420b848b34320b6322ae37a01e94f6d6024fa5",
+ "transactionIndex": "0x5d",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x112de",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x76dd52",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x16374e3dc228b497b5a9b2dff5883c395120625fbe7e794fdcc5d305ce13ed07"],
+ "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f391a",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x1ba1babc2b61397f3e23f7006a6e030a0bd9293a1c34325a43f93d4529b66f61",
+ "transactionIndex": "0x5e",
+ "logIndex": "0xc6",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020020000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x1ba1babc2b61397f3e23f7006a6e030a0bd9293a1c34325a43f93d4529b66f61",
+ "transactionIndex": "0x5e",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xfd4b",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0x780386",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0x78293bd51057152112290a42345ccd9387562eac811030334ea757f4d49bdd23"],
+ "data": "0x0000000000000000000000003d7ae7e594f2f2091ad8798313450130d0aba3a00000000000000000000000000000000000000000000000000000000000000e10",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x8aaf682c47063531c0721ffca52534f5fbaf1e640febe3df6f65ad64683c4f84",
+ "transactionIndex": "0x5f",
+ "logIndex": "0xc7",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000002080000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x8aaf682c47063531c0721ffca52534f5fbaf1e640febe3df6f65ad64683c4f84",
+ "transactionIndex": "0x5f",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x12634",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xc9d4a9",
+ "logs": [
+ {
+ "address": "0xcc68509f9ca0e1ed119eac7c468ec1b1c42f384f",
+ "topics": [
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
+ "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "0x0000000000000000000000006a8cbed756804b16e05e741edabd5cb544ae21bf"
+ ],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionIndex": "0x60",
+ "logIndex": "0xc8",
+ "removed": false
+ },
+ {
+ "address": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "topics": ["0xd1d60d4611e4091bb2e5f699eeb79136c21ac2305ad609f3de569afc3471eecc"],
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd00000000000000000000000000000000000000000000000000000000000000020000000000000000000000005f98805a4e8be255a32880fdec7f6728c6568ba0000000000000000000000000b6919ef2ee4afc163bc954c5678e2bb570c2d103",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionIndex": "0x60",
+ "logIndex": "0xc9",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000800000000000040000000000000000000000000000000000000000000080000002000000000000000000000000000000000000000000000000000000000000080000008000000000000000000000000000000000000000000000000020002000000000000000800000000000000000000000010000000000000000000000000000000000004000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000002000000040000000000000000000000000000001000000000000020800000000000000000000000000000000000000010000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x0fcd7b38cff7c4388b3c512ae6bc07005be9ce2234760affc4a29fbbee6dfe42",
+ "transactionIndex": "0x60",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x51d123",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x6a8cbed756804b16e05e741edabd5cb544ae21bf",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xca9db1",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x6ec39d56006098dfab8f892bf2584c2df0cdbbdba32790318b4e7a7bd3a1069b",
+ "transactionIndex": "0x61",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc908",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xcb6692",
+ "logs": [
+ {
+ "address": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0x3a2e010201653e4743db35ee85e81b63eb19cf8948f24794ef2b4dba5ecf49c9",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0xc140cd970fd44fbe40cd8cf44d599756778eb631c5c62bbd2e2f4791efbd31f1",
+ "transactionIndex": "0x62",
+ "logIndex": "0xca",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000020000000000000000000100000000000000000000000000000100000000000000000001000000000000000000000000040000000000000000200000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000800000000000000000000100000080000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xc140cd970fd44fbe40cd8cf44d599756778eb631c5c62bbd2e2f4791efbd31f1",
+ "transactionIndex": "0x62",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc8e1",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xcc2f73",
+ "logs": [
+ {
+ "address": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "topics": [
+ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
+ "0xa3405bb4244d0786f3e4178acef3953ebb3f56c1e97e9530871f50739923c1cf",
+ "0x000000000000000000000000ed3084c98148e2528dadcb53c56352e549c488fa",
+ "0x000000000000000000000000efc0e701a824943b469a694ac564aa1eff7ab7dd"
+ ],
+ "data": "0x",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x6d154269fb29eefff3c1cbbcdeab165cb2bb1b421df7ce1dbbaf950e22e62169",
+ "transactionIndex": "0x63",
+ "logIndex": "0xcb",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000004000000000000000000000000000000000100000000000020000000000000000000000000000800000000000000000000000000000000000000000000000000000000000020000000000000000000000000800000000000000000000000100000000000000000001000000000000000000000000040000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040000000000000000000000000000000000000800000000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x6d154269fb29eefff3c1cbbcdeab165cb2bb1b421df7ce1dbbaf950e22e62169",
+ "transactionIndex": "0x63",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc8e1",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0x4da97a8b831c345dbe6d16ff7432df2b7b776d98",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xccf858",
+ "logs": [],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xc3ec04777c62001f9020f9caaaccf7b8b92d88b9b006da09643da9abad39aa8a",
+ "transactionIndex": "0x64",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xc8e5",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xce1e5f",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0xe6bcf4a564a699a1c83d282eab21db81fe3ef3c3f867c402e63d074bb77925ff"],
+ "data": "0x0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000e10",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0xa77b0dbf15da5c7707c0a2ab5e056386f75b0172dca10f9cf3f0631930bd40b4",
+ "transactionIndex": "0x65",
+ "logIndex": "0xcc",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000010000000080001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0xa77b0dbf15da5c7707c0a2ab5e056386f75b0172dca10f9cf3f0631930bd40b4",
+ "transactionIndex": "0x65",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0x12607",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ },
+ {
+ "status": "0x1",
+ "cumulativeGasUsed": "0xceec4e",
+ "logs": [
+ {
+ "address": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "topics": ["0xdac3a48dff76eec0a284b649cfb07035804ede2892dbaf7e72050756144fbb8c"],
+ "data": "0x000000000000000000000000acdc85afcd8b83eb171affcbe29fad204f6ae45c",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "transactionHash": "0x3882a2c08ecb242154d48ddbe6a5285b48694ee91829781e4634c6aa7e3fd7ef",
+ "transactionIndex": "0x66",
+ "logIndex": "0xcd",
+ "removed": false
+ }
+ ],
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000080000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000",
+ "type": "0x2",
+ "transactionHash": "0x3882a2c08ecb242154d48ddbe6a5285b48694ee91829781e4634c6aa7e3fd7ef",
+ "transactionIndex": "0x66",
+ "blockHash": "0xbc90feb3e7867a0856035ad249790d24cd2f35c78c80d2e704906407602d23cf",
+ "blockNumber": "0x12f066b",
+ "gasUsed": "0xcdef",
+ "effectiveGasPrice": "0xcd6ce1af",
+ "from": "0xefc0e701a824943b469a694ac564aa1eff7ab7dd",
+ "to": "0xed3084c98148e2528dadcb53c56352e549c488fa",
+ "contractAddress": null
+ }
+ ],
+ "libraries": [],
+ "pending": [],
+ "returns": {},
+ "timestamp": 1715578665,
+ "chain": 1,
+ "commit": "5db9383a"
+}
diff --git a/packages/contracts/docs/.gitignore b/packages/contracts/docs/.gitignore
new file mode 100644
index 000000000..4e42a1bcd
--- /dev/null
+++ b/packages/contracts/docs/.gitignore
@@ -0,0 +1 @@
+book/
\ No newline at end of file
diff --git a/packages/contracts/docs/book.css b/packages/contracts/docs/book.css
new file mode 100644
index 000000000..b5ce903f9
--- /dev/null
+++ b/packages/contracts/docs/book.css
@@ -0,0 +1,13 @@
+table {
+ margin: 0 auto;
+ border-collapse: collapse;
+ width: 100%;
+}
+
+table td:first-child {
+ width: 15%;
+}
+
+table td:nth-child(2) {
+ width: 25%;
+}
\ No newline at end of file
diff --git a/packages/contracts/docs/book.toml b/packages/contracts/docs/book.toml
new file mode 100644
index 000000000..8cd34475e
--- /dev/null
+++ b/packages/contracts/docs/book.toml
@@ -0,0 +1,12 @@
+[book]
+src = "src"
+title = ""
+
+[output.html]
+additional-css = ["book.css"]
+additional-js = ["solidity.min.js"]
+git-repository-url = "https://github.com/ubiquity/ubiquity-dollar"
+no-section-label = true
+
+[output.html.fold]
+enable = true
diff --git a/packages/contracts/docs/solidity.min.js b/packages/contracts/docs/solidity.min.js
new file mode 100644
index 000000000..192493291
--- /dev/null
+++ b/packages/contracts/docs/solidity.min.js
@@ -0,0 +1,74 @@
+hljs.registerLanguage("solidity",(()=>{"use strict";function e(){try{return!0
+}catch(e){return!1}}
+var a=/-?(\b0[xX]([a-fA-F0-9]_?)*[a-fA-F0-9]|(\b[1-9](_?\d)*(\.((\d_?)*\d)?)?|\.\d(_?\d)*)([eE][-+]?\d(_?\d)*)?|\b0)(?!\w|\$)/
+;e()&&(a=a.source.replace(/\\b/g,"(?{
+var a=r(e),o=l(e),c=/[A-Za-z_$][A-Za-z_$0-9.]*/,d=e.inherit(e.TITLE_MODE,{
+begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:c,keywords:n}),u={className:"params",
+begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,lexemes:c,keywords:n,
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,o,s]},_={
+className:"operator",begin:/:=|->/};return{keywords:n,lexemes:c,
+contains:[a,o,i,t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,_,{
+className:"function",lexemes:c,beginKeywords:"function",end:"{",excludeEnd:!0,
+contains:[d,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,_]}]}},
+solAposStringMode:r,solQuoteStringMode:l,HEX_APOS_STRING_MODE:i,
+HEX_QUOTE_STRING_MODE:t,SOL_NUMBER:s,isNegativeLookbehindAvailable:e}
+;const{baseAssembly:c,solAposStringMode:d,solQuoteStringMode:u,HEX_APOS_STRING_MODE:_,HEX_QUOTE_STRING_MODE:m,SOL_NUMBER:b,isNegativeLookbehindAvailable:E}=o
+;return e=>{for(var a=d(e),s=u(e),n=[],i=0;i<32;i++)n[i]=i+1
+;var t=n.map((e=>8*e)),r=[];for(i=0;i<=80;i++)r[i]=i
+;var l=n.map((e=>"bytes"+e)).join(" ")+" ",o=t.map((e=>"uint"+e)).join(" ")+" ",g=t.map((e=>"int"+e)).join(" ")+" ",M=[].concat.apply([],t.map((e=>r.map((a=>e+"x"+a))))),p={
+keyword:"var bool string int uint "+g+o+"byte bytes "+l+"fixed ufixed "+M.map((e=>"fixed"+e)).join(" ")+" "+M.map((e=>"ufixed"+e)).join(" ")+" enum struct mapping address new delete if else for while continue break return throw emit try catch revert unchecked _ function modifier event constructor fallback receive error virtual override constant immutable anonymous indexed storage memory calldata external public internal payable pure view private returns import from as using pragma contract interface library is abstract type assembly",
+literal:"true false wei gwei szabo finney ether seconds minutes hours days weeks years",
+built_in:"self this super selfdestruct suicide now msg block tx abi blockhash gasleft assert require Error Panic sha3 sha256 keccak256 ripemd160 ecrecover addmod mulmod log0 log1 log2 log3 log4"
+},O={className:"operator",begin:/[+\-!~*\/%<>&^|=]/
+},C=/[A-Za-z_$][A-Za-z_$0-9]*/,N={className:"params",begin:/\(/,end:/\)/,
+excludeBegin:!0,excludeEnd:!0,lexemes:C,keywords:p,
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,s,b,"self"]},f={
+begin:/\.\s*/,end:/[^A-Za-z0-9$_\.]/,excludeBegin:!0,excludeEnd:!0,keywords:{
+built_in:"gas value selector address length push pop send transfer call callcode delegatecall staticcall balance code codehash wrap unwrap name creationCode runtimeCode interfaceId min max"
+},relevance:2},y=e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/,
+lexemes:C,keywords:p}),w={className:"built_in",
+begin:(E()?"(?`|`bytes4`|`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed|
+
+
+### depositSingle
+
+Deposits a single token to staking
+
+Stable coin (DAI / USDC / USDT / Ubiquity Dollar) => Dollar-3CRV LP => Ubiquity Staking
+
+How it works:
+1. User sends stablecoins (DAI / USDC / USDT / Dollar)
+2. Deposited stablecoins are added to Dollar-3CRV Curve MetaPool
+3. User gets Dollar-3CRV LP tokens
+4. Dollar-3CRV LP tokens are transferred to the staking contract
+5. User gets a staking share id
+
+
+```solidity
+function depositSingle(address token, uint256 amount, uint256 durationWeeks)
+ external
+ nonReentrant
+ returns (uint256 stakingShareId);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token deposited : DAI, USDC, USDT or Ubiquity Dollar|
+|`amount`|`uint256`|Amount of tokens to deposit (For max: `uint256(-1)`)|
+|`durationWeeks`|`uint256`|Duration in weeks tokens will be locked (1-208)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking share id|
+
+
+### depositMulti
+
+Deposits into Ubiquity protocol
+
+Stable coins (DAI / USDC / USDT / Ubiquity Dollar) => uAD3CRV-f => Ubiquity StakingShare
+
+STEP 1 : Change (DAI / USDC / USDT / Ubiquity dollar) to 3CRV at uAD3CRV MetaPool
+
+STEP 2 : uAD3CRV-f => Ubiquity StakingShare
+
+
+```solidity
+function depositMulti(uint256[4] calldata tokenAmounts, uint256 durationWeeks)
+ external
+ nonReentrant
+ returns (uint256 stakingShareId);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmounts`|`uint256[4]`|Amount of tokens to deposit (For max: `uint256(-1)`) it MUST follow this order [Ubiquity Dollar, DAI, USDC, USDT]|
+|`durationWeeks`|`uint256`|Duration in weeks tokens will be locked (1-208)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking share id|
+
+
+### withdraw
+
+Withdraws from Ubiquity protocol
+
+Ubiquity StakingShare => uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+STEP 1 : Ubiquity StakingShare => uAD3CRV-f
+
+STEP 2 : uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+
+```solidity
+function withdraw(uint256 stakingShareId) external nonReentrant returns (uint256[4] memory tokenAmounts);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking Share Id to withdraw|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmounts`|`uint256[4]`|Array of token amounts [Ubiquity Dollar, DAI, USDC, USDT]|
+
+
+### withdraw
+
+Withdraws from Ubiquity protocol
+
+Ubiquity StakingShare => uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+STEP 1 : Ubiquity StakingShare => uAD3CRV-f
+
+STEP 2 : uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+
+```solidity
+function withdraw(uint256 stakingShareId, address token) external nonReentrant returns (uint256 tokenAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking Share Id to withdraw|
+|`token`|`address`|Token to withdraw to : DAI, USDC, USDT, 3CRV or Ubiquity Dollar|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmount`|`uint256`|Amount of token withdrawn|
+
+
+### isIdIncluded
+
+Checks whether `id` exists in `idList[]`
+
+
+```solidity
+function isIdIncluded(uint256[] memory idList, uint256 id) internal pure returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`idList`|`uint256[]`|Array to search in|
+|`id`|`uint256`|Value to search in `idList`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `id` exists in `idList[]`|
+
+
+### isMetaPoolCoin
+
+Checks that `token` is one of the underlying MetaPool tokens or stablecoin from MetaPool
+
+
+```solidity
+function isMetaPoolCoin(address token) public view returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `token` is one of the underlying MetaPool tokens or stablecoin from MetaPool|
+
+
+## Events
+### DepositSingle
+Emitted when user deposits a single token
+
+
+```solidity
+event DepositSingle(
+ address indexed sender, address token, uint256 amount, uint256 durationWeeks, uint256 stakingShareId
+);
+```
+
+### DepositMulti
+Emitted when user deposits multiple tokens
+
+
+```solidity
+event DepositMulti(address indexed sender, uint256[4] amounts, uint256 durationWeeks, uint256 stakingShareId);
+```
+
+### Withdraw
+Emitted when user withdraws a single token
+
+
+```solidity
+event Withdraw(address indexed sender, uint256 stakingShareId, address token, uint256 amount);
+```
+
+### WithdrawAll
+Emitted when user withdraws multiple tokens
+
+
+```solidity
+event WithdrawAll(address indexed sender, uint256 stakingShareId, uint256[4] amounts);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/README.md b/packages/contracts/docs/src/src/dollar/README.md
new file mode 100644
index 000000000..fa02f431e
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/README.md
@@ -0,0 +1,13 @@
+
+
+# Contents
+- [access](/src/dollar/access)
+- [core](/src/dollar/core)
+- [facets](/src/dollar/facets)
+- [interfaces](/src/dollar/interfaces)
+- [libraries](/src/dollar/libraries)
+- [mocks](/src/dollar/mocks)
+- [upgradeInitializers](/src/dollar/upgradeInitializers)
+- [utils](/src/dollar/utils)
+- [DiamondArgs](Diamond.sol/struct.DiamondArgs.md)
+- [Diamond](Diamond.sol/contract.Diamond.md)
diff --git a/packages/contracts/docs/src/src/dollar/access/AccessControlInternal.sol/abstract.AccessControlInternal.md b/packages/contracts/docs/src/src/dollar/access/AccessControlInternal.sol/abstract.AccessControlInternal.md
new file mode 100644
index 000000000..f6c5c9eca
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/access/AccessControlInternal.sol/abstract.AccessControlInternal.md
@@ -0,0 +1,163 @@
+# AccessControlInternal
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/access/AccessControlInternal.sol)
+
+Role-based access control system
+
+*Derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license)*
+
+*https://github.com/solidstate-network/solidstate-solidity/blob/master/contracts/access/access_control/AccessControlInternal.sol*
+
+
+## Functions
+### onlyRole
+
+Checks that a method can only be called by the provided role
+
+
+```solidity
+modifier onlyRole(bytes32 role);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role name|
+
+
+### _hasRole
+
+Checks whether role is assigned to account
+
+
+```solidity
+function _hasRole(bytes32 role, address account) internal view virtual returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to check|
+|`account`|`address`|Account address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether role is assigned to account|
+
+
+### _checkRole
+
+Reverts if sender does not have a given role
+
+
+```solidity
+function _checkRole(bytes32 role) internal view virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+
+
+### _checkRole
+
+Reverts if given account does not have a given role
+
+
+```solidity
+function _checkRole(bytes32 role, address account) internal view virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+|`account`|`address`|Address to query|
+
+
+### _getRoleAdmin
+
+Returns admin role for a given role
+
+
+```solidity
+function _getRoleAdmin(bytes32 role) internal view virtual returns (bytes32);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Admin role for the provided role|
+
+
+### _setRoleAdmin
+
+Set admin role for a given role
+
+
+```solidity
+function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to set|
+|`adminRole`|`bytes32`|role for the provided role|
+
+
+### _grantRole
+
+Assigns role to a given account
+
+
+```solidity
+function _grantRole(bytes32 role, address account) internal virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to assign|
+|`account`|`address`|Recipient of role assignment|
+
+
+### _revokeRole
+
+Unassigns role from given account
+
+
+```solidity
+function _revokeRole(bytes32 role, address account) internal virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to unassign|
+|`account`|`address`|Account to revoke a role from|
+
+
+### _renounceRole
+
+Renounces role
+
+
+```solidity
+function _renounceRole(bytes32 role) internal virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to renounce|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/access/README.md b/packages/contracts/docs/src/src/dollar/access/README.md
new file mode 100644
index 000000000..061d52a83
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/access/README.md
@@ -0,0 +1,4 @@
+
+
+# Contents
+- [AccessControlInternal](AccessControlInternal.sol/abstract.AccessControlInternal.md)
diff --git a/packages/contracts/docs/src/src/dollar/core/CreditClock.sol/contract.CreditClock.md b/packages/contracts/docs/src/src/dollar/core/CreditClock.sol/contract.CreditClock.md
new file mode 100644
index 000000000..93ed6de13
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/CreditClock.sol/contract.CreditClock.md
@@ -0,0 +1,154 @@
+# CreditClock
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/edf5f533467baa5ab7defe2b4b5180fa47724cdb/src/dollar/core/CreditClock.sol)
+
+CreditClock contract
+
+
+## State Variables
+### accessControl
+Access control contract
+
+
+```solidity
+IAccessControl public accessControl;
+```
+
+
+### one
+ABDKMathQuad with value of 1.
+
+
+```solidity
+bytes16 private immutable one = uint256(1).fromUInt();
+```
+
+
+### rateStartBlock
+The block height from where we start applying the rate.
+
+
+```solidity
+uint256 public rateStartBlock;
+```
+
+
+### rateStartValue
+This is the exchange rate of Credits for the start block.
+
+
+```solidity
+bytes16 public rateStartValue;
+```
+
+
+### ratePerBlock
+Deprecation rate. How many Dollars are deprecated on each block.
+
+
+```solidity
+bytes16 public ratePerBlock;
+```
+
+
+## Functions
+### onlyAdmin
+
+Modifier checks that the method is called by a user with the "Incentive manager" role
+
+
+```solidity
+modifier onlyAdmin();
+```
+
+### constructor
+
+Contract constructor
+
+
+```solidity
+constructor(address _manager, bytes16 _rateStartValue, bytes16 _ratePerBlock);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|The address of the `_manager` contract for access control|
+|`_rateStartValue`|`bytes16`|ABDKMathQuad Initial rate|
+|`_ratePerBlock`|`bytes16`|ABDKMathQuad Initial rate change per block|
+
+
+### setManager
+
+Updates the manager address
+
+
+```solidity
+function setManager(address _manager) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|New manager address|
+
+
+### getManager
+
+Returns the manager address
+
+
+```solidity
+function getManager() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Manager address|
+
+
+### setRatePerBlock
+
+Sets rate to apply from this block onward
+
+
+```solidity
+function setRatePerBlock(bytes16 _ratePerBlock) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_ratePerBlock`|`bytes16`|ABDKMathQuad new rate per block to apply from this block onward|
+
+
+### getRate
+
+Calculates `rateStartValue * (1 / ((1 + ratePerBlock)^blockNumber - rateStartBlock)))`
+
+
+```solidity
+function getRate(uint256 blockNumber) public view returns (bytes16 rate);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`blockNumber`|`uint256`|Block number to get the rate for. 0 for current block.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`rate`|`bytes16`|ABDKMathQuad rate calculated for the block number|
+
+
+## Events
+### SetRatePerBlock
+Emitted when depreciation rate per block is updated
+
+
+```solidity
+event SetRatePerBlock(uint256 rateStartBlock, bytes16 rateStartValue, bytes16 ratePerBlock);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/core/CreditNft.sol/contract.CreditNft.md b/packages/contracts/docs/src/src/dollar/core/CreditNft.sol/contract.CreditNft.md
new file mode 100644
index 000000000..e226c65ba
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/CreditNft.sol/contract.CreditNft.md
@@ -0,0 +1,167 @@
+# CreditNft
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/CreditNft.sol)
+
+**Inherits:**
+[ERC1155Ubiquity](/src/dollar/core/ERC1155Ubiquity.sol/abstract.ERC1155Ubiquity.md), [ICreditNft](/src/dollar/interfaces/ICreditNft.sol/interface.ICreditNft.md)
+
+CreditNft redeemable for Dollars with an expiry block number
+
+ERC1155 where the token ID is the expiry block number
+
+*Implements ERC1155 so receiving contracts must implement `IERC1155Receiver`*
+
+*1 Credit NFT = 1 whole Ubiquity Dollar, not 1 wei*
+
+
+## State Variables
+### _totalOutstandingDebt
+Total amount of CreditNfts minted
+
+*Not public as if called externally can give inaccurate value, see method*
+
+
+```solidity
+uint256 private _totalOutstandingDebt;
+```
+
+
+### _tokenSupplies
+Mapping of block number and amount of CreditNfts to expire on that block number
+
+
+```solidity
+mapping(uint256 => uint256) private _tokenSupplies;
+```
+
+
+### _sortedBlockNumbers
+Ordered list of CreditNft expiries
+
+
+```solidity
+StructuredLinkedList.List private _sortedBlockNumbers;
+```
+
+
+## Functions
+### onlyCreditNftManager
+
+Modifier checks that the method is called by a user with the "CreditNft manager" role
+
+
+```solidity
+modifier onlyCreditNftManager();
+```
+
+### constructor
+
+Ensures initialize cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### initialize
+
+Initializes the contract
+
+
+```solidity
+function initialize(address _manager) public initializer;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+
+
+### mintCreditNft
+
+Mint an `amount` of CreditNfts expiring at `expiryBlockNumber` for a certain `recipient`
+
+
+```solidity
+function mintCreditNft(address recipient, uint256 amount, uint256 expiryBlockNumber) public onlyCreditNftManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`recipient`|`address`|Address where to mint tokens|
+|`amount`|`uint256`|Amount of tokens to mint|
+|`expiryBlockNumber`|`uint256`|Expiration block number of the CreditNfts to mint|
+
+
+### burnCreditNft
+
+Burns an `amount` of CreditNfts expiring at `expiryBlockNumber` from `creditNftOwner` balance
+
+
+```solidity
+function burnCreditNft(address creditNftOwner, uint256 amount, uint256 expiryBlockNumber) public onlyCreditNftManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`creditNftOwner`|`address`|Owner of those CreditNfts|
+|`amount`|`uint256`|Amount of tokens to burn|
+|`expiryBlockNumber`|`uint256`|Expiration block number of the CreditNfts to burn|
+
+
+### updateTotalDebt
+
+Updates debt according to current block number
+
+Invalidates expired CreditNfts
+
+*Should be called prior to any state changing functions*
+
+
+```solidity
+function updateTotalDebt() public;
+```
+
+### getTotalOutstandingDebt
+
+Returns outstanding debt by fetching current tally and removing any expired debt
+
+
+```solidity
+function getTotalOutstandingDebt() public view returns (uint256);
+```
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal override(ERC1155Ubiquity) onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
+## Events
+### MintedCreditNft
+Emitted on CreditNfts mint
+
+
+```solidity
+event MintedCreditNft(address recipient, uint256 expiryBlock, uint256 amount);
+```
+
+### BurnedCreditNft
+Emitted on CreditNfts burn
+
+
+```solidity
+event BurnedCreditNft(address creditNftHolder, uint256 expiryBlock, uint256 amount);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/core/ERC1155Ubiquity.sol/abstract.ERC1155Ubiquity.md b/packages/contracts/docs/src/src/dollar/core/ERC1155Ubiquity.sol/abstract.ERC1155Ubiquity.md
new file mode 100644
index 000000000..7e1c98d8d
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/ERC1155Ubiquity.sol/abstract.ERC1155Ubiquity.md
@@ -0,0 +1,363 @@
+# ERC1155Ubiquity
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/ERC1155Ubiquity.sol)
+
+**Inherits:**
+Initializable, ERC1155BurnableUpgradeable, ERC1155PausableUpgradeable, UUPSUpgradeable
+
+ERC1155 Ubiquity preset
+
+ERC1155 with:
+- ERC1155 minter, burner and pauser
+- TotalSupply per id
+- Ubiquity Manager access control
+
+
+## State Variables
+### accessControl
+Access control interface
+
+
+```solidity
+IAccessControl public accessControl;
+```
+
+
+### holderBalances
+Mapping from account to array of token ids held by the account
+
+
+```solidity
+mapping(address => uint256[]) public holderBalances;
+```
+
+
+### totalSupply
+Total supply among all token ids
+
+
+```solidity
+uint256 public totalSupply;
+```
+
+
+### __gap
+Allows for future upgrades on the base contract without affecting the storage of the derived contract
+
+
+```solidity
+uint256[50] private __gap;
+```
+
+
+## Functions
+### onlyMinter
+
+Modifier checks that the method is called by a user with the "Governance minter" role
+
+
+```solidity
+modifier onlyMinter() virtual;
+```
+
+### onlyBurner
+
+Modifier checks that the method is called by a user with the "Governance burner" role
+
+
+```solidity
+modifier onlyBurner() virtual;
+```
+
+### onlyPauser
+
+Modifier checks that the method is called by a user with the "Pauser" role
+
+
+```solidity
+modifier onlyPauser() virtual;
+```
+
+### onlyAdmin
+
+Modifier checks that the method is called by a user with the "Admin" role
+
+
+```solidity
+modifier onlyAdmin();
+```
+
+### constructor
+
+Ensures __ERC1155Ubiquity_init cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### __ERC1155Ubiquity_init
+
+Initializes this contract with all base(parent) contracts
+
+
+```solidity
+function __ERC1155Ubiquity_init(address _manager, string memory _uri) internal onlyInitializing;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+|`_uri`|`string`|Base URI|
+
+
+### __ERC1155Ubiquity_init_unchained
+
+Initializes the current contract
+
+
+```solidity
+function __ERC1155Ubiquity_init_unchained(address _manager) internal onlyInitializing;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+
+
+### getManager
+
+Returns access control address
+
+
+```solidity
+function getManager() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Access control address|
+
+
+### setManager
+
+Sets access control address
+
+
+```solidity
+function setManager(address _manager) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|New access control address|
+
+
+### setUri
+
+Sets base URI
+
+
+```solidity
+function setUri(string memory newURI) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newURI`|`string`|New URI|
+
+
+### mint
+
+Creates `amount` new tokens for `to`, of token type `id`
+
+
+```solidity
+function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual onlyMinter;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint tokens|
+|`id`|`uint256`|Token type id|
+|`amount`|`uint256`|Tokens amount to mint|
+|`data`|`bytes`|Arbitrary data|
+
+
+### mintBatch
+
+Mints multiple token types for `to` address
+
+
+```solidity
+function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
+ public
+ virtual
+ onlyMinter
+ whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint tokens|
+|`ids`|`uint256[]`|Array of token type ids|
+|`amounts`|`uint256[]`|Array of token amounts|
+|`data`|`bytes`|Arbitrary data|
+
+
+### pause
+
+Pauses all token transfers
+
+
+```solidity
+function pause() public virtual onlyPauser;
+```
+
+### unpause
+
+Unpauses all token transfers
+
+
+```solidity
+function unpause() public virtual onlyPauser;
+```
+
+### safeTransferFrom
+
+Transfers `amount` tokens of token type `id` from `from` to `to`.
+Emits a `TransferSingle` event.
+Requirements:
+- `to` cannot be the zero address.
+- If the caller is not `from`, it must have been approved to spend ``from``'s tokens via `setApprovalForAll`.
+- `from` must have a balance of tokens of type `id` of at least `amount`.
+- If `to` refers to a smart contract, it must implement `IERC1155Receiver-onERC1155Received` and return the
+acceptance magic value.
+
+
+```solidity
+function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data)
+ public
+ virtual
+ override;
+```
+
+### safeBatchTransferFrom
+
+Batched version of `safeTransferFrom()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+- If `to` refers to a smart contract, it must implement `IERC1155Receiver-onERC1155BatchReceived` and return the
+acceptance magic value.
+
+
+```solidity
+function safeBatchTransferFrom(
+ address from,
+ address to,
+ uint256[] memory ids,
+ uint256[] memory amounts,
+ bytes memory data
+) public virtual override;
+```
+
+### holderTokens
+
+Returns array of token ids held by the `holder`
+
+
+```solidity
+function holderTokens(address holder) public view returns (uint256[] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`holder`|`address`|Account to check tokens for|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[]`|Array of tokens which `holder` has|
+
+
+### _burn
+
+Destroys `amount` tokens of token type `id` from `account`
+Emits a `TransferSingle` event.
+Requirements:
+- `account` cannot be the zero address.
+- `account` must have at least `amount` tokens of token type `id`.
+
+
+```solidity
+function _burn(address account, uint256 id, uint256 amount) internal virtual override whenNotPaused;
+```
+
+### _burnBatch
+
+Batched version of `_burn()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+
+
+```solidity
+function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts)
+ internal
+ virtual
+ override
+ whenNotPaused;
+```
+
+### _beforeTokenTransfer
+
+Hook that is called before any token transfer. This includes minting
+and burning, as well as batched variants.
+The same hook is called on both single and batched variants. For single
+transfers, the length of the `ids` and `amounts` arrays will be 1.
+Calling conditions (for each `id` and `amount` pair):
+- When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+of token type `id` will be transferred to `to`.
+- When `from` is zero, `amount` tokens of token type `id` will be minted
+for `to`.
+- when `to` is zero, `amount` of ``from``'s tokens of token type `id`
+will be burned.
+- `from` and `to` are never both zero.
+- `ids` and `amounts` have the same, non-zero length.
+
+
+```solidity
+function _beforeTokenTransfer(
+ address operator,
+ address from,
+ address to,
+ uint256[] memory ids,
+ uint256[] memory amounts,
+ bytes memory data
+) internal virtual override(ERC1155PausableUpgradeable, ERC1155Upgradeable);
+```
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal virtual override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/core/ERC1155Ubiquity.sol/contract.ERC1155Ubiquity.md b/packages/contracts/docs/src/src/dollar/core/ERC1155Ubiquity.sol/contract.ERC1155Ubiquity.md
new file mode 100644
index 000000000..c20a6bd67
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/ERC1155Ubiquity.sol/contract.ERC1155Ubiquity.md
@@ -0,0 +1,363 @@
+# ERC1155Ubiquity
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/b1159e7c3923d0cfce274dbf1d6127a376670810/src/dollar/core/ERC1155Ubiquity.sol)
+
+**Inherits:**
+Initializable, ERC1155BurnableUpgradeable, ERC1155PausableUpgradeable, UUPSUpgradeable
+
+ERC1155 Ubiquity preset
+
+ERC1155 with:
+- ERC1155 minter, burner and pauser
+- TotalSupply per id
+- Ubiquity Manager access control
+
+
+## State Variables
+### accessControl
+Access control interface
+
+
+```solidity
+IAccessControl public accessControl;
+```
+
+
+### holderBalances
+Mapping from account to array of token ids held by the account
+
+
+```solidity
+mapping(address => uint256[]) public holderBalances;
+```
+
+
+### totalSupply
+Total supply among all token ids
+
+
+```solidity
+uint256 public totalSupply;
+```
+
+
+### __gap
+Allows for future upgrades on the base contract without affecting the storage of the derived contract
+
+
+```solidity
+uint256[50] private __gap;
+```
+
+
+## Functions
+### onlyMinter
+
+Modifier checks that the method is called by a user with the "Governance minter" role
+
+
+```solidity
+modifier onlyMinter() virtual;
+```
+
+### onlyBurner
+
+Modifier checks that the method is called by a user with the "Governance burner" role
+
+
+```solidity
+modifier onlyBurner() virtual;
+```
+
+### onlyPauser
+
+Modifier checks that the method is called by a user with the "Pauser" role
+
+
+```solidity
+modifier onlyPauser() virtual;
+```
+
+### onlyAdmin
+
+Modifier checks that the method is called by a user with the "Admin" role
+
+
+```solidity
+modifier onlyAdmin();
+```
+
+### constructor
+
+Ensures __ERC1155Ubiquity_init cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### __ERC1155Ubiquity_init
+
+Initializes this contract with all base(parent) contracts
+
+
+```solidity
+function __ERC1155Ubiquity_init(address _manager, string memory _uri) public initializer onlyInitializing;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+|`_uri`|`string`|Base URI|
+
+
+### __ERC1155Ubiquity_init_unchained
+
+Initializes the current contract
+
+
+```solidity
+function __ERC1155Ubiquity_init_unchained(address _manager) public initializer onlyInitializing;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+
+
+### getManager
+
+Returns access control address
+
+
+```solidity
+function getManager() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Access control address|
+
+
+### setManager
+
+Sets access control address
+
+
+```solidity
+function setManager(address _manager) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|New access control address|
+
+
+### setUri
+
+Sets base URI
+
+
+```solidity
+function setUri(string memory newURI) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newURI`|`string`|New URI|
+
+
+### mint
+
+Creates `amount` new tokens for `to`, of token type `id`
+
+
+```solidity
+function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual onlyMinter;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint tokens|
+|`id`|`uint256`|Token type id|
+|`amount`|`uint256`|Tokens amount to mint|
+|`data`|`bytes`|Arbitrary data|
+
+
+### mintBatch
+
+Mints multiple token types for `to` address
+
+
+```solidity
+function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
+ public
+ virtual
+ onlyMinter
+ whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint tokens|
+|`ids`|`uint256[]`|Array of token type ids|
+|`amounts`|`uint256[]`|Array of token amounts|
+|`data`|`bytes`|Arbitrary data|
+
+
+### pause
+
+Pauses all token transfers
+
+
+```solidity
+function pause() public virtual onlyPauser;
+```
+
+### unpause
+
+Unpauses all token transfers
+
+
+```solidity
+function unpause() public virtual onlyPauser;
+```
+
+### safeTransferFrom
+
+Transfers `amount` tokens of token type `id` from `from` to `to`.
+Emits a `TransferSingle` event.
+Requirements:
+- `to` cannot be the zero address.
+- If the caller is not `from`, it must have been approved to spend ``from``'s tokens via `setApprovalForAll`.
+- `from` must have a balance of tokens of type `id` of at least `amount`.
+- If `to` refers to a smart contract, it must implement `IERC1155Receiver-onERC1155Received` and return the
+acceptance magic value.
+
+
+```solidity
+function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data)
+ public
+ virtual
+ override;
+```
+
+### safeBatchTransferFrom
+
+Batched version of `safeTransferFrom()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+- If `to` refers to a smart contract, it must implement `IERC1155Receiver-onERC1155BatchReceived` and return the
+acceptance magic value.
+
+
+```solidity
+function safeBatchTransferFrom(
+ address from,
+ address to,
+ uint256[] memory ids,
+ uint256[] memory amounts,
+ bytes memory data
+) public virtual override;
+```
+
+### holderTokens
+
+Returns array of token ids held by the `holder`
+
+
+```solidity
+function holderTokens(address holder) public view returns (uint256[] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`holder`|`address`|Account to check tokens for|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[]`|Array of tokens which `holder` has|
+
+
+### _burn
+
+Destroys `amount` tokens of token type `id` from `account`
+Emits a `TransferSingle` event.
+Requirements:
+- `account` cannot be the zero address.
+- `account` must have at least `amount` tokens of token type `id`.
+
+
+```solidity
+function _burn(address account, uint256 id, uint256 amount) internal virtual override whenNotPaused;
+```
+
+### _burnBatch
+
+Batched version of `_burn()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+
+
+```solidity
+function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts)
+ internal
+ virtual
+ override
+ whenNotPaused;
+```
+
+### _beforeTokenTransfer
+
+Hook that is called before any token transfer. This includes minting
+and burning, as well as batched variants.
+The same hook is called on both single and batched variants. For single
+transfers, the length of the `ids` and `amounts` arrays will be 1.
+Calling conditions (for each `id` and `amount` pair):
+- When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+of token type `id` will be transferred to `to`.
+- When `from` is zero, `amount` tokens of token type `id` will be minted
+for `to`.
+- when `to` is zero, `amount` of ``from``'s tokens of token type `id`
+will be burned.
+- `from` and `to` are never both zero.
+- `ids` and `amounts` have the same, non-zero length.
+
+
+```solidity
+function _beforeTokenTransfer(
+ address operator,
+ address from,
+ address to,
+ uint256[] memory ids,
+ uint256[] memory amounts,
+ bytes memory data
+) internal virtual override(ERC1155PausableUpgradeable, ERC1155Upgradeable);
+```
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal virtual override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/core/ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md b/packages/contracts/docs/src/src/dollar/core/ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md
new file mode 100644
index 000000000..5a0aacf4c
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md
@@ -0,0 +1,283 @@
+# ERC20Ubiquity
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/ERC20Ubiquity.sol)
+
+**Inherits:**
+Initializable, UUPSUpgradeable, ERC20Upgradeable, ERC20PermitUpgradeable, ERC20PausableUpgradeable
+
+Base contract for Ubiquity ERC20 tokens (Dollar, Credit, Governance)
+
+ERC20 with:
+- ERC20 minter, burner and pauser
+- draft-ERC20 permit
+- Ubiquity Manager access control
+
+
+## State Variables
+### _symbol
+Token symbol
+
+
+```solidity
+string private _symbol;
+```
+
+
+### accessControl
+Access control interface
+
+
+```solidity
+IAccessControl public accessControl;
+```
+
+
+### __gap
+Allows for future upgrades on the base contract without affecting the storage of the derived contract
+
+
+```solidity
+uint256[50] private __gap;
+```
+
+
+## Functions
+### onlyPauser
+
+Modifier checks that the method is called by a user with the "pauser" role
+
+
+```solidity
+modifier onlyPauser();
+```
+
+### onlyAdmin
+
+Modifier checks that the method is called by a user with the "admin" role
+
+
+```solidity
+modifier onlyAdmin();
+```
+
+### constructor
+
+Ensures __ERC20Ubiquity_init cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### __ERC20Ubiquity_init
+
+Initializes this contract with all base(parent) contracts
+
+
+```solidity
+function __ERC20Ubiquity_init(address _manager, string memory name_, string memory symbol_) internal onlyInitializing;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+|`name_`|`string`|Token name|
+|`symbol_`|`string`|Token symbol|
+
+
+### __ERC20Ubiquity_init_unchained
+
+Initializes the current contract
+
+
+```solidity
+function __ERC20Ubiquity_init_unchained(address _manager, string memory symbol_) internal onlyInitializing;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+|`symbol_`|`string`|Token symbol|
+
+
+### setSymbol
+
+Updates token symbol
+
+
+```solidity
+function setSymbol(string memory newSymbol) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newSymbol`|`string`|New token symbol name|
+
+
+### symbol
+
+Returns token symbol name
+
+
+```solidity
+function symbol() public view virtual override returns (string memory);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`string`|Token symbol name|
+
+
+### getManager
+
+Returns access control address
+
+
+```solidity
+function getManager() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Access control address|
+
+
+### setManager
+
+Sets access control address
+
+
+```solidity
+function setManager(address _manager) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|New access control address|
+
+
+### pause
+
+Pauses all token transfers
+
+
+```solidity
+function pause() public onlyPauser;
+```
+
+### unpause
+
+Unpauses all token transfers
+
+
+```solidity
+function unpause() public onlyPauser;
+```
+
+### burn
+
+Destroys `amount` tokens from the caller
+
+
+```solidity
+function burn(uint256 amount) public virtual whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of tokens to destroy|
+
+
+### burnFrom
+
+Destroys `amount` tokens from `account`, deducting from the caller's
+allowance
+
+Requirements:
+- the caller must have allowance for `account`'s tokens of at least `amount`
+
+
+```solidity
+function burnFrom(address account, uint256 amount) public virtual;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to burn tokens from|
+|`amount`|`uint256`|Amount of tokens to burn|
+
+
+### _beforeTokenTransfer
+
+Hook that is called before any transfer of tokens. This includes
+minting and burning.
+Calling conditions:
+- when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+will be transferred to `to`.
+- when `from` is zero, `amount` tokens will be minted for `to`.
+- when `to` is zero, `amount` of ``from``'s tokens will be burned.
+- `from` and `to` are never both zero.
+
+
+```solidity
+function _beforeTokenTransfer(address from, address to, uint256 amount)
+ internal
+ virtual
+ override(ERC20Upgradeable, ERC20PausableUpgradeable);
+```
+
+### _transfer
+
+Moves `amount` of tokens from `from` to `to`.
+This internal function is equivalent to `transfer`, and can be used to
+e.g. implement automatic token fees, slashing mechanisms, etc.
+Emits a `Transfer` event.
+Requirements:
+- `from` cannot be the zero address.
+- `to` cannot be the zero address.
+- `from` must have a balance of at least `amount`.
+
+
+```solidity
+function _transfer(address sender, address recipient, uint256 amount) internal virtual override whenNotPaused;
+```
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal virtual override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
+## Events
+### Burning
+Emitted when tokens are burned
+
+
+```solidity
+event Burning(address indexed _burned, uint256 _amount);
+```
+
+### Minting
+Emitted when tokens are minted
+
+
+```solidity
+event Minting(address indexed _to, address indexed _minter, uint256 _amount);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/core/README.md b/packages/contracts/docs/src/src/dollar/core/README.md
new file mode 100644
index 000000000..c6373b440
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/README.md
@@ -0,0 +1,10 @@
+
+
+# Contents
+- [CreditNft](CreditNft.sol/contract.CreditNft.md)
+- [ERC1155Ubiquity](ERC1155Ubiquity.sol/abstract.ERC1155Ubiquity.md)
+- [ERC20Ubiquity](ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md)
+- [StakingShare](StakingShare.sol/contract.StakingShare.md)
+- [UbiquityCreditToken](UbiquityCreditToken.sol/contract.UbiquityCreditToken.md)
+- [UbiquityDollarToken](UbiquityDollarToken.sol/contract.UbiquityDollarToken.md)
+- [UbiquityGovernanceToken](UbiquityGovernanceToken.sol/contract.UbiquityGovernanceToken.md)
diff --git a/packages/contracts/docs/src/src/dollar/core/StakingShare.sol/contract.StakingShare.md b/packages/contracts/docs/src/src/dollar/core/StakingShare.sol/contract.StakingShare.md
new file mode 100644
index 000000000..a33bd25ce
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/StakingShare.sol/contract.StakingShare.md
@@ -0,0 +1,379 @@
+# StakingShare
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/StakingShare.sol)
+
+**Inherits:**
+[ERC1155Ubiquity](/src/dollar/core/ERC1155Ubiquity.sol/abstract.ERC1155Ubiquity.md), ERC1155URIStorageUpgradeable
+
+Contract representing a staking share in the form of ERC1155 token
+
+
+## State Variables
+### _stakes
+Mapping of stake id to stake info
+
+
+```solidity
+mapping(uint256 => Stake) private _stakes;
+```
+
+
+### _totalLP
+Total LP amount staked
+
+
+```solidity
+uint256 private _totalLP;
+```
+
+
+### _baseURI
+Base token URI
+
+
+```solidity
+string private _baseURI;
+```
+
+
+## Functions
+### onlyMinter
+
+Modifier checks that the method is called by a user with the "Staking share minter" role
+
+
+```solidity
+modifier onlyMinter() override;
+```
+
+### onlyBurner
+
+Modifier checks that the method is called by a user with the "Staking share burner" role
+
+
+```solidity
+modifier onlyBurner() override;
+```
+
+### onlyPauser
+
+Modifier checks that the method is called by a user with the "Pauser" role
+
+
+```solidity
+modifier onlyPauser() override;
+```
+
+### constructor
+
+Ensures initialize cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### initialize
+
+Initializes this contract
+
+
+```solidity
+function initialize(address _manager, string memory _uri) public virtual initializer;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the manager of the contract|
+|`_uri`|`string`|Base URI|
+
+
+### updateStake
+
+Updates a staking share
+
+
+```solidity
+function updateStake(uint256 _stakeId, uint256 _lpAmount, uint256 _lpRewardDebt, uint256 _endBlock)
+ external
+ onlyMinter
+ whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakeId`|`uint256`|Staking share id|
+|`_lpAmount`|`uint256`|Amount of Dollar-3CRV LP tokens deposited|
+|`_lpRewardDebt`|`uint256`|Amount of excess LP token inside the staking contract|
+|`_endBlock`|`uint256`|Block number when the locking period ends|
+
+
+### mint
+
+Mints a single staking share token for the `to` address
+
+
+```solidity
+function mint(address to, uint256 lpDeposited, uint256 lpRewardDebt, uint256 endBlock)
+ public
+ virtual
+ onlyMinter
+ whenNotPaused
+ returns (uint256 id);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Owner address|
+|`lpDeposited`|`uint256`|Amount of Dollar-3CRV LP tokens deposited|
+|`lpRewardDebt`|`uint256`|Amount of excess LP tokens inside the staking contract|
+|`endBlock`|`uint256`|Block number when the locking period ends|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Minted staking share id|
+
+
+### safeTransferFrom
+
+Transfers `amount` tokens of token type `id` from `from` to `to`.
+Emits a {TransferSingle} event.
+Requirements:
+- `to` cannot be the zero address.
+- If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
+- `from` must have a balance of tokens of type `id` of at least `amount`.
+- If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
+acceptance magic value.
+
+
+```solidity
+function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data)
+ public
+ override(ERC1155Upgradeable, ERC1155Ubiquity)
+ whenNotPaused;
+```
+
+### totalLP
+
+Returns total amount of Dollar-3CRV LP tokens deposited
+
+
+```solidity
+function totalLP() public view virtual returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Total amount of LP tokens deposited|
+
+
+### getStake
+
+Returns stake info
+
+
+```solidity
+function getStake(uint256 id) public view returns (Stake memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`Stake`|Staking share info|
+
+
+### safeBatchTransferFrom
+
+Batched version of `safeTransferFrom()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+- If `to` refers to a smart contract, it must implement `IERC1155Receiver-onERC1155BatchReceived` and return the
+acceptance magic value.
+
+
+```solidity
+function safeBatchTransferFrom(
+ address from,
+ address to,
+ uint256[] memory ids,
+ uint256[] memory amounts,
+ bytes memory data
+) public virtual override(ERC1155Upgradeable, ERC1155Ubiquity) whenNotPaused;
+```
+
+### _burnBatch
+
+Batched version of `_burn()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+
+
+```solidity
+function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts)
+ internal
+ virtual
+ override(ERC1155Upgradeable, ERC1155Ubiquity)
+ whenNotPaused;
+```
+
+### _beforeTokenTransfer
+
+Hook that is called before any token transfer. This includes minting
+and burning, as well as batched variants.
+The same hook is called on both single and batched variants. For single
+transfers, the length of the `ids` and `amounts` arrays will be 1.
+Calling conditions (for each `id` and `amount` pair):
+- When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
+of token type `id` will be transferred to `to`.
+- When `from` is zero, `amount` tokens of token type `id` will be minted
+for `to`.
+- when `to` is zero, `amount` of ``from``'s tokens of token type `id`
+will be burned.
+- `from` and `to` are never both zero.
+- `ids` and `amounts` have the same, non-zero length.
+
+
+```solidity
+function _beforeTokenTransfer(
+ address operator,
+ address from,
+ address to,
+ uint256[] memory ids,
+ uint256[] memory amounts,
+ bytes memory data
+) internal virtual override(ERC1155Upgradeable, ERC1155Ubiquity);
+```
+
+### uri
+
+Returns URI by token id
+
+
+```solidity
+function uri(uint256 tokenId)
+ public
+ view
+ virtual
+ override(ERC1155Upgradeable, ERC1155URIStorageUpgradeable)
+ returns (string memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenId`|`uint256`|Token id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`string`|URI string|
+
+
+### _burn
+
+Destroys `amount` tokens of token type `id` from `account`
+Emits a `TransferSingle` event.
+Requirements:
+- `account` cannot be the zero address.
+- `account` must have at least `amount` tokens of token type `id`.
+
+
+```solidity
+function _burn(address account, uint256 id, uint256 amount)
+ internal
+ virtual
+ override(ERC1155Upgradeable, ERC1155Ubiquity)
+ whenNotPaused;
+```
+
+### setUri
+
+Sets URI for token type `tokenId`
+
+
+```solidity
+function setUri(uint256 tokenId, string memory tokenUri) external onlyMinter;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenId`|`uint256`|Token type id|
+|`tokenUri`|`string`|Token URI|
+
+
+### setBaseUri
+
+Sets base URI for all token types
+
+
+```solidity
+function setBaseUri(string memory newUri) external onlyMinter;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newUri`|`string`|New URI string|
+
+
+### getBaseUri
+
+Returns base URI for all token types
+
+
+```solidity
+function getBaseUri() external view returns (string memory);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`string`|Base URI string|
+
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
+## Structs
+### Stake
+Stake struct
+
+
+```solidity
+struct Stake {
+ address minter;
+ uint256 lpFirstDeposited;
+ uint256 creationBlock;
+ uint256 lpRewardDebt;
+ uint256 endBlock;
+ uint256 lpAmount;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/core/UbiquityCreditToken.sol/contract.UbiquityCreditToken.md b/packages/contracts/docs/src/src/dollar/core/UbiquityCreditToken.sol/contract.UbiquityCreditToken.md
new file mode 100644
index 000000000..b20bf9da1
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/UbiquityCreditToken.sol/contract.UbiquityCreditToken.md
@@ -0,0 +1,116 @@
+# UbiquityCreditToken
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/UbiquityCreditToken.sol)
+
+**Inherits:**
+[ERC20Ubiquity](/src/dollar/core/ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md)
+
+Credit token contract
+
+
+## Functions
+### constructor
+
+Ensures initialize cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### initialize
+
+Initializes the contract
+
+
+```solidity
+function initialize(address _manager) public initializer;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the Ubiquity Manager|
+
+
+### onlyCreditMinter
+
+Modifier checks that the method is called by a user with the "Credit minter" role
+
+
+```solidity
+modifier onlyCreditMinter();
+```
+
+### onlyCreditBurner
+
+Modifier checks that the method is called by a user with the "Credit burner" role
+
+
+```solidity
+modifier onlyCreditBurner();
+```
+
+### raiseCapital
+
+Raises capital in the form of Ubiquity Credit Token
+
+*CREDIT_TOKEN_MINTER_ROLE access control role is required to call this function*
+
+
+```solidity
+function raiseCapital(uint256 amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount to be minted|
+
+
+### burnFrom
+
+Burns Ubiquity Credit tokens from specified account
+
+
+```solidity
+function burnFrom(address account, uint256 amount) public override onlyCreditBurner whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Account to burn from|
+|`amount`|`uint256`|Amount to burn|
+
+
+### mint
+
+Creates `amount` new Credit tokens for `to`
+
+
+```solidity
+function mint(address to, uint256 amount) public onlyCreditMinter whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Account to mint Credit tokens to|
+|`amount`|`uint256`|Amount of Credit tokens to mint|
+
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/core/UbiquityDollarToken.sol/contract.UbiquityDollarToken.md b/packages/contracts/docs/src/src/dollar/core/UbiquityDollarToken.sol/contract.UbiquityDollarToken.md
new file mode 100644
index 000000000..8eb258159
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/UbiquityDollarToken.sol/contract.UbiquityDollarToken.md
@@ -0,0 +1,99 @@
+# UbiquityDollarToken
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/UbiquityDollarToken.sol)
+
+**Inherits:**
+[ERC20Ubiquity](/src/dollar/core/ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md)
+
+Ubiquity Dollar token contract
+
+
+## Functions
+### constructor
+
+Ensures initialize cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### initialize
+
+Initializes the contract
+
+
+```solidity
+function initialize(address _manager) public initializer;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the Ubiquity Manager|
+
+
+### onlyDollarMinter
+
+Modifier checks that the method is called by a user with the "Dollar minter" role
+
+
+```solidity
+modifier onlyDollarMinter();
+```
+
+### onlyDollarBurner
+
+Modifier checks that the method is called by a user with the "Dollar burner" role
+
+
+```solidity
+modifier onlyDollarBurner();
+```
+
+### burnFrom
+
+Burns Dollars from the `account` address
+
+
+```solidity
+function burnFrom(address account, uint256 amount) public override onlyDollarBurner whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to burn tokens from|
+|`amount`|`uint256`|Amount of tokens to burn|
+
+
+### mint
+
+Mints Dollars to the `to` address
+
+
+```solidity
+function mint(address to, uint256 amount) public onlyDollarMinter whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address to mint tokens to|
+|`amount`|`uint256`|Amount of tokens to mint|
+
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/core/UbiquityGovernanceToken.sol/contract.UbiquityGovernanceToken.md b/packages/contracts/docs/src/src/dollar/core/UbiquityGovernanceToken.sol/contract.UbiquityGovernanceToken.md
new file mode 100644
index 000000000..7e945b793
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/core/UbiquityGovernanceToken.sol/contract.UbiquityGovernanceToken.md
@@ -0,0 +1,99 @@
+# UbiquityGovernanceToken
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/core/UbiquityGovernanceToken.sol)
+
+**Inherits:**
+[ERC20Ubiquity](/src/dollar/core/ERC20Ubiquity.sol/abstract.ERC20Ubiquity.md)
+
+Ubiquity Governance token contract
+
+
+## Functions
+### constructor
+
+Ensures initialize cannot be called on the implementation contract
+
+
+```solidity
+constructor();
+```
+
+### initialize
+
+Initializes the contract
+
+
+```solidity
+function initialize(address _manager) public initializer;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Address of the Ubiquity Manager|
+
+
+### onlyGovernanceMinter
+
+Modifier checks that the method is called by a user with the "Governance minter" role
+
+
+```solidity
+modifier onlyGovernanceMinter();
+```
+
+### onlyGovernanceBurner
+
+Modifier checks that the method is called by a user with the "Governance burner" role
+
+
+```solidity
+modifier onlyGovernanceBurner();
+```
+
+### burnFrom
+
+Burns Governance tokens from the `account` address
+
+
+```solidity
+function burnFrom(address account, uint256 amount) public override onlyGovernanceBurner whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to burn tokens from|
+|`amount`|`uint256`|Amount of tokens to burn|
+
+
+### mint
+
+Mints Governance tokens to the `to` address
+
+
+```solidity
+function mint(address to, uint256 amount) public onlyGovernanceMinter whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address to mint tokens to|
+|`amount`|`uint256`|Amount of tokens to mint|
+
+
+### _authorizeUpgrade
+
+Allows an admin to upgrade to another implementation contract
+
+
+```solidity
+function _authorizeUpgrade(address newImplementation) internal override onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newImplementation`|`address`|Address of the new implementation contract|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/AccessControlFacet.sol/contract.AccessControlFacet.md b/packages/contracts/docs/src/src/dollar/facets/AccessControlFacet.sol/contract.AccessControlFacet.md
new file mode 100644
index 000000000..2437cf510
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/AccessControlFacet.sol/contract.AccessControlFacet.md
@@ -0,0 +1,147 @@
+# AccessControlFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/AccessControlFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md), [IAccessControl](/src/dollar/interfaces/IAccessControl.sol/interface.IAccessControl.md), [AccessControlInternal](/src/dollar/access/AccessControlInternal.sol/abstract.AccessControlInternal.md)
+
+Role-based access control facet
+
+*Derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license)*
+
+*https://github.com/solidstate-network/solidstate-solidity/blob/master/contracts/access/access_control/AccessControl.sol*
+
+
+## Functions
+### grantRole
+
+Assigns role to a given account
+
+
+```solidity
+function grantRole(bytes32 role, address account) external onlyRole(_getRoleAdmin(role));
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to assign|
+|`account`|`address`|Recipient address of role assignment|
+
+
+### setRoleAdmin
+
+Sets admin role for a given role
+
+
+```solidity
+function setRoleAdmin(bytes32 role, bytes32 adminRole) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to set|
+|`adminRole`|`bytes32`|Admin role to set for a provided role|
+
+
+### hasRole
+
+Checks whether role is assigned to account
+
+
+```solidity
+function hasRole(bytes32 role, address account) external view returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to check|
+|`account`|`address`|Address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether role is assigned to account|
+
+
+### getRoleAdmin
+
+Returns admin role for a given role
+
+
+```solidity
+function getRoleAdmin(bytes32 role) external view returns (bytes32);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Admin role for a provided role|
+
+
+### revokeRole
+
+Unassign role from a given account
+
+
+```solidity
+function revokeRole(bytes32 role, address account) external onlyRole(_getRoleAdmin(role));
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to unassign|
+|`account`|`address`|Address from which the provided role should be unassigned|
+
+
+### renounceRole
+
+Renounce role
+
+
+```solidity
+function renounceRole(bytes32 role) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to renounce|
+
+
+### paused
+
+Returns true if the contract is paused and false otherwise
+
+
+```solidity
+function paused() public view returns (bool);
+```
+
+### pause
+
+Pauses the contract
+
+
+```solidity
+function pause() external whenNotPaused onlyAdmin;
+```
+
+### unpause
+
+Unpauses the contract
+
+
+```solidity
+function unpause() external whenPaused onlyAdmin;
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/BondingCurveFacet.sol/contract.BondingCurveFacet.md b/packages/contracts/docs/src/src/dollar/facets/BondingCurveFacet.sol/contract.BondingCurveFacet.md
new file mode 100644
index 000000000..2f153edaf
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/BondingCurveFacet.sol/contract.BondingCurveFacet.md
@@ -0,0 +1,191 @@
+# BondingCurveFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/BondingCurveFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md), [IBondingCurve](/src/dollar/interfaces/IBondingCurve.sol/interface.IBondingCurve.md)
+
+Bonding curve contract based on Bancor formula
+
+Inspired from Bancor protocol https://github.com/bancorprotocol/contracts
+
+Used on UbiquiStick NFT minting
+
+
+## Functions
+### setParams
+
+Sets bonding curve params
+
+
+```solidity
+function setParams(uint32 _connectorWeight, uint256 _baseY) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_connectorWeight`|`uint32`|Connector weight|
+|`_baseY`|`uint256`|Base Y|
+
+
+### connectorWeight
+
+Returns `connectorWeight` value
+
+
+```solidity
+function connectorWeight() external view returns (uint32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint32`|Connector weight value|
+
+
+### baseY
+
+Returns `baseY` value
+
+
+```solidity
+function baseY() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Base Y value|
+
+
+### poolBalance
+
+Returns total balance of deposited collateral
+
+
+```solidity
+function poolBalance() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of deposited collateral|
+
+
+### deposit
+
+Deposits collateral tokens in exchange for UbiquiStick NFT
+
+
+```solidity
+function deposit(uint256 _collateralDeposited, address _recipient) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_collateralDeposited`|`uint256`|Amount of collateral|
+|`_recipient`|`address`|Address to receive the NFT|
+
+
+### getShare
+
+Returns number of NFTs a `_recipient` holds
+
+
+```solidity
+function getShare(address _recipient) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_recipient`|`address`|User address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of NFTs for `_recipient`|
+
+
+### withdraw
+
+Withdraws collateral tokens to treasury
+
+
+```solidity
+function withdraw(uint256 _amount) external onlyAdmin whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of collateral tokens to withdraw|
+
+
+### purchaseTargetAmount
+
+Given a token supply, reserve balance, weight and a deposit amount (in the reserve token),
+calculates the target amount for a given conversion (in the main token)
+
+`_supply * ((1 + _tokensDeposited / _connectorBalance) ^ (_connectorWeight / 1000000) - 1)`
+
+
+```solidity
+function purchaseTargetAmount(
+ uint256 _tokensDeposited,
+ uint32 _connectorWeight,
+ uint256 _supply,
+ uint256 _connectorBalance
+) external pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_tokensDeposited`|`uint256`|Amount of collateral tokens to deposit|
+|`_connectorWeight`|`uint32`|Connector weight, represented in ppm, 1 - 1,000,000|
+|`_supply`|`uint256`|Current token supply|
+|`_connectorBalance`|`uint256`|Total connector balance|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of tokens minted|
+
+
+### purchaseTargetAmountFromZero
+
+Given a deposit (in the collateral token) token supply of 0, calculates the return
+for a given conversion (in the token)
+
+`_supply * ((1 + _tokensDeposited / _connectorBalance) ^ (_connectorWeight / 1000000) - 1)`
+
+
+```solidity
+function purchaseTargetAmountFromZero(
+ uint256 _tokensDeposited,
+ uint256 _connectorWeight,
+ uint256 _baseX,
+ uint256 _baseY
+) external pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_tokensDeposited`|`uint256`|Amount of collateral tokens to deposit|
+|`_connectorWeight`|`uint256`|Connector weight, represented in ppm, 1 - 1,000,000|
+|`_baseX`|`uint256`|Constant x|
+|`_baseY`|`uint256`|Expected price|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of tokens minted|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/ChefFacet.sol/contract.ChefFacet.md b/packages/contracts/docs/src/src/dollar/facets/ChefFacet.sol/contract.ChefFacet.md
new file mode 100644
index 000000000..b10288257
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/ChefFacet.sol/contract.ChefFacet.md
@@ -0,0 +1,215 @@
+# ChefFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/ChefFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Contract facet for staking Dollar-3CRV LP tokens for Governance tokens reward
+
+
+## Functions
+### setGovernancePerBlock
+
+Sets amount of Governance tokens minted each block
+
+
+```solidity
+function setGovernancePerBlock(uint256 _governancePerBlock) external onlyTokenManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_governancePerBlock`|`uint256`|Amount of Governance tokens minted each block|
+
+
+### setGovernanceShareForTreasury
+
+Sets Governance token divider param. The bigger `_governanceDivider` the less extra
+Governance tokens will be minted for the treasury.
+
+Example: if `_governanceDivider = 5` then `100 / 5 = 20%` extra minted Governance tokens for treasury
+
+
+```solidity
+function setGovernanceShareForTreasury(uint256 _governanceDivider) external onlyTokenManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_governanceDivider`|`uint256`|Governance divider param value|
+
+
+### setMinPriceDiffToUpdateMultiplier
+
+Sets min price difference between the old and the new Dollar prices
+
+
+```solidity
+function setMinPriceDiffToUpdateMultiplier(uint256 _minPriceDiffToUpdateMultiplier) external onlyTokenManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_minPriceDiffToUpdateMultiplier`|`uint256`|Min price diff to update governance multiplier|
+
+
+### getRewards
+
+Withdraws pending Governance token rewards
+
+
+```solidity
+function getRewards(uint256 stakingShareID) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareID`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Reward amount transferred to `msg.sender`|
+
+
+### governanceMultiplier
+
+Returns governance multiplier
+
+
+```solidity
+function governanceMultiplier() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Governance multiplier|
+
+
+### governancePerBlock
+
+Returns amount of Governance tokens minted each block
+
+
+```solidity
+function governancePerBlock() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Governance tokens minted each block|
+
+
+### governanceDivider
+
+Returns governance divider param
+
+Example: if `_governanceDivider = 5` then `100 / 5 = 20%` extra minted Governance tokens for treasury
+
+
+```solidity
+function governanceDivider() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Governance divider param value|
+
+
+### pool
+
+Returns pool info
+
+
+```solidity
+function pool() external view returns (uint256, uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Last block number when Governance tokens distribution occurred|
+|``|`uint256`|Accumulated Governance tokens per share, times 1e12|
+
+
+### minPriceDiffToUpdateMultiplier
+
+Returns min price difference between the old and the new Dollar prices
+required to update the governance multiplier
+
+
+```solidity
+function minPriceDiffToUpdateMultiplier() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Min Dollar price diff to update the governance multiplier|
+
+
+### pendingGovernance
+
+Returns amount of pending reward Governance tokens
+
+
+```solidity
+function pendingGovernance(uint256 stakingShareID) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareID`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of pending reward Governance tokens|
+
+
+### getStakingShareInfo
+
+Returns staking share info
+
+
+```solidity
+function getStakingShareInfo(uint256 _id) external view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|Array of amount of shares and reward debt|
+
+
+### totalShares
+
+Total amount of Dollar-3CRV LP tokens deposited to the Staking contract
+
+
+```solidity
+function totalShares() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Total amount of deposited LP tokens|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/CollectableDustFacet.sol/contract.CollectableDustFacet.md b/packages/contracts/docs/src/src/dollar/facets/CollectableDustFacet.sol/contract.CollectableDustFacet.md
new file mode 100644
index 000000000..2d0b32478
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/CollectableDustFacet.sol/contract.CollectableDustFacet.md
@@ -0,0 +1,57 @@
+# CollectableDustFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/CollectableDustFacet.sol)
+
+**Inherits:**
+[ICollectableDust](/src/dollar/interfaces/utils/ICollectableDust.sol/interface.ICollectableDust.md), [Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Contract for collecting dust (i.e. not part of a protocol) tokens sent to a contract
+
+
+## Functions
+### addProtocolToken
+
+Adds token address to a protocol
+
+
+```solidity
+function addProtocolToken(address _token) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token`|`address`|Token address to add|
+
+
+### removeProtocolToken
+
+Removes token address from a protocol
+
+
+```solidity
+function removeProtocolToken(address _token) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token`|`address`|Token address to remove|
+
+
+### sendDust
+
+Sends dust tokens (which are not part of a protocol) to the `_to` address
+
+
+```solidity
+function sendDust(address _to, address _token, uint256 _amount) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_to`|`address`|Tokens receiver address|
+|`_token`|`address`|Token address to send|
+|`_amount`|`uint256`|Amount of tokens to send|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/CreditClockFacet.sol/contract.CreditClockFacet.md b/packages/contracts/docs/src/src/dollar/facets/CreditClockFacet.sol/contract.CreditClockFacet.md
new file mode 100644
index 000000000..3ea9b8946
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/CreditClockFacet.sol/contract.CreditClockFacet.md
@@ -0,0 +1,68 @@
+# CreditClockFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/CreditClockFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+CreditClock Facet
+
+
+## Functions
+### setManager
+
+Updates the manager address
+
+
+```solidity
+function setManager(address _manager) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|New manager address|
+
+
+### getManager
+
+Returns the manager address
+
+
+```solidity
+function getManager() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Manager address|
+
+
+### setRatePerBlock
+
+Sets rate to apply from this block onward
+
+
+```solidity
+function setRatePerBlock(bytes16 _ratePerBlock) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_ratePerBlock`|`bytes16`|ABDKMathQuad new rate per block to apply from this block onward|
+
+
+### getRate
+
+
+```solidity
+function getRate(uint256 blockNumber) external view;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`blockNumber`|`uint256`|Block number to get the rate for. 0 for current block.|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/CreditNftManagerFacet.sol/contract.CreditNftManagerFacet.md b/packages/contracts/docs/src/src/dollar/facets/CreditNftManagerFacet.sol/contract.CreditNftManagerFacet.md
new file mode 100644
index 000000000..88e39368f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/CreditNftManagerFacet.sol/contract.CreditNftManagerFacet.md
@@ -0,0 +1,325 @@
+# CreditNftManagerFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/CreditNftManagerFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Contract facet for basic credit issuing and redemption mechanism for Credit NFT and Credit holders
+
+Allows users to burn their Dollars in exchange for Credit NFTs or Credits redeemable in the future
+
+Allows users to:
+- redeem individual Credit NFT or batch redeem Credit NFT on a first-come first-serve basis
+- redeem Credits for Dollars
+
+
+## Functions
+### setExpiredCreditNftConversionRate
+
+Credit NFT to Governance conversion rate
+
+When Credit NFTs are expired they can be converted to
+Governance tokens using `rate` conversion rate
+
+
+```solidity
+function setExpiredCreditNftConversionRate(uint256 rate) external onlyCreditNftManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`rate`|`uint256`|Credit NFT to Governance tokens conversion rate|
+
+
+### expiredCreditNftConversionRate
+
+Returns Credit NFT to Governance conversion rate
+
+
+```solidity
+function expiredCreditNftConversionRate() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Conversion rate|
+
+
+### setCreditNftLength
+
+Sets Credit NFT block lifespan
+
+
+```solidity
+function setCreditNftLength(uint256 _creditNftLengthBlocks) external onlyCreditNftManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftLengthBlocks`|`uint256`|The number of blocks during which Credit NFTs can be redeemed for Dollars|
+
+
+### creditNftLengthBlocks
+
+Returns Credit NFT block lifespan
+
+
+```solidity
+function creditNftLengthBlocks() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Number of blocks during which Credit NFTs can be redeemed for Dollars|
+
+
+### exchangeDollarsForCreditNft
+
+Burns Dollars in exchange for Credit NFTs
+
+Should only be called when Dollar price < 1$
+
+
+```solidity
+function exchangeDollarsForCreditNft(uint256 amount) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to exchange for Credit NFTs|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Expiry block number when Credit NFTs can no longer be redeemed for Dollars|
+
+
+### exchangeDollarsForCredit
+
+Burns Dollars in exchange for Credit tokens
+
+Should only be called when Dollar price < 1$
+
+
+```solidity
+function exchangeDollarsForCredit(uint256 amount) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits minted|
+
+
+### getCreditNftReturnedForDollars
+
+Returns amount of Credit NFTs to be minted for the `amount` of Dollars to burn
+
+
+```solidity
+function getCreditNftReturnedForDollars(uint256 amount) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credit NFTs to be minted|
+
+
+### getCreditReturnedForDollars
+
+Returns the amount of Credit tokens to be minter for the provided `amount` of Dollars to burn
+
+
+```solidity
+function getCreditReturnedForDollars(uint256 amount) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits to be minted|
+
+
+### onERC1155Received
+
+Handles the receipt of a single ERC1155 token type. This function is
+called at the end of a `safeTransferFrom` after the balance has been updated.
+NOTE: To accept the transfer, this must return
+`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
+(i.e. 0xf23a6e61, or its own function selector).
+
+
+```solidity
+function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data)
+ external
+ view
+ returns (bytes4);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`operator`|`address`|The address which initiated the transfer (i.e. msg.sender)|
+|`from`|`address`|The address which previously owned the token|
+|`id`|`uint256`|The ID of the token being transferred|
+|`value`|`uint256`|The amount of tokens being transferred|
+|`data`|`bytes`|Additional data with no specified format|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes4`|`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed|
+
+
+### onERC1155BatchReceived
+
+Handles the receipt of a multiple ERC1155 token types. This function
+is called at the end of a `safeBatchTransferFrom` after the balances have
+been updated.
+NOTE: To accept the transfer(s), this must return
+`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
+(i.e. 0xbc197c81, or its own function selector).
+
+
+```solidity
+function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata)
+ external
+ pure
+ returns (bytes4);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes4`|`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed|
+
+
+### burnExpiredCreditNftForGovernance
+
+Burns expired Credit NFTs for Governance tokens at `expiredCreditNftConversionRate` rate
+
+
+```solidity
+function burnExpiredCreditNftForGovernance(uint256 id, uint256 amount) public returns (uint256 governanceAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT timestamp|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`governanceAmount`|`uint256`|Amount of Governance tokens minted to Credit NFT holder|
+
+
+### burnCreditNftForCredit
+
+TODO: Should we leave it ?
+
+Burns Credit NFTs for Credit tokens
+
+
+```solidity
+function burnCreditNftForCredit(uint256 id, uint256 amount) public returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT timestamp|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Credit tokens balance of `msg.sender`|
+
+
+### burnCreditTokensForDollars
+
+Burns Credit tokens for Dollars when Dollar price > 1$
+
+
+```solidity
+function burnCreditTokensForDollars(uint256 amount) public returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Credits to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of unredeemed Credits|
+
+
+### redeemCreditNft
+
+Burns Credit NFTs for Dollars when Dollar price > 1$
+
+
+```solidity
+function redeemCreditNft(uint256 id, uint256 amount) public returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT expiry block number|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of unredeemed Credit NFTs|
+
+
+### mintClaimableDollars
+
+Mints Dollars when Dollar price > 1$
+
+Distributes excess Dollars this way:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+```solidity
+function mintClaimableDollars() public;
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/CreditNftRedemptionCalculatorFacet.sol/contract.CreditNftRedemptionCalculatorFacet.md b/packages/contracts/docs/src/src/dollar/facets/CreditNftRedemptionCalculatorFacet.sol/contract.CreditNftRedemptionCalculatorFacet.md
new file mode 100644
index 000000000..e03a2c43c
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/CreditNftRedemptionCalculatorFacet.sol/contract.CreditNftRedemptionCalculatorFacet.md
@@ -0,0 +1,31 @@
+# CreditNftRedemptionCalculatorFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/CreditNftRedemptionCalculatorFacet.sol)
+
+**Inherits:**
+[ICreditNftRedemptionCalculator](/src/dollar/interfaces/ICreditNftRedemptionCalculator.sol/interface.ICreditNftRedemptionCalculator.md)
+
+Contract facet for calculating amount of Credit NFTs to mint on Dollars burn
+
+
+## Functions
+### getCreditNftAmount
+
+Returns Credit NFT amount minted for `dollarsToBurn` amount of Dollars to burn
+
+
+```solidity
+function getCreditNftAmount(uint256 dollarsToBurn) external view override returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarsToBurn`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credit NFTs to mint|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/CreditRedemptionCalculatorFacet.sol/contract.CreditRedemptionCalculatorFacet.md b/packages/contracts/docs/src/src/dollar/facets/CreditRedemptionCalculatorFacet.sol/contract.CreditRedemptionCalculatorFacet.md
new file mode 100644
index 000000000..fa25de073
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/CreditRedemptionCalculatorFacet.sol/contract.CreditRedemptionCalculatorFacet.md
@@ -0,0 +1,63 @@
+# CreditRedemptionCalculatorFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/CreditRedemptionCalculatorFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md), [ICreditRedemptionCalculator](/src/dollar/interfaces/ICreditRedemptionCalculator.sol/interface.ICreditRedemptionCalculator.md)
+
+Contract facet for calculating amount of Credits to mint on Dollars burn
+
+
+## Functions
+### setConstant
+
+Sets the `p` param in the Credit mint calculation formula:
+`y = x * ((BlockDebtStart / BlockBurn) ^ p)`
+
+
+```solidity
+function setConstant(uint256 coef) external onlyIncentiveAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`coef`|`uint256`|New `p` param in wei|
+
+
+### getConstant
+
+Returns the `p` param used in the Credit mint calculation formula
+
+
+```solidity
+function getConstant() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|`p` param|
+
+
+### getCreditAmount
+
+Returns amount of Credits to mint for `dollarsToBurn` amount of Dollars to burn
+
+
+```solidity
+function getCreditAmount(uint256 dollarsToBurn, uint256 blockHeightDebt) external view override returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarsToBurn`|`uint256`|Amount of Dollars to burn|
+|`blockHeightDebt`|`uint256`|Block number when the latest debt cycle started (i.e. when Dollar price became < 1$)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits to mint|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/CurveDollarIncentiveFacet.sol/contract.CurveDollarIncentiveFacet.md b/packages/contracts/docs/src/src/dollar/facets/CurveDollarIncentiveFacet.sol/contract.CurveDollarIncentiveFacet.md
new file mode 100644
index 000000000..bcf72b80f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/CurveDollarIncentiveFacet.sol/contract.CurveDollarIncentiveFacet.md
@@ -0,0 +1,102 @@
+# CurveDollarIncentiveFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/CurveDollarIncentiveFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Facet adds buy incentive and sell penalty for Curve's Dollar-3CRV MetaPool
+
+
+## Functions
+### incentivize
+
+Adds buy and sell incentives
+
+
+```solidity
+function incentivize(address sender, address receiver, uint256 amountIn) external onlyDollarManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`sender`|`address`|Sender address|
+|`receiver`|`address`|Receiver address|
+|`amountIn`|`uint256`|Trade amount|
+
+
+### setExemptAddress
+
+Sets an address to be exempted from Curve trading incentives
+
+
+```solidity
+function setExemptAddress(address account, bool isExempt) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to update|
+|`isExempt`|`bool`|Flag for whether to flag as exempt or not|
+
+
+### switchSellPenalty
+
+Switches the sell penalty
+
+
+```solidity
+function switchSellPenalty() external onlyAdmin;
+```
+
+### switchBuyIncentive
+
+Switches the buy incentive
+
+
+```solidity
+function switchBuyIncentive() external onlyAdmin;
+```
+
+### isSellPenaltyOn
+
+Checks whether sell penalty is enabled
+
+
+```solidity
+function isSellPenaltyOn() external view returns (bool);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether sell penalty is enabled|
+
+
+### isBuyIncentiveOn
+
+Checks whether buy incentive is enabled
+
+
+```solidity
+function isBuyIncentiveOn() external view returns (bool);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether buy incentive is enabled|
+
+
+### isExemptAddress
+
+Checks whether `account` is marked as exempt
+
+Whether `account` is exempt from buy incentive and sell penalty
+
+
+```solidity
+function isExemptAddress(address account) external view returns (bool);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/DiamondCutFacet.sol/contract.DiamondCutFacet.md b/packages/contracts/docs/src/src/dollar/facets/DiamondCutFacet.sol/contract.DiamondCutFacet.md
new file mode 100644
index 000000000..43a395afd
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/DiamondCutFacet.sol/contract.DiamondCutFacet.md
@@ -0,0 +1,32 @@
+# DiamondCutFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/DiamondCutFacet.sol)
+
+**Inherits:**
+[IDiamondCut](/src/dollar/interfaces/IDiamondCut.sol/interface.IDiamondCut.md)
+
+Facet used for diamond selector modifications
+
+*Remember to add the loupe functions from DiamondLoupeFacet to the diamond.
+The loupe functions are required by the EIP2535 Diamonds standard.*
+
+
+## Functions
+### diamondCut
+
+Add/replace/remove any number of functions and optionally execute a function with delegatecall
+
+*`_calldata` is executed with delegatecall on `_init`*
+
+
+```solidity
+function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external override;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_diamondCut`|`FacetCut[]`|Contains the facet addresses and function selectors|
+|`_init`|`address`|The address of the contract or facet to execute _calldata|
+|`_calldata`|`bytes`|A function call, including function selector and arguments|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/DiamondLoupeFacet.sol/contract.DiamondLoupeFacet.md b/packages/contracts/docs/src/src/dollar/facets/DiamondLoupeFacet.sol/contract.DiamondLoupeFacet.md
new file mode 100644
index 000000000..8d1ff8f2f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/DiamondLoupeFacet.sol/contract.DiamondLoupeFacet.md
@@ -0,0 +1,113 @@
+# DiamondLoupeFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/DiamondLoupeFacet.sol)
+
+**Inherits:**
+[IDiamondLoupe](/src/dollar/interfaces/IDiamondLoupe.sol/interface.IDiamondLoupe.md), IERC165
+
+A loupe is a small magnifying glass used to look at diamonds.
+These functions look at diamonds.
+
+*These functions are expected to be called frequently by 3rd party tools.*
+
+*The functions in DiamondLoupeFacet MUST be added to a diamond.
+The EIP-2535 Diamond standard requires these functions.*
+
+
+## Functions
+### facets
+
+Returns all facet addresses and their four byte function selectors
+
+
+```solidity
+function facets() external view override returns (Facet[] memory facets_);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facets_`|`Facet[]`|Facets with function selectors|
+
+
+### facetFunctionSelectors
+
+Returns all function selectors supported by a specific facet
+
+
+```solidity
+function facetFunctionSelectors(address _facet)
+ external
+ view
+ override
+ returns (bytes4[] memory facetFunctionSelectors_);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_facet`|`address`|Facet address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facetFunctionSelectors_`|`bytes4[]`|Function selectors for a particular facet|
+
+
+### facetAddresses
+
+Returns all facet addresses used by a diamond
+
+
+```solidity
+function facetAddresses() external view override returns (address[] memory facetAddresses_);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facetAddresses_`|`address[]`|Facet addresses in a diamond|
+
+
+### facetAddress
+
+Returns the facet that supports the given selector
+
+*If facet is not found returns `address(0)`*
+
+
+```solidity
+function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_functionSelector`|`bytes4`|Function selector|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facetAddress_`|`address`|Facet address|
+
+
+### supportsInterface
+
+Returns `true` if this contract implements the interface defined by
+`interfaceId`. See the corresponding
+https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
+to learn more about how these ids are created.
+This function call must use less than 30 000 gas.
+
+
+```solidity
+function supportsInterface(bytes4 _interfaceId) external view override returns (bool);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether contract supports a provided interface|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/DirectGovernanceFarmerFacet.sol/contract.DirectGovernanceFarmerFacet.md b/packages/contracts/docs/src/src/dollar/facets/DirectGovernanceFarmerFacet.sol/contract.DirectGovernanceFarmerFacet.md
new file mode 100644
index 000000000..4341aeecf
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/DirectGovernanceFarmerFacet.sol/contract.DirectGovernanceFarmerFacet.md
@@ -0,0 +1,200 @@
+# DirectGovernanceFarmerFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/DirectGovernanceFarmerFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Simpler Staking Facet
+
+How it works:
+1. User sends stablecoins (DAI / USDC / USDT / Dollar)
+2. Deposited stablecoins are added to Dollar-3CRV Curve MetaPool
+3. User gets Dollar-3CRV LP tokens
+4. Dollar-3CRV LP tokens are transferred to the staking contract
+5. User gets a staking share id
+
+
+## Functions
+### initialize
+
+it works as a constructor to set contract values at storage
+
+
+```solidity
+function initialize(
+ address _manager,
+ address base3Pool,
+ address ubiquity3PoolLP,
+ address _ubiquityDollar,
+ address zapPool
+) public onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|Ubiquity Manager|
+|`base3Pool`|`address`|Base3Pool Address|
+|`ubiquity3PoolLP`|`address`|Ubiquity3PoolLP Address|
+|`_ubiquityDollar`|`address`|Ubiquity Dollar Address|
+|`zapPool`|`address`|ZapPool Address|
+
+
+### depositSingle
+
+Deposits a single token to staking
+
+Stable coin (DAI / USDC / USDT / Ubiquity Dollar) => Dollar-3CRV LP => Ubiquity Staking
+
+How it works:
+1. User sends stablecoins (DAI / USDC / USDT / Dollar)
+2. Deposited stablecoins are added to Dollar-3CRV Curve MetaPool
+3. User gets Dollar-3CRV LP tokens
+4. Dollar-3CRV LP tokens are transferred to the staking contract
+5. User gets a staking share id
+
+
+```solidity
+function depositSingle(address token, uint256 amount, uint256 durationWeeks)
+ external
+ nonReentrant
+ returns (uint256 stakingShareId);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token deposited : DAI, USDC, USDT or Ubiquity Dollar|
+|`amount`|`uint256`|Amount of tokens to deposit (For max: `uint256(-1)`)|
+|`durationWeeks`|`uint256`|Duration in weeks tokens will be locked (1-208)|
+
+
+### depositMulti
+
+Deposits into Ubiquity protocol
+
+Stable coins (DAI / USDC / USDT / Ubiquity Dollar) => uAD3CRV-f => Ubiquity StakingShare
+
+STEP 1 : Change (DAI / USDC / USDT / Ubiquity dollar) to 3CRV at uAD3CRV MetaPool
+
+STEP 2 : uAD3CRV-f => Ubiquity StakingShare
+
+
+```solidity
+function depositMulti(uint256[4] calldata tokenAmounts, uint256 durationWeeks)
+ external
+ nonReentrant
+ returns (uint256 stakingShareId);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmounts`|`uint256[4]`|Amount of tokens to deposit (For max: `uint256(-1)`) it MUST follow this order [Ubiquity Dollar, DAI, USDC, USDT]|
+|`durationWeeks`|`uint256`|Duration in weeks tokens will be locked (1-208)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking share id|
+
+
+### withdrawId
+
+Withdraws from Ubiquity protocol
+
+Ubiquity StakingShare => uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+STEP 1 : Ubiquity StakingShare => uAD3CRV-f
+
+STEP 2 : uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+
+```solidity
+function withdrawId(uint256 stakingShareId) external nonReentrant returns (uint256[4] memory tokenAmounts);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking Share Id to withdraw|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmounts`|`uint256[4]`|Array of token amounts [Ubiquity Dollar, DAI, USDC, USDT]|
+
+
+### withdraw
+
+Withdraws from Ubiquity protocol
+
+Ubiquity StakingShare => uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+STEP 1 : Ubiquity StakingShare => uAD3CRV-f
+
+STEP 2 : uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+
+```solidity
+function withdraw(uint256 stakingShareId, address token) external nonReentrant returns (uint256 tokenAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking Share Id to withdraw|
+|`token`|`address`|Token to withdraw to : DAI, USDC, USDT, 3CRV or Ubiquity Dollar|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmount`|`uint256`|Amount of token withdrawn|
+
+
+### isIdIncluded
+
+Checks whether `id` exists in `idList[]`
+
+
+```solidity
+function isIdIncluded(uint256[] memory idList, uint256 id) external pure returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`idList`|`uint256[]`|Array to search in|
+|`id`|`uint256`|Value to search in `idList`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `id` exists in `idList[]`|
+
+
+### isMetaPoolCoin
+
+Helper function that checks that `token` is one of the underlying MetaPool tokens or stablecoin from MetaPool
+
+
+```solidity
+function isMetaPoolCoin(address token) external pure returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `token` is one of the underlying MetaPool tokens or stablecoin from MetaPool|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/DollarMintCalculatorFacet.sol/contract.DollarMintCalculatorFacet.md b/packages/contracts/docs/src/src/dollar/facets/DollarMintCalculatorFacet.sol/contract.DollarMintCalculatorFacet.md
new file mode 100644
index 000000000..5dbb07704
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/DollarMintCalculatorFacet.sol/contract.DollarMintCalculatorFacet.md
@@ -0,0 +1,25 @@
+# DollarMintCalculatorFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/DollarMintCalculatorFacet.sol)
+
+**Inherits:**
+[IDollarMintCalculator](/src/dollar/interfaces/IDollarMintCalculator.sol/interface.IDollarMintCalculator.md)
+
+Calculates amount of Dollars ready to be minted when TWAP price (i.e. Dollar price) > 1$
+
+
+## Functions
+### getDollarsToMint
+
+Returns amount of Dollars to be minted based on formula `(TWAP_PRICE - 1) * DOLLAR_TOTAL_SUPPLY`
+
+
+```solidity
+function getDollarsToMint() external view override returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Dollars to be minted|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/DollarMintExcessFacet.sol/contract.DollarMintExcessFacet.md b/packages/contracts/docs/src/src/dollar/facets/DollarMintExcessFacet.sol/contract.DollarMintExcessFacet.md
new file mode 100644
index 000000000..f8204c72b
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/DollarMintExcessFacet.sol/contract.DollarMintExcessFacet.md
@@ -0,0 +1,27 @@
+# DollarMintExcessFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/DollarMintExcessFacet.sol)
+
+**Inherits:**
+[IDollarMintExcess](/src/dollar/interfaces/IDollarMintExcess.sol/interface.IDollarMintExcess.md)
+
+Contract facet for distributing excess Dollars when `mintClaimableDollars()` is called
+
+Excess Dollars are distributed this way:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+## Functions
+### distributeDollars
+
+Distributes excess Dollars:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+```solidity
+function distributeDollars() external override;
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/ManagerFacet.sol/contract.ManagerFacet.md b/packages/contracts/docs/src/src/dollar/facets/ManagerFacet.sol/contract.ManagerFacet.md
new file mode 100644
index 000000000..b12beea2c
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/ManagerFacet.sol/contract.ManagerFacet.md
@@ -0,0 +1,657 @@
+# ManagerFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/ManagerFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Facet for setting protocol parameters
+
+
+## Functions
+### setCreditTokenAddress
+
+Sets Credit token address
+
+
+```solidity
+function setCreditTokenAddress(address _creditTokenAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditTokenAddress`|`address`|Credit token address|
+
+
+### setDollarTokenAddress
+
+Sets Dollar token address
+
+
+```solidity
+function setDollarTokenAddress(address _dollarTokenAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_dollarTokenAddress`|`address`|Dollar token address|
+
+
+### setUbiquistickAddress
+
+Sets UbiquiStick address
+
+
+```solidity
+function setUbiquistickAddress(address _ubiquistickAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_ubiquistickAddress`|`address`|UbiquiStick address|
+
+
+### setCreditNftAddress
+
+Sets Credit NFT address
+
+
+```solidity
+function setCreditNftAddress(address _creditNftAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftAddress`|`address`|Credit NFT address|
+
+
+### setGovernanceTokenAddress
+
+Sets Governance token address
+
+
+```solidity
+function setGovernanceTokenAddress(address _governanceTokenAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_governanceTokenAddress`|`address`|Governance token address|
+
+
+### setSushiSwapPoolAddress
+
+Sets Sushi swap pool address (Dollar-Governance)
+
+
+```solidity
+function setSushiSwapPoolAddress(address _sushiSwapPoolAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_sushiSwapPoolAddress`|`address`|Pool address|
+
+
+### setDollarMintCalculatorAddress
+
+Sets Dollar mint calculator address
+
+
+```solidity
+function setDollarMintCalculatorAddress(address _dollarMintCalculatorAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_dollarMintCalculatorAddress`|`address`|Dollar mint calculator address|
+
+
+### setExcessDollarsDistributor
+
+Sets excess Dollars distributor address
+
+
+```solidity
+function setExcessDollarsDistributor(address creditNftManagerAddress, address dollarMintExcess) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`creditNftManagerAddress`|`address`|Credit NFT manager address|
+|`dollarMintExcess`|`address`|Dollar distributor address|
+
+
+### setMasterChefAddress
+
+Sets MasterChef address
+
+
+```solidity
+function setMasterChefAddress(address _masterChefAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_masterChefAddress`|`address`|MasterChef address|
+
+
+### setFormulasAddress
+
+Sets formulas address
+
+
+```solidity
+function setFormulasAddress(address _formulasAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_formulasAddress`|`address`|Formulas address|
+
+
+### setStakingShareAddress
+
+Sets staking share address
+
+
+```solidity
+function setStakingShareAddress(address _stakingShareAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakingShareAddress`|`address`|Staking share address|
+
+
+### setCurveDollarIncentiveAddress
+
+Sets Curve Dollar incentive address
+
+
+```solidity
+function setCurveDollarIncentiveAddress(address _curveDollarIncentiveAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_curveDollarIncentiveAddress`|`address`|Curve Dollar incentive address|
+
+
+### setStableSwapMetaPoolAddress
+
+Sets Curve Dollar-3CRV MetaPool address
+
+
+```solidity
+function setStableSwapMetaPoolAddress(address _stableSwapMetaPoolAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stableSwapMetaPoolAddress`|`address`|Curve Dollar-3CRV MetaPool address|
+
+
+### setStableSwapPlainPoolAddress
+
+Sets Curve's Dollar-Stablecoin plain pool address
+
+*`_stableSwapPlainPoolAddress` is used to fetch Dollar price in USD*
+
+
+```solidity
+function setStableSwapPlainPoolAddress(address _stableSwapPlainPoolAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stableSwapPlainPoolAddress`|`address`|Curve's Dollar-Stablecoin plain pool address|
+
+
+### setStakingContractAddress
+
+Sets staking contract address
+
+*Staking contract participants deposit Curve LP tokens
+for a certain duration to earn Governance tokens and more Curve LP tokens*
+
+
+```solidity
+function setStakingContractAddress(address _stakingContractAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakingContractAddress`|`address`|Staking contract address|
+
+
+### setBondingCurveAddress
+
+Sets bonding curve address used for UbiquiStick minting
+
+
+```solidity
+function setBondingCurveAddress(address _bondingCurveAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_bondingCurveAddress`|`address`|Bonding curve address|
+
+
+### setBancorFormulaAddress
+
+Sets bancor formula address
+
+*Implied to be used for UbiquiStick minting*
+
+
+```solidity
+function setBancorFormulaAddress(address _bancorFormulaAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_bancorFormulaAddress`|`address`|Bancor formula address|
+
+
+### setTreasuryAddress
+
+Sets treasury address
+
+*Treasury fund is used to maintain the protocol*
+
+
+```solidity
+function setTreasuryAddress(address _treasuryAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_treasuryAddress`|`address`|Treasury address|
+
+
+### setIncentiveToDollar
+
+Sets incentive contract `_incentiveAddress` for `_account` address
+
+
+```solidity
+function setIncentiveToDollar(address _account, address _incentiveAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_account`|`address`|Address for which to set an incentive contract|
+|`_incentiveAddress`|`address`|Incentive contract address|
+
+
+### deployStableSwapPool
+
+Deploys Curve MetaPool [Stablecoin, 3CRV LP]
+
+*From the curve documentation for uncollateralized algorithmic
+stablecoins amplification should be 5-10*
+
+
+```solidity
+function deployStableSwapPool(
+ address _curveFactory,
+ address _crvBasePool,
+ address _crv3PoolTokenAddress,
+ uint256 _amplificationCoefficient,
+ uint256 _fee
+) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_curveFactory`|`address`|Curve MetaPool factory address|
+|`_crvBasePool`|`address`|Base pool address for MetaPool|
+|`_crv3PoolTokenAddress`|`address`|Curve TriPool address|
+|`_amplificationCoefficient`|`uint256`|Amplification coefficient. The smaller it is the closer to a constant product we are.|
+|`_fee`|`uint256`|Trade fee, given as an integer with 1e10 precision|
+
+
+### twapOracleAddress
+
+Returns Curve TWAP oracle address
+
+
+```solidity
+function twapOracleAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Curve TWAP oracle address|
+
+
+### dollarTokenAddress
+
+Returns Dollar token address
+
+
+```solidity
+function dollarTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Dollar token address|
+
+
+### ubiquiStickAddress
+
+Returns UbiquiStick address
+
+
+```solidity
+function ubiquiStickAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|UbiquiStick address|
+
+
+### creditTokenAddress
+
+Returns Credit token address
+
+
+```solidity
+function creditTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Credit token address|
+
+
+### creditNftAddress
+
+Returns Credit NFT address
+
+
+```solidity
+function creditNftAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Credit NFT address|
+
+
+### governanceTokenAddress
+
+Returns Governance token address
+
+
+```solidity
+function governanceTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Governance token address|
+
+
+### sushiSwapPoolAddress
+
+Returns Sushi swap pool address for Dollar-Governance pair
+
+
+```solidity
+function sushiSwapPoolAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Pool address|
+
+
+### creditCalculatorAddress
+
+Returns Credit redemption calculator address
+
+
+```solidity
+function creditCalculatorAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Credit redemption calculator address|
+
+
+### creditNftCalculatorAddress
+
+Returns Credit NFT redemption calculator address
+
+
+```solidity
+function creditNftCalculatorAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Credit NFT redemption calculator address|
+
+
+### dollarMintCalculatorAddress
+
+Returns Dollar mint calculator address
+
+
+```solidity
+function dollarMintCalculatorAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Dollar mint calculator address|
+
+
+### excessDollarsDistributor
+
+Returns Dollar distributor address
+
+
+```solidity
+function excessDollarsDistributor(address _creditNftManagerAddress) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftManagerAddress`|`address`|Credit NFT manager address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Dollar distributor address|
+
+
+### masterChefAddress
+
+Returns MasterChef address
+
+
+```solidity
+function masterChefAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|MasterChef address|
+
+
+### formulasAddress
+
+Returns formulas address
+
+
+```solidity
+function formulasAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Formulas address|
+
+
+### stakingShareAddress
+
+Returns staking share address
+
+
+```solidity
+function stakingShareAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Staking share address|
+
+
+### stableSwapMetaPoolAddress
+
+Returns Curve MetaPool address for Dollar-3CRV LP pair
+
+
+```solidity
+function stableSwapMetaPoolAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Curve MetaPool address|
+
+
+### stableSwapPlainPoolAddress
+
+Returns Curve's plain pool address for Dollar-Stablecoin pair
+
+
+```solidity
+function stableSwapPlainPoolAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Curve's plain pool address for Dollar-Stablecoin pair|
+
+
+### stakingContractAddress
+
+Returns staking address
+
+
+```solidity
+function stakingContractAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Staking address|
+
+
+### bondingCurveAddress
+
+Returns bonding curve address used for UbiquiStick minting
+
+
+```solidity
+function bondingCurveAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Bonding curve address|
+
+
+### bancorFormulaAddress
+
+Returns Bancor formula address
+
+*Implied to be used for UbiquiStick minting*
+
+
+```solidity
+function bancorFormulaAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Bancor formula address|
+
+
+### treasuryAddress
+
+Returns treasury address
+
+
+```solidity
+function treasuryAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Treasury address|
+
+
+### curve3PoolTokenAddress
+
+Returns Curve TriPool 3CRV LP token address
+
+
+```solidity
+function curve3PoolTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Curve TriPool 3CRV LP token address|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/OwnershipFacet.sol/contract.OwnershipFacet.md b/packages/contracts/docs/src/src/dollar/facets/OwnershipFacet.sol/contract.OwnershipFacet.md
new file mode 100644
index 000000000..bab9bcad1
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/OwnershipFacet.sol/contract.OwnershipFacet.md
@@ -0,0 +1,42 @@
+# OwnershipFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/OwnershipFacet.sol)
+
+**Inherits:**
+[IERC173](/src/dollar/interfaces/IERC173.sol/interface.IERC173.md)
+
+Used for managing contract's owner
+
+
+## Functions
+### transferOwnership
+
+Sets contract's owner to a new address
+
+*Set _newOwner to address(0) to renounce any ownership*
+
+
+```solidity
+function transferOwnership(address _newOwner) external override;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_newOwner`|`address`|The address of the new owner of the contract|
+
+
+### owner
+
+Returns owner's address
+
+
+```solidity
+function owner() external view override returns (address owner_);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`owner_`|`address`|Owner address|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/README.md b/packages/contracts/docs/src/src/dollar/facets/README.md
new file mode 100644
index 000000000..a1a9b88c7
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/README.md
@@ -0,0 +1,22 @@
+
+
+# Contents
+- [AccessControlFacet](AccessControlFacet.sol/contract.AccessControlFacet.md)
+- [BondingCurveFacet](BondingCurveFacet.sol/contract.BondingCurveFacet.md)
+- [ChefFacet](ChefFacet.sol/contract.ChefFacet.md)
+- [CollectableDustFacet](CollectableDustFacet.sol/contract.CollectableDustFacet.md)
+- [CreditClockFacet](CreditClockFacet.sol/contract.CreditClockFacet.md)
+- [CreditNftManagerFacet](CreditNftManagerFacet.sol/contract.CreditNftManagerFacet.md)
+- [CreditNftRedemptionCalculatorFacet](CreditNftRedemptionCalculatorFacet.sol/contract.CreditNftRedemptionCalculatorFacet.md)
+- [CreditRedemptionCalculatorFacet](CreditRedemptionCalculatorFacet.sol/contract.CreditRedemptionCalculatorFacet.md)
+- [CurveDollarIncentiveFacet](CurveDollarIncentiveFacet.sol/contract.CurveDollarIncentiveFacet.md)
+- [DiamondCutFacet](DiamondCutFacet.sol/contract.DiamondCutFacet.md)
+- [DiamondLoupeFacet](DiamondLoupeFacet.sol/contract.DiamondLoupeFacet.md)
+- [DirectGovernanceFarmerFacet](DirectGovernanceFarmerFacet.sol/contract.DirectGovernanceFarmerFacet.md)
+- [DollarMintCalculatorFacet](DollarMintCalculatorFacet.sol/contract.DollarMintCalculatorFacet.md)
+- [DollarMintExcessFacet](DollarMintExcessFacet.sol/contract.DollarMintExcessFacet.md)
+- [ManagerFacet](ManagerFacet.sol/contract.ManagerFacet.md)
+- [OwnershipFacet](OwnershipFacet.sol/contract.OwnershipFacet.md)
+- [StakingFacet](StakingFacet.sol/contract.StakingFacet.md)
+- [StakingFormulasFacet](StakingFormulasFacet.sol/contract.StakingFormulasFacet.md)
+- [UbiquityPoolFacet](UbiquityPoolFacet.sol/contract.UbiquityPoolFacet.md)
diff --git a/packages/contracts/docs/src/src/dollar/facets/StakingFacet.sol/contract.StakingFacet.md b/packages/contracts/docs/src/src/dollar/facets/StakingFacet.sol/contract.StakingFacet.md
new file mode 100644
index 000000000..0b0473e2f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/StakingFacet.sol/contract.StakingFacet.md
@@ -0,0 +1,227 @@
+# StakingFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/StakingFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md), [IStaking](/src/dollar/interfaces/IStaking.sol/interface.IStaking.md)
+
+Staking facet
+
+
+## Functions
+### dollarPriceReset
+
+Removes Ubiquity Dollar unilaterally from the curve LP share sitting inside
+the staking contract and sends the Ubiquity Dollar received to the treasury. This will
+have the immediate effect of pushing the Ubiquity Dollar price HIGHER
+
+It will remove one coin only from the curve LP share sitting in the staking contract
+
+
+```solidity
+function dollarPriceReset(uint256 amount) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of LP token to be removed for Ubiquity Dollar|
+
+
+### crvPriceReset
+
+Remove 3CRV unilaterally from the curve LP share sitting inside
+the staking contract and send the 3CRV received to the treasury. This will
+have the immediate effect of pushing the Ubiquity Dollar price LOWER.
+
+It will remove one coin only from the curve LP share sitting in the staking contract
+
+
+```solidity
+function crvPriceReset(uint256 amount) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of LP token to be removed for 3CRV tokens|
+
+
+### setStakingDiscountMultiplier
+
+Sets staking discount multiplier
+
+
+```solidity
+function setStakingDiscountMultiplier(uint256 _stakingDiscountMultiplier) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakingDiscountMultiplier`|`uint256`|New staking discount multiplier|
+
+
+### stakingDiscountMultiplier
+
+Returns staking discount multiplier
+
+
+```solidity
+function stakingDiscountMultiplier() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Staking discount multiplier|
+
+
+### blockCountInAWeek
+
+Returns number of blocks in a week
+
+
+```solidity
+function blockCountInAWeek() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Number of blocks in a week|
+
+
+### setBlockCountInAWeek
+
+Sets number of blocks in a week
+
+
+```solidity
+function setBlockCountInAWeek(uint256 _blockCountInAWeek) external onlyStakingManager;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_blockCountInAWeek`|`uint256`|Number of blocks in a week|
+
+
+### deposit
+
+Deposits UbiquityDollar-3CRV LP tokens for a duration to receive staking shares
+
+Weeks act as a multiplier for the amount of staking shares to be received
+
+
+```solidity
+function deposit(uint256 _lpsAmount, uint256 _weeks) external whenNotPaused returns (uint256 _id);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_lpsAmount`|`uint256`|Amount of LP tokens to send|
+|`_weeks`|`uint256`|Number of weeks during which LP tokens will be held|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+
+### addLiquidity
+
+Adds an amount of UbiquityDollar-3CRV LP tokens
+
+Staking shares are ERC1155 (aka NFT) because they have an expiration date
+
+
+```solidity
+function addLiquidity(uint256 _amount, uint256 _id, uint256 _weeks) external whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of LP token to deposit|
+|`_id`|`uint256`|Staking share id|
+|`_weeks`|`uint256`|Number of weeks during which LP tokens will be held|
+
+
+### removeLiquidity
+
+Removes an amount of UbiquityDollar-3CRV LP tokens
+
+Staking shares are ERC1155 (aka NFT) because they have an expiration date
+
+
+```solidity
+function removeLiquidity(uint256 _amount, uint256 _id) external whenNotPaused;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of LP token deposited when `_id` was created to be withdrawn|
+|`_id`|`uint256`|Staking share id|
+
+
+### pendingLpRewards
+
+View function to see pending LP rewards on frontend
+
+
+```solidity
+function pendingLpRewards(uint256 _id) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### lpRewardForShares
+
+Returns the amount of LP token rewards an amount of shares entitled
+
+
+```solidity
+function lpRewardForShares(uint256 amount, uint256 lpRewardDebt) external view returns (uint256 pendingLpReward);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of staking shares|
+|`lpRewardDebt`|`uint256`|Amount of LP rewards that have already been distributed|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`pendingLpReward`|`uint256`|Amount of pending LP rewards|
+
+
+### currentShareValue
+
+Returns current share price
+
+
+```solidity
+function currentShareValue() external view returns (uint256 priceShare);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`priceShare`|`uint256`|Share price|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/StakingFormulasFacet.sol/contract.StakingFormulasFacet.md b/packages/contracts/docs/src/src/dollar/facets/StakingFormulasFacet.sol/contract.StakingFormulasFacet.md
new file mode 100644
index 000000000..c94a3a6a5
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/StakingFormulasFacet.sol/contract.StakingFormulasFacet.md
@@ -0,0 +1,158 @@
+# StakingFormulasFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/StakingFormulasFacet.sol)
+
+**Inherits:**
+[IUbiquityFormulas](/src/dollar/interfaces/IUbiquityFormulas.sol/interface.IUbiquityFormulas.md)
+
+Contract facet staking formulas
+
+
+## Functions
+### sharesForLP
+
+Formula of governance rights corresponding to a staking shares LP amount
+
+Used on removing liquidity from staking
+
+`shares = (stake.shares * _amount) / stake.lpAmount`
+
+
+```solidity
+function sharesForLP(StakingShare.Stake memory _stake, uint256[2] memory _shareInfo, uint256 _amount)
+ external
+ pure
+ returns (uint256 _uLP);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_uLP`|`uint256`|Amount of shares|
+
+
+### lpRewardsRemoveLiquidityNormalization
+
+Formula may add a decreasing rewards if locking end is near when removing liquidity
+
+`rewards = _amount`
+
+
+```solidity
+function lpRewardsRemoveLiquidityNormalization(
+ StakingShare.Stake memory _stake,
+ uint256[2] memory _shareInfo,
+ uint256 _amount
+) external pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### lpRewardsAddLiquidityNormalization
+
+Formula may add a decreasing rewards if locking end is near when adding liquidity
+
+`rewards = _amount`
+
+
+```solidity
+function lpRewardsAddLiquidityNormalization(
+ StakingShare.Stake memory _stake,
+ uint256[2] memory _shareInfo,
+ uint256 _amount
+) external pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### correctedAmountToWithdraw
+
+Formula to calculate the corrected amount to withdraw based on the proportion of
+LP deposited against actual LP tokens in the staking contract
+
+`corrected_amount = amount * (stakingLpBalance / totalLpDeposited)`
+
+If there is more or the same amount of LP than deposited then do nothing
+
+
+```solidity
+function correctedAmountToWithdraw(uint256 _totalLpDeposited, uint256 _stakingLpBalance, uint256 _amount)
+ external
+ pure
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_totalLpDeposited`|`uint256`|Total amount of LP deposited by users|
+|`_stakingLpBalance`|`uint256`|Actual staking contract LP tokens balance minus LP rewards|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP tokens to redeem|
+
+
+### durationMultiply
+
+Formula duration multiply
+
+`_shares = (1 + _multiplier * _weeks^3/2) * _uLP`
+
+`D32 = D^3/2`
+
+`S = m * D32 * A + A`
+
+
+```solidity
+function durationMultiply(uint256 _uLP, uint256 _weeks, uint256 _multiplier) external pure returns (uint256 _shares);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_uLP`|`uint256`|Amount of LP tokens|
+|`_weeks`|`uint256`|Minimum duration of staking period|
+|`_multiplier`|`uint256`|Staking discount multiplier = 0.0001|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_shares`|`uint256`|Amount of shares|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/TWAPOracleDollar3poolFacet.sol/contract.TWAPOracleDollar3poolFacet.md b/packages/contracts/docs/src/src/dollar/facets/TWAPOracleDollar3poolFacet.sol/contract.TWAPOracleDollar3poolFacet.md
new file mode 100644
index 000000000..5c86ffc02
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/TWAPOracleDollar3poolFacet.sol/contract.TWAPOracleDollar3poolFacet.md
@@ -0,0 +1,66 @@
+# TWAPOracleDollar3poolFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/4924ab0035521e70625d704791f5b260a4713327/src/dollar/facets/TWAPOracleDollar3poolFacet.sol)
+
+**Inherits:**
+[Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md), [ITWAPOracleDollar3pool](/src/dollar/interfaces/ITWAPOracleDollar3pool.sol/interface.ITWAPOracleDollar3pool.md)
+
+Facet used for Curve TWAP oracle in the Dollar MetaPool
+
+
+## Functions
+### setPool
+
+Sets Curve MetaPool to be used as a TWAP oracle
+
+
+```solidity
+function setPool(address _pool, address _curve3CRVToken1) external onlyOwner;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Curve MetaPool address, pool for 2 tokens [Dollar, 3CRV LP]|
+|`_curve3CRVToken1`|`address`|Curve 3Pool LP token address|
+
+
+### update
+
+Updates the following state variables to the latest values from MetaPool:
+- Dollar / 3CRV LP quote
+- 3CRV LP / Dollar quote
+- cumulative prices
+- update timestamp
+
+
+```solidity
+function update() external;
+```
+
+### consult
+
+Returns the quote for the provided `token` address
+
+If the `token` param is Dollar then returns 3CRV LP / Dollar quote
+
+If the `token` param is 3CRV LP then returns Dollar / 3CRV LP quote
+
+*This will always return 0 before update has been called successfully for the first time*
+
+
+```solidity
+function consult(address token) external view returns (uint256 amountOut);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amountOut`|`uint256`|Token price, Dollar / 3CRV LP or 3CRV LP / Dollar quote|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/facets/UbiquityPoolFacet.sol/contract.UbiquityPoolFacet.md b/packages/contracts/docs/src/src/dollar/facets/UbiquityPoolFacet.sol/contract.UbiquityPoolFacet.md
new file mode 100644
index 000000000..f3099a063
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/facets/UbiquityPoolFacet.sol/contract.UbiquityPoolFacet.md
@@ -0,0 +1,619 @@
+# UbiquityPoolFacet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/facets/UbiquityPoolFacet.sol)
+
+**Inherits:**
+[IUbiquityPool](/src/dollar/interfaces/IUbiquityPool.sol/interface.IUbiquityPool.md), [Modifiers](/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md)
+
+Ubiquity pool facet
+
+Allows users to:
+- deposit collateral in exchange for Ubiquity Dollars
+- redeem Ubiquity Dollars in exchange for the earlier provided collateral
+
+
+## Functions
+### allCollaterals
+
+Returns all collateral addresses
+
+
+```solidity
+function allCollaterals() external view returns (address[] memory);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address[]`|All collateral addresses|
+
+
+### collateralInformation
+
+Returns collateral information
+
+
+```solidity
+function collateralInformation(address collateralAddress)
+ external
+ view
+ returns (LibUbiquityPool.CollateralInformation memory returnData);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAddress`|`address`|Address of the collateral token|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`returnData`|`LibUbiquityPool.CollateralInformation`|Collateral info|
+
+
+### collateralRatio
+
+Returns current collateral ratio
+
+
+```solidity
+function collateralRatio() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Collateral ratio|
+
+
+### collateralUsdBalance
+
+Returns USD value of all collateral tokens held in the pool, in E18
+
+
+```solidity
+function collateralUsdBalance() external view returns (uint256 balanceTally);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`balanceTally`|`uint256`|USD value of all collateral tokens|
+
+
+### ethUsdPriceFeedInformation
+
+Returns chainlink price feed information for ETH/USD pair
+
+
+```solidity
+function ethUsdPriceFeedInformation() external view returns (address, uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Price feed address and staleness threshold in seconds|
+|``|`uint256`||
+
+
+### freeCollateralBalance
+
+Returns free collateral balance (i.e. that can be borrowed by AMO minters)
+
+
+```solidity
+function freeCollateralBalance(uint256 collateralIndex) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|collateral token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of free collateral|
+
+
+### getDollarInCollateral
+
+Returns Dollar value in collateral tokens
+
+
+```solidity
+function getDollarInCollateral(uint256 collateralIndex, uint256 dollarAmount) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|collateral token index|
+|`dollarAmount`|`uint256`|Amount of Dollars|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Value in collateral tokens|
+
+
+### getDollarPriceUsd
+
+Returns Ubiquity Dollar token USD price (1e6 precision) from Curve Metapool (Ubiquity Dollar, Curve Tri-Pool LP)
+
+
+```solidity
+function getDollarPriceUsd() external view returns (uint256 dollarPriceUsd);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarPriceUsd`|`uint256`|USD price of Ubiquity Dollar|
+
+
+### getGovernancePriceUsd
+
+Returns Governance token price in USD (6 decimals precision)
+
+*How it works:
+1. Fetch ETH/USD price from chainlink oracle
+2. Fetch Governance/ETH price from Curve's oracle
+3. Calculate Governance token price in USD*
+
+
+```solidity
+function getGovernancePriceUsd() external view returns (uint256 governancePriceUsd);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`governancePriceUsd`|`uint256`|Governance token price in USD|
+
+
+### getRedeemCollateralBalance
+
+Returns user's balance available for redemption
+
+
+```solidity
+function getRedeemCollateralBalance(address userAddress, uint256 collateralIndex) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`userAddress`|`address`|User address|
+|`collateralIndex`|`uint256`|Collateral token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|User's balance available for redemption|
+
+
+### getRedeemGovernanceBalance
+
+Returns user's Governance tokens balance available for redemption
+
+
+```solidity
+function getRedeemGovernanceBalance(address userAddress) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`userAddress`|`address`|User address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|User's Governance tokens balance available for redemption|
+
+
+### governanceEthPoolAddress
+
+Returns pool address for Governance/ETH pair
+
+
+```solidity
+function governanceEthPoolAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Pool address|
+
+
+### stableUsdPriceFeedInformation
+
+Returns chainlink price feed information for stable/USD pair
+
+*Here stable coin refers to the 1st coin in the Curve's stable/Dollar plain pool*
+
+
+```solidity
+function stableUsdPriceFeedInformation() external view returns (address, uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Price feed address and staleness threshold in seconds|
+|``|`uint256`||
+
+
+### mintDollar
+
+Mints Dollars in exchange for collateral tokens
+
+
+```solidity
+function mintDollar(
+ uint256 collateralIndex,
+ uint256 dollarAmount,
+ uint256 dollarOutMin,
+ uint256 maxCollateralIn,
+ uint256 maxGovernanceIn,
+ bool isOneToOne
+) external nonReentrant returns (uint256 totalDollarMint, uint256 collateralNeeded, uint256 governanceNeeded);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`dollarAmount`|`uint256`|Amount of dollars to mint|
+|`dollarOutMin`|`uint256`|Min amount of dollars to mint (slippage protection)|
+|`maxCollateralIn`|`uint256`|Max amount of collateral to send (slippage protection)|
+|`maxGovernanceIn`|`uint256`|Max amount of Governance tokens to send (slippage protection)|
+|`isOneToOne`|`bool`|Force providing only collateral without Governance tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`totalDollarMint`|`uint256`|Amount of Dollars minted|
+|`collateralNeeded`|`uint256`|Amount of collateral sent to the pool|
+|`governanceNeeded`|`uint256`|Amount of Governance tokens burnt from sender|
+
+
+### redeemDollar
+
+Burns redeemable Ubiquity Dollars and sends back 1 USD of collateral token for every 1 Ubiquity Dollar burned
+
+*Redeem process is split in two steps:*
+
+
+```solidity
+function redeemDollar(uint256 collateralIndex, uint256 dollarAmount, uint256 governanceOutMin, uint256 collateralOutMin)
+ external
+ nonReentrant
+ returns (uint256 collateralOut, uint256 governanceOut);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index being withdrawn|
+|`dollarAmount`|`uint256`|Amount of Ubiquity Dollars being burned|
+|`governanceOutMin`|`uint256`|Minimum amount of Governance tokens that'll be withdrawn, used to set acceptable slippage|
+|`collateralOutMin`|`uint256`|Minimum amount of collateral tokens that'll be withdrawn, used to set acceptable slippage|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralOut`|`uint256`|Amount of collateral tokens ready for redemption|
+|`governanceOut`|`uint256`||
+
+
+### collectRedemption
+
+Used to collect collateral tokens after redeeming/burning Ubiquity Dollars
+
+*Redeem process is split in two steps:*
+
+
+```solidity
+function collectRedemption(uint256 collateralIndex)
+ external
+ nonReentrant
+ returns (uint256 governanceAmount, uint256 collateralAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index being collected|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`governanceAmount`|`uint256`|Amount of Governance tokens redeemed|
+|`collateralAmount`|`uint256`|Amount of collateral tokens redeemed|
+
+
+### updateChainLinkCollateralPrice
+
+Updates collateral token price in USD from ChainLink price feed
+
+
+```solidity
+function updateChainLinkCollateralPrice(uint256 collateralIndex) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+
+
+### amoMinterBorrow
+
+Allows AMO minters to borrow collateral to make yield in external
+protocols like Compound, Curve, erc...
+
+*Bypasses the gassy mint->redeem cycle for AMOs to borrow collateral*
+
+
+```solidity
+function amoMinterBorrow(uint256 collateralAmount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAmount`|`uint256`|Amount of collateral to borrow|
+
+
+### addAmoMinter
+
+Adds a new AMO minter
+
+
+```solidity
+function addAmoMinter(address amoMinterAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amoMinterAddress`|`address`|AMO minter address|
+
+
+### addCollateralToken
+
+Adds a new collateral token
+
+
+```solidity
+function addCollateralToken(address collateralAddress, address chainLinkPriceFeedAddress, uint256 poolCeiling)
+ external
+ onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAddress`|`address`|Collateral token address|
+|`chainLinkPriceFeedAddress`|`address`|Chainlink's price feed address|
+|`poolCeiling`|`uint256`|Max amount of available tokens for collateral|
+
+
+### removeAmoMinter
+
+Removes AMO minter
+
+
+```solidity
+function removeAmoMinter(address amoMinterAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amoMinterAddress`|`address`|AMO minter address to remove|
+
+
+### setCollateralChainLinkPriceFeed
+
+Sets collateral ChainLink price feed params
+
+
+```solidity
+function setCollateralChainLinkPriceFeed(
+ address collateralAddress,
+ address chainLinkPriceFeedAddress,
+ uint256 stalenessThreshold
+) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAddress`|`address`|Collateral token address|
+|`chainLinkPriceFeedAddress`|`address`|ChainLink price feed address|
+|`stalenessThreshold`|`uint256`|Threshold in seconds when chainlink answer should be considered stale|
+
+
+### setCollateralRatio
+
+Sets collateral ratio
+
+*How much collateral/governance tokens user should provide/get to mint/redeem Dollar tokens, 1e6 precision*
+
+
+```solidity
+function setCollateralRatio(uint256 newCollateralRatio) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newCollateralRatio`|`uint256`|New collateral ratio|
+
+
+### setEthUsdChainLinkPriceFeed
+
+Sets chainlink params for ETH/USD price feed
+
+
+```solidity
+function setEthUsdChainLinkPriceFeed(address newPriceFeedAddress, uint256 newStalenessThreshold) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newPriceFeedAddress`|`address`|New chainlink price feed address for ETH/USD pair|
+|`newStalenessThreshold`|`uint256`|New threshold in seconds when chainlink's ETH/USD price feed answer should be considered stale|
+
+
+### setFees
+
+Sets mint and redeem fees, 1_000_000 = 100%
+
+
+```solidity
+function setFees(uint256 collateralIndex, uint256 newMintFee, uint256 newRedeemFee) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`newMintFee`|`uint256`|New mint fee|
+|`newRedeemFee`|`uint256`|New redeem fee|
+
+
+### setGovernanceEthPoolAddress
+
+Sets a new pool address for Governance/ETH pair
+
+*Based on Curve's CurveTwocryptoOptimized contract. Used for fetching Governance token USD price.
+How it works:
+1. Fetch Governance/ETH price from CurveTwocryptoOptimized's built-in oracle
+2. Fetch ETH/USD price from chainlink feed
+3. Calculate Governance token price in USD*
+
+
+```solidity
+function setGovernanceEthPoolAddress(address newGovernanceEthPoolAddress) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newGovernanceEthPoolAddress`|`address`|New pool address for Governance/ETH pair|
+
+
+### setPoolCeiling
+
+Sets max amount of collateral for a particular collateral token
+
+
+```solidity
+function setPoolCeiling(uint256 collateralIndex, uint256 newCeiling) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`newCeiling`|`uint256`|Max amount of collateral|
+
+
+### setPriceThresholds
+
+Sets mint and redeem price thresholds, 1_000_000 = $1.00
+
+
+```solidity
+function setPriceThresholds(uint256 newMintPriceThreshold, uint256 newRedeemPriceThreshold) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newMintPriceThreshold`|`uint256`|New mint price threshold|
+|`newRedeemPriceThreshold`|`uint256`|New redeem price threshold|
+
+
+### setRedemptionDelayBlocks
+
+Sets a redemption delay in blocks
+
+*Redeeming is split in 2 actions:*
+
+
+```solidity
+function setRedemptionDelayBlocks(uint256 newRedemptionDelayBlocks) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newRedemptionDelayBlocks`|`uint256`|Redemption delay in blocks|
+
+
+### setStableUsdChainLinkPriceFeed
+
+Sets chainlink params for stable/USD price feed
+
+*Here stable coin refers to the 1st coin in the Curve's stable/Dollar plain pool*
+
+
+```solidity
+function setStableUsdChainLinkPriceFeed(address newPriceFeedAddress, uint256 newStalenessThreshold)
+ external
+ onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newPriceFeedAddress`|`address`|New chainlink price feed address for stable/USD pair|
+|`newStalenessThreshold`|`uint256`|New threshold in seconds when chainlink's stable/USD price feed answer should be considered stale|
+
+
+### toggleCollateral
+
+Toggles (i.e. enables/disables) a particular collateral token
+
+
+```solidity
+function toggleCollateral(uint256 collateralIndex) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+
+
+### toggleMintRedeemBorrow
+
+Toggles pause for mint/redeem/borrow methods
+
+
+```solidity
+function toggleMintRedeemBorrow(uint256 collateralIndex, uint8 toggleIndex) external onlyAdmin;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`toggleIndex`|`uint8`|Method index. 0 - toggle mint pause, 1 - toggle redeem pause, 2 - toggle borrow by AMO pause|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IAccessControl.sol/interface.IAccessControl.md b/packages/contracts/docs/src/src/dollar/interfaces/IAccessControl.sol/interface.IAccessControl.md
new file mode 100644
index 000000000..c55798db7
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IAccessControl.sol/interface.IAccessControl.md
@@ -0,0 +1,113 @@
+# IAccessControl
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IAccessControl.sol)
+
+Access contol interface
+
+
+## Functions
+### hasRole
+
+Checks whether role is assigned to account
+
+
+```solidity
+function hasRole(bytes32 role, address account) external view returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to check|
+|`account`|`address`|Address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether role is assigned to account|
+
+
+### getRoleAdmin
+
+Returns admin role for a given role
+
+
+```solidity
+function getRoleAdmin(bytes32 role) external view returns (bytes32);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Admin role for a provided role|
+
+
+### setRoleAdmin
+
+Sets admin role for a given role
+
+
+```solidity
+function setRoleAdmin(bytes32 role, bytes32 adminRole) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to set|
+|`adminRole`|`bytes32`|Admin role to set for a provided role|
+
+
+### grantRole
+
+Assigns role to a given account
+
+
+```solidity
+function grantRole(bytes32 role, address account) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to assign|
+|`account`|`address`|Recipient address of role assignment|
+
+
+### revokeRole
+
+Unassign role from a given account
+
+
+```solidity
+function revokeRole(bytes32 role, address account) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to unassign|
+|`account`|`address`|Address from which the provided role should be unassigned|
+
+
+### renounceRole
+
+Renounce role
+
+
+```solidity
+function renounceRole(bytes32 role) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to renounce|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IBondingCurve.sol/interface.IBondingCurve.md b/packages/contracts/docs/src/src/dollar/interfaces/IBondingCurve.sol/interface.IBondingCurve.md
new file mode 100644
index 000000000..685429b32
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IBondingCurve.sol/interface.IBondingCurve.md
@@ -0,0 +1,103 @@
+# IBondingCurve
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IBondingCurve.sol)
+
+Interface based on Bancor formula
+
+Inspired from Bancor protocol https://github.com/bancorprotocol/contracts
+
+Used on UbiquiStick NFT minting
+
+
+## Functions
+### setParams
+
+Sets bonding curve params
+
+
+```solidity
+function setParams(uint32 _connectorWeight, uint256 _baseY) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_connectorWeight`|`uint32`|Connector weight|
+|`_baseY`|`uint256`|Base Y|
+
+
+### connectorWeight
+
+Returns `connectorWeight` value
+
+
+```solidity
+function connectorWeight() external returns (uint32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint32`|Connector weight value|
+
+
+### baseY
+
+Returns `baseY` value
+
+
+```solidity
+function baseY() external returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Base Y value|
+
+
+### poolBalance
+
+Returns total balance of deposited collateral
+
+
+```solidity
+function poolBalance() external returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of deposited collateral|
+
+
+### deposit
+
+Deposits collateral tokens in exchange for UbiquiStick NFT
+
+
+```solidity
+function deposit(uint256 _collateralDeposited, address _recipient) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_collateralDeposited`|`uint256`|Amount of collateral|
+|`_recipient`|`address`|Address to receive the NFT|
+
+
+### withdraw
+
+Withdraws collateral tokens to treasury
+
+
+```solidity
+function withdraw(uint256 _amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of collateral tokens to withdraw|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICreditNft.sol/interface.ICreditNft.md b/packages/contracts/docs/src/src/dollar/interfaces/ICreditNft.sol/interface.ICreditNft.md
new file mode 100644
index 000000000..639de5b0f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICreditNft.sol/interface.ICreditNft.md
@@ -0,0 +1,66 @@
+# ICreditNft
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICreditNft.sol)
+
+**Inherits:**
+IERC1155Upgradeable
+
+CreditNft interface
+
+
+## Functions
+### updateTotalDebt
+
+Updates debt according to current block number
+
+Invalidates expired CreditNfts
+
+*Should be called prior to any state changing functions*
+
+
+```solidity
+function updateTotalDebt() external;
+```
+
+### burnCreditNft
+
+Burns an `amount` of CreditNfts expiring at `expiryBlockNumber` from `creditNftOwner` balance
+
+
+```solidity
+function burnCreditNft(address creditNftOwner, uint256 amount, uint256 expiryBlockNumber) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`creditNftOwner`|`address`|Owner of those CreditNfts|
+|`amount`|`uint256`|Amount of tokens to burn|
+|`expiryBlockNumber`|`uint256`|Expiration block number of the CreditNfts to burn|
+
+
+### mintCreditNft
+
+Mint an `amount` of CreditNfts expiring at `expiryBlockNumber` for a certain `recipient`
+
+
+```solidity
+function mintCreditNft(address recipient, uint256 amount, uint256 expiryBlockNumber) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`recipient`|`address`|Address where to mint tokens|
+|`amount`|`uint256`|Amount of tokens to mint|
+|`expiryBlockNumber`|`uint256`|Expiration block number of the CreditNfts to mint|
+
+
+### getTotalOutstandingDebt
+
+Returns outstanding debt by fetching current tally and removing any expired debt
+
+
+```solidity
+function getTotalOutstandingDebt() external view returns (uint256);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICreditNftManager.sol/interface.ICreditNftManager.md b/packages/contracts/docs/src/src/dollar/interfaces/ICreditNftManager.sol/interface.ICreditNftManager.md
new file mode 100644
index 000000000..fec6f632a
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICreditNftManager.sol/interface.ICreditNftManager.md
@@ -0,0 +1,63 @@
+# ICreditNftManager
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICreditNftManager.sol)
+
+**Inherits:**
+IERC1155Receiver
+
+Interface for basic credit issuing and redemption mechanism for Credit NFT and Credit holders
+
+Allows users to burn their Dollars in exchange for Credit NFTs or Credits redeemable in the future
+
+Allows users to:
+- redeem individual Credit NFT or batch redeem Credit NFT on a first-come first-serve basis
+- redeem Credits for Dollars
+
+*Implements `IERC1155Receiver` so that it can deal with redemptions*
+
+
+## Functions
+### redeemCreditNft
+
+Burns Credit NFTs for Dollars when Dollar price > 1$
+
+
+```solidity
+function redeemCreditNft(uint256 id, uint256 amount) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT expiry block number|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of unredeemed Credit NFTs|
+
+
+### exchangeDollarsForCreditNft
+
+Burns Dollars in exchange for Credit NFTs
+
+Should only be called when Dollar price < 1$
+
+
+```solidity
+function exchangeDollarsForCreditNft(uint256 amount) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to exchange for Credit NFTs|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Expiry block number when Credit NFTs can no longer be redeemed for Dollars|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICreditNftRedemptionCalculator.sol/interface.ICreditNftRedemptionCalculator.md b/packages/contracts/docs/src/src/dollar/interfaces/ICreditNftRedemptionCalculator.sol/interface.ICreditNftRedemptionCalculator.md
new file mode 100644
index 000000000..76cc41a26
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICreditNftRedemptionCalculator.sol/interface.ICreditNftRedemptionCalculator.md
@@ -0,0 +1,46 @@
+# ICreditNftRedemptionCalculator
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICreditNftRedemptionCalculator.sol)
+
+Contract interface for calculating amount of Credit NFTs to mint on Dollars burn
+
+Users can burn their Dollars in exchange for Credit NFTs which are minted with a premium.
+Premium is calculated with the following formula: `1 / ((1 - R) ^ 2) - 1` where `R` represents Credit NFT
+total oustanding debt divived by Dollar total supply. When users burn Dollars and mint Credit NFTs then
+total oustading debt of Credit NFT is increased. On the contrary, when Credit NFTs are burned then
+Credit NFT total oustanding debt is decreased.
+
+Example:
+1. Dollar total supply: 10_000, Credit NFT total oustanding debt: 100, User burns: 200 Dollars
+2. When user burns 200 Dollars then `200 + 200 * (1 / ((1 - (100 / 10_000)) ^ 2) - 1) = ~204.06` Credit NFTs are minted
+
+Example:
+1. Dollar total supply: 10_000, Credit NFT total oustanding debt: 9_000, User burns: 200 Dollars
+2. When user burns 200 Dollars then `200 + 200 * (1 / ((1 - (9_000 / 10_000)) ^ 2) - 1) = 20_000` Credit NFTs are minted
+
+So the more Credit NFT oustanding debt (i.e. Credit NFT total supply) the more premium applied for minting Credit NFTs
+
+*1 Credit NFT = 1 whole Ubiquity Dollar, not 1 wei*
+
+
+## Functions
+### getCreditNftAmount
+
+Returns Credit NFT amount minted for `dollarsToBurn` amount of Dollars to burn
+
+
+```solidity
+function getCreditNftAmount(uint256 dollarsToBurn) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarsToBurn`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credit NFTs to mint|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICreditRedemptionCalculator.sol/interface.ICreditRedemptionCalculator.md b/packages/contracts/docs/src/src/dollar/interfaces/ICreditRedemptionCalculator.sol/interface.ICreditRedemptionCalculator.md
new file mode 100644
index 000000000..65d48ff01
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICreditRedemptionCalculator.sol/interface.ICreditRedemptionCalculator.md
@@ -0,0 +1,56 @@
+# ICreditRedemptionCalculator
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICreditRedemptionCalculator.sol)
+
+Contract interface for calculating amount of Credits to mint on Dollars burn
+
+Users are allowed to burn Dollars in exchange for Credit tokens. When a new debt
+cycle starts (i.e. Dollar price < 1$) then users can burn Dollars for Credits via this
+formula: `y = x * ((BlockDebtStart / BlockBurn) ^ p)` where:
+- `y`: amount of Credits to mint
+- `x`: amount of Dollars to burn
+- `BlockDebtStart`: block number when debt cycle started (i.e. block number when Dollar price became < 1$)
+- `BlockBurn`: block number when Dollar burn operation is performed
+- `p`: DAO controlled variable. The greater the `p` param the harsher the decrease rate of Dollars to mint.
+
+Example:
+1. Block debt cycle start: 190, block burn: 200, p: 1, Dollars to burn: 300
+2. Credits to mint: `300 * ((190/200)^1) = 285`
+
+Example:
+1. Block debt cycle start: 100, block burn: 200, p: 1, Dollars to burn: 300
+2. Credits to mint: `300 * ((100/200)^1) = 150`
+
+Example:
+1. Block debt cycle start: 190, block burn: 200, p: 2, Dollars to burn: 300
+2. Credits to mint: `300 * ((190/200)^1) = 270`
+
+Example:
+1. Block debt cycle start: 100, block burn: 200, p: 2, Dollars to burn: 300
+2. Credits to mint: `300 * ((100/200)^1) = 75`
+
+It is more profitable to burn Dollars for Credits at the beginning of the debt cycle.
+
+
+## Functions
+### getCreditAmount
+
+Returns amount of Credits to mint for `dollarsToBurn` amount of Dollars to burn
+
+
+```solidity
+function getCreditAmount(uint256 dollarsToBurn, uint256 blockHeightDebt) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarsToBurn`|`uint256`|Amount of Dollars to burn|
+|`blockHeightDebt`|`uint256`|Block number when the latest debt cycle started (i.e. when Dollar price became < 1$)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits to mint|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICurveFactory.sol/interface.ICurveFactory.md b/packages/contracts/docs/src/src/dollar/interfaces/ICurveFactory.sol/interface.ICurveFactory.md
new file mode 100644
index 000000000..82c646da0
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICurveFactory.sol/interface.ICurveFactory.md
@@ -0,0 +1,557 @@
+# ICurveFactory
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICurveFactory.sol)
+
+Curve Factory interface
+
+Permissionless pool deployer and registry
+
+
+## Functions
+### find_pool_for_coins
+
+Finds an available pool for exchanging two coins
+
+
+```solidity
+function find_pool_for_coins(address _from, address _to) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_from`|`address`|Address of coin to be sent|
+|`_to`|`address`|Address of coin to be received|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Pool address|
+
+
+### find_pool_for_coins
+
+Finds an available pool for exchanging two coins
+
+
+```solidity
+function find_pool_for_coins(address _from, address _to, uint256 i) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_from`|`address`|Address of coin to be sent|
+|`_to`|`address`|Address of coin to be received|
+|`i`|`uint256`|Index value. When multiple pools are available this value is used to return the n'th address.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Pool address|
+
+
+### get_n_coins
+
+Get the number of coins in a pool
+
+
+```solidity
+function get_n_coins(address _pool) external view returns (uint256, uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Number of coins|
+|``|`uint256`||
+
+
+### get_coins
+
+Get the coins within a pool
+
+
+```solidity
+function get_coins(address _pool) external view returns (address[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address[2]`|List of coin addresses|
+
+
+### get_underlying_coins
+
+Get the underlying coins within a pool
+
+*Reverts if a pool does not exist or is not a metapool*
+
+
+```solidity
+function get_underlying_coins(address _pool) external view returns (address[8] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address[8]`|List of coin addresses|
+
+
+### get_decimals
+
+Get decimal places for each coin within a pool
+
+
+```solidity
+function get_decimals(address _pool) external view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|uint256 list of decimals|
+
+
+### get_underlying_decimals
+
+Get decimal places for each underlying coin within a pool
+
+
+```solidity
+function get_underlying_decimals(address _pool) external view returns (uint256[8] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[8]`|uint256 list of decimals|
+
+
+### get_rates
+
+Get rates for coins within a pool
+
+
+```solidity
+function get_rates(address _pool) external view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|Rates for each coin, precision normalized to 10**18|
+
+
+### get_balances
+
+Get balances for each coin within a pool
+
+*For pools using lending, these are the wrapped coin balances*
+
+
+```solidity
+function get_balances(address _pool) external view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|uint256 list of balances|
+
+
+### get_underlying_balances
+
+Get balances for each underlying coin within a metapool
+
+
+```solidity
+function get_underlying_balances(address _pool) external view returns (uint256[8] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Metapool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[8]`|uint256 list of underlying balances|
+
+
+### get_A
+
+Get the amplfication co-efficient for a pool
+
+
+```solidity
+function get_A(address _pool) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|uint256 A|
+
+
+### get_fees
+
+Get the fees for a pool
+
+*Fees are expressed as integers*
+
+
+```solidity
+function get_fees(address _pool) external view returns (uint256, uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Pool fee and admin fee as uint256 with 1e10 precision|
+|``|`uint256`||
+
+
+### get_admin_balances
+
+Get the current admin balances (uncollected fees) for a pool
+
+
+```solidity
+function get_admin_balances(address _pool) external view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|List of uint256 admin balances|
+
+
+### get_coin_indices
+
+Convert coin addresses to indices for use with pool methods
+
+
+```solidity
+function get_coin_indices(address _pool, address _from, address _to) external view returns (int128, int128, bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Pool address|
+|`_from`|`address`|Coin address to be used as `i` within a pool|
+|`_to`|`address`|Coin address to be used as `j` within a pool|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`int128`|int128 `i`, int128 `j`, boolean indicating if `i` and `j` are underlying coins|
+|``|`int128`||
+|``|`bool`||
+
+
+### add_base_pool
+
+Add a base pool to the registry, which may be used in factory metapools
+
+*Only callable by admin*
+
+
+```solidity
+function add_base_pool(address _base_pool, address _metapool_implementation, address _fee_receiver) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_base_pool`|`address`|Pool address to add|
+|`_metapool_implementation`|`address`|Implementation address that can be used with this base pool|
+|`_fee_receiver`|`address`|Admin fee receiver address for metapools using this base pool|
+
+
+### deploy_metapool
+
+Deploy a new metapool
+
+
+```solidity
+function deploy_metapool(
+ address _base_pool,
+ string memory _name,
+ string memory _symbol,
+ address _coin,
+ uint256 _A,
+ uint256 _fee
+) external returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_base_pool`|`address`|Address of the base pool to use within the metapool|
+|`_name`|`string`|Name of the new metapool|
+|`_symbol`|`string`|Symbol for the new metapool - will be concatenated with the base pool symbol|
+|`_coin`|`address`|Address of the coin being used in the metapool|
+|`_A`|`uint256`|Amplification co-efficient - a higher value here means less tolerance for imbalance within the pool's assets. Suggested values include: Uncollateralized algorithmic stablecoins: 5-10 Non-redeemable, collateralized assets: 100 Redeemable assets: 200-400|
+|`_fee`|`uint256`|Trade fee, given as an integer with 1e10 precision. The minimum fee is 0.04% (4000000), the maximum is 1% (100000000). 50% of the fee is distributed to veCRV holders.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Address of the deployed pool|
+
+
+### commit_transfer_ownership
+
+Transfer ownership of this contract to `addr`
+
+
+```solidity
+function commit_transfer_ownership(address addr) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`addr`|`address`|Address of the new owner|
+
+
+### accept_transfer_ownership
+
+Accept a pending ownership transfer
+
+*Only callable by the new owner*
+
+
+```solidity
+function accept_transfer_ownership() external;
+```
+
+### set_fee_receiver
+
+Set fee receiver for base and plain pools
+
+
+```solidity
+function set_fee_receiver(address _base_pool, address _fee_receiver) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_base_pool`|`address`|Address of base pool to set fee receiver for. For plain pools, leave as `ZERO_ADDRESS`.|
+|`_fee_receiver`|`address`|Address that fees are sent to|
+
+
+### convert_fees
+
+Convert the fees of a pool and transfer to the pool's fee receiver
+
+*All fees are converted to LP token of base pool*
+
+
+```solidity
+function convert_fees() external returns (bool);
+```
+
+### admin
+
+Returns admin address
+
+
+```solidity
+function admin() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Admin address|
+
+
+### future_admin
+
+Returns future admin address
+
+
+```solidity
+function future_admin() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Fututre admin address|
+
+
+### pool_list
+
+Returns pool address by index
+
+
+```solidity
+function pool_list(uint256 arg0) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`arg0`|`uint256`|Pool index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Pool address|
+
+
+### pool_count
+
+Returns `pool_list` length
+
+
+```solidity
+function pool_count() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Pool list length|
+
+
+### base_pool_list
+
+Returns base pool address by index
+
+
+```solidity
+function base_pool_list(uint256 arg0) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`arg0`|`uint256`|Base pool index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Base pool address|
+
+
+### base_pool_count
+
+Returns `base_pool_list` length
+
+
+```solidity
+function base_pool_count() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Base pool list length|
+
+
+### fee_receiver
+
+Returns fee reciever by pool address
+
+
+```solidity
+function fee_receiver(address arg0) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`arg0`|`address`|Pool address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Fee receiver|
+
+
+## Events
+### BasePoolAdded
+Emitted when a new base pool is added
+
+
+```solidity
+event BasePoolAdded(address base_pool, address implementat);
+```
+
+### MetaPoolDeployed
+Emitted when a new MetaPool is deployed
+
+
+```solidity
+event MetaPoolDeployed(address coin, address base_pool, uint256 A, uint256 fee, address deployer);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapFactoryNG.sol/interface.ICurveStableSwapFactoryNG.md b/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapFactoryNG.sol/interface.ICurveStableSwapFactoryNG.md
new file mode 100644
index 000000000..d99498b8f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapFactoryNG.sol/interface.ICurveStableSwapFactoryNG.md
@@ -0,0 +1,97 @@
+# ICurveStableSwapFactoryNG
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICurveStableSwapFactoryNG.sol)
+
+Factory allows the permissionless deployment of up to
+eight-coin plain pools (ex: DAI-USDT-USDC) and metapools (ex: USDT-3CRV).
+Liquidity pool and LP token share the same contract.
+
+
+## Functions
+### deploy_metapool
+
+Deploys a stableswap NG metapool
+
+
+```solidity
+function deploy_metapool(
+ address _base_pool,
+ string memory _name,
+ string memory _symbol,
+ address _coin,
+ uint256 _A,
+ uint256 _fee,
+ uint256 _offpeg_fee_multiplier,
+ uint256 _ma_exp_time,
+ uint256 _implementation_idx,
+ uint8 _asset_type,
+ bytes4 _method_id,
+ address _oracle
+) external returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_base_pool`|`address`|Address of the base pool to pair the token with. For tripool (DAI-USDT-USDC) use its pool address at 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7.|
+|`_name`|`string`|Name of the new metapool, ex: `Dollar/3CRV`|
+|`_symbol`|`string`|Symbol for the new metapool’s LP token - will be concatenated with the base pool symbol, ex: `Dollar3CRV`|
+|`_coin`|`address`|Address of the coin being used in the metapool, ex: use Dollar token address|
+|`_A`|`uint256`|Amplification coefficient. If set to 0 then bonding curve acts like Uniswap. Any >0 value makes the bonding curve to swap at 1:1 constant price, the more `_A` the longer the constant price period. Curve recommends set it to 100 for crypto collateralizard stablecoins. This parameter can be updated later.|
+|`_fee`|`uint256`|Trade fee, given as an integer with 1e10 precision, ex: 4000000 = 0.04% fee|
+|`_offpeg_fee_multiplier`|`uint256`|Off-peg multiplier. Curve recommends set it to `20000000000`. This parameter can be updated later. More info: https://docs.curve.fi/stableswap-exchange/stableswap-ng/pools/overview/#dynamic-fees|
+|`_ma_exp_time`|`uint256`|MA time; set as time_in_seconds / ln(2), ex: 866 = 600 seconds, 2597 = 1800 seconds. This parameter can be updated later.|
+|`_implementation_idx`|`uint256`|Index of the metapool implementation to use. Can be retrieved via `ICurveStableSwapFactoryNG.metapool_implementations()`. There is only 1 metapool implementation right now so use index `0`.|
+|`_asset_type`|`uint8`|Asset type of the pool as an integer. Available asset type indexes: - 0: Standard ERC20 token with no additional features - 1: Oracle - token with rate oracle (e.g. wstETH) - 2: Rebasing - token with rebase (e.g. stETH) - 3: ERC4626 - token with convertToAssets method (e.g. sDAI) Dollar is a standard ERC20 token so we should use asset type with index `0`.|
+|`_method_id`|`bytes4`|First four bytes of the Keccak-256 hash of the function signatures of the oracle addresses that give rate oracles. This is applied only to asset type `1` (Oracle). For Dollar token deployment set empty.|
+|`_oracle`|`address`|Rate oracle address. This is applied only to asset type `1` (Oracle). For Dollar token deployment set empty address.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Deployed metapool address|
+
+
+### deploy_plain_pool
+
+Deploys a new plain pool
+
+
+```solidity
+function deploy_plain_pool(
+ string memory _name,
+ string memory _symbol,
+ address[] memory _coins,
+ uint256 _A,
+ uint256 _fee,
+ uint256 _offpeg_fee_multiplier,
+ uint256 _ma_exp_time,
+ uint256 _implementation_idx,
+ uint8[] memory _asset_types,
+ bytes4[] memory _method_ids,
+ address[] memory _oracles
+) external returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_name`|`string`|Name of the new plain pool, ex: "LUSD/Dollar"|
+|`_symbol`|`string`|Symbol for the new pool's LP token, ex: "LUSDDollar"|
+|`_coins`|`address[]`|Array of addresses of the coins being used in the pool|
+|`_A`|`uint256`|Amplification coefficient. If set to 0 then bonding curve acts like Uniswap. Any >0 value makes the bonding curve to swap at 1:1 constant price, the more `_A` the longer the constant price period. Curve recommends set it to 100 for crypto collateralizard stablecoins. This parameter can be updated later.|
+|`_fee`|`uint256`|Trade fee, given as an integer with 1e10 precision, ex: 4000000 = 0.04% fee|
+|`_offpeg_fee_multiplier`|`uint256`|Off-peg multiplier. Curve recommends set it to `20000000000`. This parameter can be updated later. More info: https://docs.curve.fi/stableswap-exchange/stableswap-ng/pools/overview/#dynamic-fees|
+|`_ma_exp_time`|`uint256`|MA time; set as time_in_seconds / ln(2), ex: 866 = 600 seconds, 2597 = 1800 seconds. This parameter can be updated later.|
+|`_implementation_idx`|`uint256`|Index of the plain pool implementation to use. Can be retrieved via `ICurveStableSwapFactoryNG.pool_implementations()`. There is only 1 plain pool implementation right now so use index `0`.|
+|`_asset_types`|`uint8[]`|Asset types of the pool tokens as an integer. Available asset type indexes: - 0: Standard ERC20 token with no additional features - 1: Oracle - token with rate oracle (e.g. wstETH) - 2: Rebasing - token with rebase (e.g. stETH) - 3: ERC4626 - token with convertToAssets method (e.g. sDAI) Both Dollar and LUSD are standard ERC20 tokens so we should use asset types with index `0`.|
+|`_method_ids`|`bytes4[]`|Array of first four bytes of the Keccak-256 hash of the function signatures of the oracle addresses that give rate oracles. This is applied only to asset type `1` (Oracle). For Dollar token deployment set empty.|
+|`_oracles`|`address[]`|Array of rate oracle addresses. This is applied only to asset type `1` (Oracle). For Dollar token deployment set empty address.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Deployed plain pool address|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapMetaNG.sol/interface.ICurveStableSwapMetaNG.md b/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapMetaNG.sol/interface.ICurveStableSwapMetaNG.md
new file mode 100644
index 000000000..50ad76cbb
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapMetaNG.sol/interface.ICurveStableSwapMetaNG.md
@@ -0,0 +1,192 @@
+# ICurveStableSwapMetaNG
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICurveStableSwapMetaNG.sol)
+
+**Inherits:**
+IERC20
+
+Curve MetaPool interface
+
+**What is Curve MetaPool**
+
+The pool that consists of 2 tokens: stable coin and 3CRV LP token.
+For example the pool may contain Ubiquity Dollar and 3CRV LP token.
+This allows users to trade between Ubiquity Dollar and any of the tokens
+from the Curve 3Pool (DAI, USDC, USDT). When user adds liquidity to the pool
+then he is rewarded with MetaPool LP tokens. 1 Dollar3CRV LP token != 1 stable coin token.
+
+Add liquidity example:
+1. User sends 100 Ubiquity Dollars to the pool
+2. User gets 100 Dollar3CRV LP tokens of the pool
+
+Remove liquidity example:
+1. User sends 100 Dollar3CRV LP tokens to the pool
+2. User gets 100 Dollar/DAI/USDC/USDT (may choose any) tokens
+
+*Source: https://github.com/curvefi/stableswap-ng/blob/bff1522b30819b7b240af17ccfb72b0effbf6c47/contracts/main/CurveStableSwapMetaNG.vy*
+
+*Docs: https://docs.curve.fi/stableswap-exchange/stableswap-ng/pools/metapool/*
+
+
+## Functions
+### add_liquidity
+
+Deposits coins into to the pool and mints new LP tokens
+
+
+```solidity
+function add_liquidity(uint256[2] memory _amounts, uint256 _min_mint_amount, address _receiver)
+ external
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amounts`|`uint256[2]`|List of amounts of underlying coins to deposit. Amounts correspond to the tokens at the same index locations within `coins`.|
+|`_min_mint_amount`|`uint256`|Minimum amount of LP tokens to mint from the deposit|
+|`_receiver`|`address`|Optional address that receives the LP tokens. If not specified, they are sent to the caller.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The amount of LP tokens that were minted in the deposit|
+
+
+### balances
+
+Getter for the current balance of coin `i` within the pool
+
+
+```solidity
+function balances(uint256 i) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`uint256`|Coin index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Coin balance|
+
+
+### calc_token_amount
+
+Estimates the amount of LP tokens minted or burned based on a deposit or withdrawal
+
+This calculation accounts for slippage, but not fees. It should be used as a basis for
+determining expected amounts when calling `add_liquidity()` or `remove_liquidity_imbalance()`,
+but should not be considered to be precise!
+
+
+```solidity
+function calc_token_amount(uint256[2] memory _amounts, bool _is_deposit) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amounts`|`uint256[2]`|Amount of each coin being deposited. Amounts correspond to the tokens at the same index locations within `coins()`.|
+|`_is_deposit`|`bool`|Set `True` for deposits, `False` for withdrawals|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The expected amount of LP tokens minted or burned|
+
+
+### coins
+
+Returns token address by the provided `arg0` index
+
+
+```solidity
+function coins(uint256 arg0) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`arg0`|`uint256`|Token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Token address|
+
+
+### exchange
+
+Performs an exchange between two tokens. Index values can be found
+using the `coins()` public getter method, or `get_coins()` within the factory contract.
+
+
+```solidity
+function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|Index value of the token to send|
+|`j`|`int128`|Index value of the token to receive|
+|`dx`|`uint256`|The amount of `i` being exchanged|
+|`min_dy`|`uint256`|The minimum amount of `j` to receive. If the swap would result in less, the transaction will revert.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The amount of `j` received in the exchange|
+
+
+### price_oracle
+
+Function to calculate the exponential moving average (ema) price for the coin at index value `i`
+
+
+```solidity
+function price_oracle(uint256 i) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`uint256`|Index value of coin|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Price oracle|
+
+
+### remove_liquidity_one_coin
+
+Withdraws a single asset from the pool
+
+
+```solidity
+function remove_liquidity_one_coin(uint256 _burn_amount, int128 i, uint256 _min_received) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_burn_amount`|`uint256`|Amount of LP tokens to burn in the withdrawal|
+|`i`|`int128`|Index value of the coin to withdraw. Can be found using the `coins()` getter method.|
+|`_min_received`|`uint256`|Minimum amount of the coin to receive|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The amount of the coin received in the withdrawal|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapNG.sol/interface.ICurveStableSwapNG.md b/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapNG.sol/interface.ICurveStableSwapNG.md
new file mode 100644
index 000000000..98977ba3b
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICurveStableSwapNG.sol/interface.ICurveStableSwapNG.md
@@ -0,0 +1,19 @@
+# ICurveStableSwapNG
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICurveStableSwapNG.sol)
+
+**Inherits:**
+[ICurveStableSwapMetaNG](/src/dollar/interfaces/ICurveStableSwapMetaNG.sol/interface.ICurveStableSwapMetaNG.md)
+
+Curve's interface for plain pool which contains only USD pegged assets
+
+
+## Functions
+### add_liquidity
+
+
+```solidity
+function add_liquidity(uint256[] memory _amounts, uint256 _min_mint_amount, address _receiver)
+ external
+ returns (uint256);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ICurveTwocryptoOptimized.sol/interface.ICurveTwocryptoOptimized.md b/packages/contracts/docs/src/src/dollar/interfaces/ICurveTwocryptoOptimized.sol/interface.ICurveTwocryptoOptimized.md
new file mode 100644
index 000000000..02ebabae6
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ICurveTwocryptoOptimized.sol/interface.ICurveTwocryptoOptimized.md
@@ -0,0 +1,40 @@
+# ICurveTwocryptoOptimized
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/ICurveTwocryptoOptimized.sol)
+
+**Inherits:**
+[ICurveStableSwapMetaNG](/src/dollar/interfaces/ICurveStableSwapMetaNG.sol/interface.ICurveStableSwapMetaNG.md)
+
+Curve's CurveTwocryptoOptimized interface
+
+*Differences between Curve's crypto and stable swap meta pools (and how Ubiquity organization uses them):
+1. They contain different tokens:
+a) Curve's stable swap metapool containts Dollar/3CRVLP pair
+b) Curve's crypto pool contains Governance/ETH pair
+2. They use different bonding curve shapes:
+a) Curve's stable swap metapool is more straight (because underlying tokens are pegged to USD)
+b) Curve's crypto pool resembles Uniswap's bonding curve (because underlying tokens are not USD pegged)
+3. The `price_oracle()` method works differently:
+a) Curve's stable swap metapool `price_oracle(uint256 i)` accepts coin index parameter
+b) Curve's crypto pool `price_oracle()` doesn't accept coin index parameter and always returns oracle price for coin at index 1*
+
+*Basically `ICurveTwocryptoOptimized` has the same interface as `ICurveStableSwapMetaNG`
+but we distinguish them in the code for clarity.*
+
+
+## Functions
+### price_oracle
+
+Getter for the oracle price of the coin at index 1 with regard to the coin at index 0.
+The price oracle is an exponential moving average with a periodicity determined by `ma_time`.
+
+
+```solidity
+function price_oracle() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Price oracle|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IDepositZap.sol/interface.IDepositZap.md b/packages/contracts/docs/src/src/dollar/interfaces/IDepositZap.sol/interface.IDepositZap.md
new file mode 100644
index 000000000..6ea361e86
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IDepositZap.sol/interface.IDepositZap.md
@@ -0,0 +1,88 @@
+# IDepositZap
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IDepositZap.sol)
+
+Interface for Curve's Deposit Zap
+
+Deposit contracts (also known as “zaps”) allow users to add and remove liquidity
+from a pool using the pool’s underlying tokens
+
+
+## Functions
+### add_liquidity
+
+Wrap underlying coins and deposit them into `_pool`
+
+
+```solidity
+function add_liquidity(address _pool, uint256[4] calldata _amounts, uint256 _min_mint_amount)
+ external
+ returns (uint256 lpAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Address of the pool to deposit into|
+|`_amounts`|`uint256[4]`|List of amounts of underlying coins to deposit|
+|`_min_mint_amount`|`uint256`|Minimum amount of LP tokens to mint from the deposit|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`lpAmount`|`uint256`|Amount of LP tokens received by depositing|
+
+
+### remove_liquidity_one_coin
+
+Withdraw and unwrap a single coin from the pool
+
+
+```solidity
+function remove_liquidity_one_coin(address _pool, uint256 lpAmount, int128 i, uint256 min_amount)
+ external
+ returns (uint256 coinAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Address of the pool to withdraw from|
+|`lpAmount`|`uint256`|Amount of LP tokens to burn in the withdrawal|
+|`i`|`int128`|Index value of the coin to withdraw|
+|`min_amount`|`uint256`|Minimum amount of underlying coin to receive|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`coinAmount`|`uint256`|Amount of underlying coin received|
+
+
+### remove_liquidity
+
+Withdraw and unwrap coins from the pool
+
+*Withdrawal amounts are based on current deposit ratios*
+
+
+```solidity
+function remove_liquidity(address _pool, uint256 _amount, uint256[4] calldata min_amounts)
+ external
+ returns (uint256[4] calldata);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_pool`|`address`|Address of the pool to deposit into|
+|`_amount`|`uint256`|Quantity of LP tokens to burn in the withdrawal|
+|`min_amounts`|`uint256[4]`|Minimum amounts of underlying coins to receive|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[4]`|List of amounts of underlying coins that were withdrawn|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IDiamondCut.sol/interface.IDiamondCut.md b/packages/contracts/docs/src/src/dollar/interfaces/IDiamondCut.sol/interface.IDiamondCut.md
new file mode 100644
index 000000000..48b36e7d1
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IDiamondCut.sol/interface.IDiamondCut.md
@@ -0,0 +1,63 @@
+# IDiamondCut
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IDiamondCut.sol)
+
+Interface that allows modifications to diamond function selector mapping
+
+
+## Functions
+### diamondCut
+
+Add/replace/remove any number of functions and optionally execute a function with delegatecall
+
+*`_calldata` is executed with delegatecall on `_init`*
+
+
+```solidity
+function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_diamondCut`|`FacetCut[]`|Contains the facet addresses and function selectors|
+|`_init`|`address`|The address of the contract or facet to execute _calldata|
+|`_calldata`|`bytes`|A function call, including function selector and arguments|
+
+
+## Events
+### DiamondCut
+Emitted when facet selectors are modified
+
+
+```solidity
+event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
+```
+
+## Structs
+### FacetCut
+Struct used as a mapping of facet to function selectors
+
+
+```solidity
+struct FacetCut {
+ address facetAddress;
+ FacetCutAction action;
+ bytes4[] functionSelectors;
+}
+```
+
+## Enums
+### FacetCutAction
+Available diamond operations
+
+*Add=0, Replace=1, Remove=2*
+
+
+```solidity
+enum FacetCutAction {
+ Add,
+ Replace,
+ Remove
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IDiamondLoupe.sol/interface.IDiamondLoupe.md b/packages/contracts/docs/src/src/dollar/interfaces/IDiamondLoupe.sol/interface.IDiamondLoupe.md
new file mode 100644
index 000000000..62b3c620e
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IDiamondLoupe.sol/interface.IDiamondLoupe.md
@@ -0,0 +1,96 @@
+# IDiamondLoupe
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IDiamondLoupe.sol)
+
+A loupe is a small magnifying glass used to look at diamonds.
+These functions look at diamonds.
+
+*These functions are expected to be called frequently by 3rd party tools.*
+
+
+## Functions
+### facets
+
+Returns all facet addresses and their four byte function selectors
+
+
+```solidity
+function facets() external view returns (Facet[] memory facets_);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facets_`|`Facet[]`|Facets with function selectors|
+
+
+### facetFunctionSelectors
+
+Returns all function selectors supported by a specific facet
+
+
+```solidity
+function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_facet`|`address`|Facet address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facetFunctionSelectors_`|`bytes4[]`|Function selectors for a particular facet|
+
+
+### facetAddresses
+
+Returns all facet addresses used by a diamond
+
+
+```solidity
+function facetAddresses() external view returns (address[] memory facetAddresses_);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facetAddresses_`|`address[]`|Facet addresses in a diamond|
+
+
+### facetAddress
+
+Returns the facet that supports the given selector
+
+*If facet is not found returns `address(0)`*
+
+
+```solidity
+function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_functionSelector`|`bytes4`|Function selector|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`facetAddress_`|`address`|Facet address|
+
+
+## Structs
+### Facet
+Struct used as a mapping of facet to function selectors
+
+
+```solidity
+struct Facet {
+ address facetAddress;
+ bytes4[] functionSelectors;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IDollarAmoMinter.sol/interface.IDollarAmoMinter.md b/packages/contracts/docs/src/src/dollar/interfaces/IDollarAmoMinter.sol/interface.IDollarAmoMinter.md
new file mode 100644
index 000000000..37bac6963
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IDollarAmoMinter.sol/interface.IDollarAmoMinter.md
@@ -0,0 +1,39 @@
+# IDollarAmoMinter
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IDollarAmoMinter.sol)
+
+AMO minter interface
+
+*AMO minter can borrow collateral from the Ubiquity Pool to make some yield*
+
+
+## Functions
+### collateralDollarBalance
+
+Returns collateral Dollar balance
+
+
+```solidity
+function collateralDollarBalance() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Collateral Dollar balance|
+
+
+### collateralIndex
+
+Returns collateral index (from the Ubiquity Pool) for which AMO minter is responsible
+
+
+```solidity
+function collateralIndex() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Collateral token index|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IDollarMintCalculator.sol/interface.IDollarMintCalculator.md b/packages/contracts/docs/src/src/dollar/interfaces/IDollarMintCalculator.sol/interface.IDollarMintCalculator.md
new file mode 100644
index 000000000..7f7690e09
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IDollarMintCalculator.sol/interface.IDollarMintCalculator.md
@@ -0,0 +1,31 @@
+# IDollarMintCalculator
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IDollarMintCalculator.sol)
+
+Interface for calculating amount of Dollars to be minted
+
+When Dollar price > 1$ then any user can call `mintClaimableDollars()` to mint Dollars
+in order to move Dollar token to 1$ peg. The amount of Dollars to be minted is calculated
+using this formula `(TWAP_PRICE - 1) * DOLLAR_TOTAL_SUPPLY`.
+
+Example:
+1. Dollar price (i.e. TWAP price): 1.1$, Dollar total supply: 10_000
+2. When `mintClaimableDollars()` is called then `(1.1 - 1) * 10_000 = 1000` Dollars are minted
+to the current contract.
+
+
+## Functions
+### getDollarsToMint
+
+Returns amount of Dollars to be minted based on formula `(TWAP_PRICE - 1) * DOLLAR_TOTAL_SUPPLY`
+
+
+```solidity
+function getDollarsToMint() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Dollars to be minted|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IDollarMintExcess.sol/interface.IDollarMintExcess.md b/packages/contracts/docs/src/src/dollar/interfaces/IDollarMintExcess.sol/interface.IDollarMintExcess.md
new file mode 100644
index 000000000..005630241
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IDollarMintExcess.sol/interface.IDollarMintExcess.md
@@ -0,0 +1,36 @@
+# IDollarMintExcess
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IDollarMintExcess.sol)
+
+Interface for distributing excess Dollars when `mintClaimableDollars()` is called
+
+Excess Dollars are distributed this way:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+Example:
+1. 1000 Dollars should be distributed
+2. 50% (500 Dollars) goes to the `AppStorage.treasuryAddress`
+3. 10% (100 Dollars) goes for burning Dollar-Governance LP tokens:
+- Half of 10% Dollars are swapped for Governance tokens on a DEX
+- Governance tokens and half of 10% tokens are added as a liquidity to the Dollar-Governance DEX pool
+- Dollar-Governance LP tokens are transfered to 0 address (i.e. burning LP tokens)
+4. 40% (400 Dollars) goes to the Staking contract:
+- Swap Dollars for 3CRV LP tokens in the Curve's Dollar-3CRV MetaPool
+- Add 3CRV LP tokens to the Curve Dollar-3CRV MetaPool
+- Transfer Dollar-3CRV LP tokens to the Staking contract
+
+
+## Functions
+### distributeDollars
+
+Distributes excess Dollars:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+```solidity
+function distributeDollars() external;
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IERC1155Ubiquity.sol/interface.IERC1155Ubiquity.md b/packages/contracts/docs/src/src/dollar/interfaces/IERC1155Ubiquity.sol/interface.IERC1155Ubiquity.md
new file mode 100644
index 000000000..35a29dbb7
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IERC1155Ubiquity.sol/interface.IERC1155Ubiquity.md
@@ -0,0 +1,145 @@
+# IERC1155Ubiquity
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IERC1155Ubiquity.sol)
+
+**Inherits:**
+IERC1155
+
+ERC1155 Ubiquity interface
+
+ERC1155 with:
+- ERC1155 minter, burner and pauser
+- TotalSupply per id
+- Ubiquity Manager access control
+
+
+## Functions
+### mint
+
+Creates `amount` new tokens for `to`, of token type `id`
+
+
+```solidity
+function mint(address to, uint256 id, uint256 amount, bytes memory data) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint tokens|
+|`id`|`uint256`|Token type id|
+|`amount`|`uint256`|Tokens amount to mint|
+|`data`|`bytes`|Arbitrary data|
+
+
+### mintBatch
+
+Mints multiple token types for `to` address
+
+
+```solidity
+function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint tokens|
+|`ids`|`uint256[]`|Array of token type ids|
+|`amounts`|`uint256[]`|Array of token amounts|
+|`data`|`bytes`|Arbitrary data|
+
+
+### burn
+
+Destroys `amount` tokens of token type `id` from `account`
+Emits a `TransferSingle` event.
+Requirements:
+- `account` cannot be the zero address.
+- `account` must have at least `amount` tokens of token type `id`.
+
+
+```solidity
+function burn(address account, uint256 id, uint256 value) external;
+```
+
+### burnBatch
+
+Batched version of `_burn()`
+Emits a `TransferBatch` event.
+Requirements:
+- `ids` and `amounts` must have the same length.
+
+
+```solidity
+function burnBatch(address account, uint256[] memory ids, uint256[] memory values) external;
+```
+
+### pause
+
+Pauses all token transfers
+
+
+```solidity
+function pause() external;
+```
+
+### unpause
+
+Unpauses all token transfers
+
+
+```solidity
+function unpause() external;
+```
+
+### totalSupply
+
+Returns total supply among all token ids
+
+
+```solidity
+function totalSupply() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Total supply among all token ids|
+
+
+### exists
+
+Checks whether token `id` exists
+
+
+```solidity
+function exists(uint256 id) external view returns (bool);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether token `id` exists|
+
+
+### holderTokens
+
+Returns array of token ids held by the `holder`
+
+
+```solidity
+function holderTokens(address holder) external view returns (uint256[] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`holder`|`address`|Account to check tokens for|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[]`|Array of tokens which `holder` has|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IERC173.sol/interface.IERC173.md b/packages/contracts/docs/src/src/dollar/interfaces/IERC173.sol/interface.IERC173.md
new file mode 100644
index 000000000..4bcc64221
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IERC173.sol/interface.IERC173.md
@@ -0,0 +1,50 @@
+# IERC173
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IERC173.sol)
+
+ERC-173 Contract Ownership Standard
+
+*ERC-165 identifier for this interface is 0x7f5828d0*
+
+
+## Functions
+### owner
+
+Returns owner's address
+
+
+```solidity
+function owner() external view returns (address owner_);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`owner_`|`address`|Owner address|
+
+
+### transferOwnership
+
+Sets contract's owner to a new address
+
+*Set _newOwner to address(0) to renounce any ownership*
+
+
+```solidity
+function transferOwnership(address _newOwner) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_newOwner`|`address`|The address of the new owner of the contract|
+
+
+## Events
+### OwnershipTransferred
+Emits when ownership of a contract changes
+
+
+```solidity
+event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IERC20Ubiquity.sol/interface.IERC20Ubiquity.md b/packages/contracts/docs/src/src/dollar/interfaces/IERC20Ubiquity.sol/interface.IERC20Ubiquity.md
new file mode 100644
index 000000000..b9dead21a
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IERC20Ubiquity.sol/interface.IERC20Ubiquity.md
@@ -0,0 +1,74 @@
+# IERC20Ubiquity
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IERC20Ubiquity.sol)
+
+**Inherits:**
+IERC20, IERC20Permit
+
+Interface for ERC20Ubiquity contract
+
+
+## Functions
+### burn
+
+Burns tokens from `msg.sender`
+
+
+```solidity
+function burn(uint256 amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of tokens to burn|
+
+
+### burnFrom
+
+Burns tokens from the `account` address
+
+
+```solidity
+function burnFrom(address account, uint256 amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to burn tokens from|
+|`amount`|`uint256`|Amount of tokens to burn|
+
+
+### mint
+
+Mints tokens to the `account` address
+
+
+```solidity
+function mint(address account, uint256 amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to mint tokens to|
+|`amount`|`uint256`|Amount of tokens to mint|
+
+
+## Events
+### Minting
+Emitted on tokens minting
+
+
+```solidity
+event Minting(address indexed _to, address indexed _minter, uint256 _amount);
+```
+
+### Burning
+Emitted on tokens burning
+
+
+```solidity
+event Burning(address indexed _burned, uint256 _amount);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IIncentive.sol/interface.IIncentive.md b/packages/contracts/docs/src/src/dollar/interfaces/IIncentive.sol/interface.IIncentive.md
new file mode 100644
index 000000000..33e658c6a
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IIncentive.sol/interface.IIncentive.md
@@ -0,0 +1,35 @@
+# IIncentive
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/4924ab0035521e70625d704791f5b260a4713327/src/dollar/interfaces/IIncentive.sol)
+
+Incentive contract interface
+
+Called by Ubiquity Dollar token contract when transferring with an incentivized address.
+Dollar admin can set an incentive contract for a partner in order to, for example, mint partner's
+project tokens on Dollars transfers. Incentive contracts can be set for the following transfer operations:
+- EOA => contract
+- contract => EOA
+- contract => contract
+- any transfer incentive contract
+
+*Should be appointed as a Minter or Burner as needed*
+
+
+## Functions
+### incentivize
+
+Applies incentives on transfer
+
+
+```solidity
+function incentivize(address sender, address receiver, address operator, uint256 amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`sender`|`address`|the sender address of Ubiquity Dollar|
+|`receiver`|`address`|the receiver address of Ubiquity Dollar|
+|`operator`|`address`|the operator (msg.sender) of the transfer|
+|`amount`|`uint256`|the amount of Ubiquity Dollar transferred|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IJar.sol/interface.IJar.md b/packages/contracts/docs/src/src/dollar/interfaces/IJar.sol/interface.IJar.md
new file mode 100644
index 000000000..65e41c894
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IJar.sol/interface.IJar.md
@@ -0,0 +1,109 @@
+# IJar
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/7c3a0bb87e5e9b32000b3291b4e7da4b119ff3fa/src/dollar/interfaces/IJar.sol)
+
+**Inherits:**
+IERC20
+
+IJar interface
+
+
+## Functions
+### claimInsurance
+
+Transfers insurance to controller
+
+
+```solidity
+function claimInsurance() external;
+```
+
+### depositAll
+
+Deposits the whole user balance
+
+
+```solidity
+function depositAll() external;
+```
+
+### deposit
+
+Deposits a specified amount of tokens
+
+
+```solidity
+function deposit(uint256) external;
+```
+
+### withdrawAll
+
+Withdraws all tokens
+
+
+```solidity
+function withdrawAll() external;
+```
+
+### withdraw
+
+Withdraws a specified amount of tokens
+
+
+```solidity
+function withdraw(uint256) external;
+```
+
+### earn
+
+Run strategy
+
+
+```solidity
+function earn() external;
+```
+
+### token
+
+Returns token address
+
+
+```solidity
+function token() external view returns (address);
+```
+
+### reward
+
+Returns reward amount
+
+
+```solidity
+function reward() external view returns (address);
+```
+
+### getRatio
+
+Returns ratio
+
+
+```solidity
+function getRatio() external view returns (uint256);
+```
+
+### balance
+
+Returns token balance
+
+
+```solidity
+function balance() external view returns (uint256);
+```
+
+### decimals
+
+Returns token decimals
+
+
+```solidity
+function decimals() external view returns (uint8);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IMetaPool.sol/interface.IMetaPool.md b/packages/contracts/docs/src/src/dollar/interfaces/IMetaPool.sol/interface.IMetaPool.md
new file mode 100644
index 000000000..d75b23f68
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IMetaPool.sol/interface.IMetaPool.md
@@ -0,0 +1,313 @@
+# IMetaPool
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/4924ab0035521e70625d704791f5b260a4713327/src/dollar/interfaces/IMetaPool.sol)
+
+**Inherits:**
+IERC20
+
+Curve MetaPool interface
+
+**What is Curve MetaPool**
+
+The pool that consists of 2 tokens: stable coin and 3CRV LP token.
+For example the pool may contain Ubiquity Dollar and 3CRV LP token.
+This allows users to trade between Ubiquity Dollar and any of the tokens
+from the Curve 3Pool (DAI, USDC, USDT). When user adds liquidity to the pool
+then he is rewarded with MetaPool LP tokens. 1 Dollar3CRV LP token != 1 stable coin token.
+
+Add liquidity example:
+1. User sends 100 Ubiquity Dollars to the pool
+2. User gets 100 Dollar3CRV LP tokens of the pool
+
+Remove liquidity example:
+1. User sends 100 Dollar3CRV LP tokens to the pool
+2. User gets 100 Dollar/DAI/USDC/USDT (may choose any) tokens
+
+
+## Functions
+### get_twap_balances
+
+Calculates the current effective TWAP balances given two
+snapshots over time, and the time elapsed between the two snapshots
+
+
+```solidity
+function get_twap_balances(uint256[2] memory _first_balances, uint256[2] memory _last_balances, uint256 _time_elapsed)
+ external
+ view
+ returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_first_balances`|`uint256[2]`|First `price_cumulative_last` array that was snapshot via `get_price_cumulative_last()`|
+|`_last_balances`|`uint256[2]`|Second `price_cumulative_last` array that was snapshot via `get_price_cumulative_last()`|
+|`_time_elapsed`|`uint256`|The elapsed time in seconds between `_first_balances` and `_last_balances`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|Returns the `balances` of the TWAP value|
+
+
+### get_price_cumulative_last
+
+Returns latest cumulative prices for pool tokens
+
+The price P gets multiplied to how long it lasts T.
+This is continuously added to cumulative value C.
+Example:
+1. Timestamp 0, price 3000, C = 0
+2. Timestamp 200, price 3200, C = 0(previous C) + 3000 * 200 = 600000
+3. Timestamp 250, price 3150, C = 600000 + 3200 * 50 = 760000
+4. So TWAP between time (0,250) = (760000 - 0) / (250 - 0) = 3040
+
+
+```solidity
+function get_price_cumulative_last() external view returns (uint256[2] memory);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|Latest cumulative prices|
+
+
+### calc_token_amount
+
+Estimates the amount of LP tokens minted or burned based on a deposit or withdrawal
+
+This calculation accounts for slippage, but not fees. It should be used as a basis for
+determining expected amounts when calling `add_liquidity()` or `remove_liquidity_imbalance()`,
+but should not be considered to be precise!
+
+
+```solidity
+function calc_token_amount(uint256[2] memory _amounts, bool _is_deposit) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amounts`|`uint256[2]`|Amount of each coin being deposited. Amounts correspond to the tokens at the same index locations within `coins()`.|
+|`_is_deposit`|`bool`|Set `True` for deposits, `False` for withdrawals|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The expected amount of LP tokens minted or burned|
+
+
+### add_liquidity
+
+Deposits coins into to the pool and mints new LP tokens
+
+
+```solidity
+function add_liquidity(uint256[2] memory _amounts, uint256 _min_mint_amount, address _receiver)
+ external
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amounts`|`uint256[2]`|List of amounts of underlying coins to deposit. Amounts correspond to the tokens at the same index locations within `coins`.|
+|`_min_mint_amount`|`uint256`|Minimum amount of LP tokens to mint from the deposit|
+|`_receiver`|`address`|Optional address that receives the LP tokens. If not specified, they are sent to the caller.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The amount of LP tokens that were minted in the deposit|
+
+
+### get_dy
+
+Calculates the price for exchanging a token with index `i` to token
+with index `j` and amount `dx` given the `_balances` provided
+
+
+```solidity
+function get_dy(int128 i, int128 j, uint256 dx) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|The index of the coin being sent to the pool, as it related to the metapool|
+|`j`|`int128`|The index of the coin being received from the pool, as it relates to the metapool|
+|`dx`|`uint256`|The amount of `i` being sent to the pool|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Returns the quote / price as `dy` given `dx`|
+
+
+### get_dy
+
+Calculates the price for exchanging a token with index `i` to token
+with index `j` and amount `dx` given the `_balances` provided
+
+
+```solidity
+function get_dy(int128 i, int128 j, uint256 dx, uint256[2] memory _balances) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|The index of the coin being sent to the pool, as it related to the metapool|
+|`j`|`int128`|The index of the coin being received from the pool, as it relates to the metapool|
+|`dx`|`uint256`|The amount of `i` being sent to the pool|
+|`_balances`|`uint256[2]`|The array of balances to be used for purposes of calculating the output amount / exchange rate, this is the value returned in `get_twap_balances()`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Returns the quote / price as `dy` given `dx`|
+
+
+### get_dy_underlying
+
+Gets the amount received (“dy”) when swapping between two underlying assets within the pool
+
+Index values can be found using `get_underlying_coins()` within the factory contract
+
+
+```solidity
+function get_dy_underlying(int128 i, int128 j, uint256 dx) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|Index value of the token to send|
+|`j`|`int128`|Index value of the token to receive|
+|`dx`|`uint256`|The amount of `i` being exchanged|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Returns the amount of `j` received|
+
+
+### exchange
+
+Performs an exchange between two tokens. Index values can be found
+using the `coins()` public getter method, or `get_coins()` within the factory contract.
+
+
+```solidity
+function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|Index value of the token to send|
+|`j`|`int128`|Index value of the token to receive|
+|`dx`|`uint256`|The amount of `i` being exchanged|
+|`min_dy`|`uint256`|The minimum amount of `j` to receive. If the swap would result in less, the transaction will revert.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The amount of `j` received in the exchange|
+
+
+### remove_liquidity_one_coin
+
+Withdraws a single asset from the pool
+
+
+```solidity
+function remove_liquidity_one_coin(uint256 _burn_amount, int128 i, uint256 _min_received) external returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_burn_amount`|`uint256`|Amount of LP tokens to burn in the withdrawal|
+|`i`|`int128`|Index value of the coin to withdraw. Can be found using the `coins()` getter method.|
+|`_min_received`|`uint256`|Minimum amount of the coin to receive|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|The amount of the coin received in the withdrawal|
+
+
+### coins
+
+Returns token address by the provided `arg0` index
+
+
+```solidity
+function coins(uint256 arg0) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`arg0`|`uint256`|Token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Token address|
+
+
+### balances
+
+Returns token balances by `arg0` index
+
+
+```solidity
+function balances(uint256 arg0) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`arg0`|`uint256`|Token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Token balance|
+
+
+### fee
+
+
+```solidity
+function fee() external view returns (uint256);
+```
+
+### block_timestamp_last
+
+Returns the latest timestamp when TWAP cumulative prices were updated
+
+
+```solidity
+function block_timestamp_last() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Latest update timestamp|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IStableSwap3Pool.sol/interface.IStableSwap3Pool.md b/packages/contracts/docs/src/src/dollar/interfaces/IStableSwap3Pool.sol/interface.IStableSwap3Pool.md
new file mode 100644
index 000000000..77f3ea884
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IStableSwap3Pool.sol/interface.IStableSwap3Pool.md
@@ -0,0 +1,183 @@
+# IStableSwap3Pool
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IStableSwap3Pool.sol)
+
+Curve TriPool interface
+
+
+## Functions
+### get_virtual_price
+
+The current virtual price of the pool LP token
+
+*Useful for calculating profits*
+
+
+```solidity
+function get_virtual_price() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|LP token virtual price normalized to 1e18|
+
+
+### balances
+
+Returns pool balance
+
+
+```solidity
+function balances(uint256) external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Token balance|
+
+
+### coins
+
+Returns coin address by index
+
+
+```solidity
+function coins(uint256) external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Coin address|
+
+
+### get_dy
+
+Calculates the price for exchanging a token with index `i` to token
+with index `j` and amount `dx` given the `_balances` provided
+
+
+```solidity
+function get_dy(int128 i, int128 j, uint256 dx) external view returns (uint256 dy);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|The index of the coin being sent to the pool, as it related to the metapool|
+|`j`|`int128`|The index of the coin being received from the pool, as it relates to the metapool|
+|`dx`|`uint256`|The amount of `i` being sent to the pool|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dy`|`uint256`|Returns the quote / price as `dy` given `dx`|
+
+
+### exchange
+
+Performs an exchange between two tokens. Index values can be found
+using the `coins()` public getter method, or `get_coins()` within the factory contract.
+
+
+```solidity
+function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`i`|`int128`|Index value of the token to send|
+|`j`|`int128`|Index value of the token to receive|
+|`dx`|`uint256`|The amount of `i` being exchanged|
+|`min_dy`|`uint256`|The minimum amount of `j` to receive. If the swap would result in less, the transaction will revert.|
+
+
+### add_liquidity
+
+Deposits coins into to the pool and mints new LP tokens
+
+
+```solidity
+function add_liquidity(uint256[3] calldata amounts, uint256 min_mint_amount) external payable;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amounts`|`uint256[3]`|List of amounts of underlying coins to deposit. Amounts correspond to the tokens at the same index locations within `coins`.|
+|`min_mint_amount`|`uint256`|Minimum amount of LP tokens to mint from the deposit|
+
+
+### remove_liquidity
+
+Withdraw coins from the pool
+
+*Withdrawal amounts are based on current deposit ratios*
+
+
+```solidity
+function remove_liquidity(uint256 _amount, uint256[3] calldata amounts) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Quantity of LP tokens to burn in the withdrawal|
+|`amounts`|`uint256[3]`|Minimum amounts of underlying coins to receive|
+
+
+### remove_liquidity_one_coin
+
+Withdraw a single coin from the pool
+
+
+```solidity
+function remove_liquidity_one_coin(uint256 _token_amount, int128 i, uint256 min_amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token_amount`|`uint256`|Amount of LP tokens to burn in the withdrawal|
+|`i`|`int128`|Index value of the coin to withdraw|
+|`min_amount`|`uint256`|Minimum amount of coin to receive|
+
+
+### calc_token_amount
+
+Calculate addition or reduction in token supply from a deposit or withdrawal
+
+*This calculation accounts for slippage, but not fees.
+Needed to prevent front-running, not for precise calculations!*
+
+
+```solidity
+function calc_token_amount(uint256[3] calldata amounts, bool deposit) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amounts`|`uint256[3]`|Amount of each coin being deposited|
+|`deposit`|`bool`|set True for deposits, False for withdrawals|
+
+
+### calc_withdraw_one_coin
+
+Calculate the amount received when withdrawing a single coin
+
+
+```solidity
+function calc_withdraw_one_coin(uint256 _token_amount, int128 i) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token_amount`|`uint256`|Amount of LP tokens to burn in the withdrawal|
+|`i`|`int128`|Index value of the coin to withdraw|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IStaking.sol/interface.IStaking.md b/packages/contracts/docs/src/src/dollar/interfaces/IStaking.sol/interface.IStaking.md
new file mode 100644
index 000000000..044c8c555
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IStaking.sol/interface.IStaking.md
@@ -0,0 +1,68 @@
+# IStaking
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IStaking.sol)
+
+Staking interface
+
+
+## Functions
+### deposit
+
+Deposits UbiquityDollar-3CRV LP tokens for a duration to receive staking shares
+
+Weeks act as a multiplier for the amount of staking shares to be received
+
+
+```solidity
+function deposit(uint256 _lpsAmount, uint256 _weeks) external returns (uint256 _id);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_lpsAmount`|`uint256`|Amount of LP tokens to send|
+|`_weeks`|`uint256`|Number of weeks during which LP tokens will be held|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+
+### addLiquidity
+
+Adds an amount of UbiquityDollar-3CRV LP tokens
+
+Staking shares are ERC1155 (aka NFT) because they have an expiration date
+
+
+```solidity
+function addLiquidity(uint256 _amount, uint256 _id, uint256 _weeks) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of LP token to deposit|
+|`_id`|`uint256`|Staking share id|
+|`_weeks`|`uint256`|Number of weeks during which LP tokens will be held|
+
+
+### removeLiquidity
+
+Removes an amount of UbiquityDollar-3CRV LP tokens
+
+Staking shares are ERC1155 (aka NFT) because they have an expiration date
+
+
+```solidity
+function removeLiquidity(uint256 _amount, uint256 _id) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of LP token deposited when `_id` was created to be withdrawn|
+|`_id`|`uint256`|Staking share id|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IStakingShare.sol/interface.IStakingShare.md b/packages/contracts/docs/src/src/dollar/interfaces/IStakingShare.sol/interface.IStakingShare.md
new file mode 100644
index 000000000..821a2ac1e
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IStakingShare.sol/interface.IStakingShare.md
@@ -0,0 +1,47 @@
+# IStakingShare
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IStakingShare.sol)
+
+**Inherits:**
+[IERC1155Ubiquity](/src/dollar/interfaces/IERC1155Ubiquity.sol/interface.IERC1155Ubiquity.md)
+
+Interface representing a staking share in the form of ERC1155 token
+
+
+## Functions
+### getStake
+
+Returns stake info by stake `id`
+
+
+```solidity
+function getStake(uint256 id) external view returns (Stake memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Stake id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`Stake`|Stake info|
+
+
+## Structs
+### Stake
+Stake struct
+
+
+```solidity
+struct Stake {
+ address minter;
+ uint256 lpFirstDeposited;
+ uint256 creationBlock;
+ uint256 lpRewardDebt;
+ uint256 endBlock;
+ uint256 lpAmount;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/ITWAPOracleDollar3pool.sol/interface.ITWAPOracleDollar3pool.md b/packages/contracts/docs/src/src/dollar/interfaces/ITWAPOracleDollar3pool.sol/interface.ITWAPOracleDollar3pool.md
new file mode 100644
index 000000000..e34af87e7
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/ITWAPOracleDollar3pool.sol/interface.ITWAPOracleDollar3pool.md
@@ -0,0 +1,78 @@
+# ITWAPOracleDollar3pool
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/4924ab0035521e70625d704791f5b260a4713327/src/dollar/interfaces/ITWAPOracleDollar3pool.sol)
+
+TWAP oracle interface for Curve MetaPool
+
+**What is Curve 3Pool**
+
+The pool that consists of 3 tokens: DAI, USDC, USDT.
+Users are free to trade (swap) those tokens. When user adds liquidity
+to the pool then he is rewarded with the pool's LP token 3CRV.
+1 3CRV LP token != 1 stable coin token.
+
+Add liquidity example:
+1. User sends 5 USDC to the pool
+2. User gets 5 3CRV LP tokens
+
+Remove liquidity example:
+1. User sends 99 3CRV LP tokens
+2. User gets 99 USDT tokens
+
+**What is Curve MetaPool**
+
+The pool that consists of 2 tokens: stable coin and 3CRV LP token.
+For example the pool may contain Ubiquity Dollar and 3CRV LP token.
+This allows users to trade between Ubiquity Dollar and any of the tokens
+from the Curve 3Pool (DAI, USDC, USDT). When user adds liquidity to the pool
+then he is rewarded with MetaPool LP tokens. 1 Dollar3CRV LP token != 1 stable coin token.
+
+Add liquidity example:
+1. User sends 100 Ubiquity Dollars to the pool
+2. User gets 100 Dollar3CRV LP tokens of the pool
+
+Remove liquidity example:
+1. User sends 100 Dollar3CRV LP tokens to the pool
+2. User gets 100 Dollar/DAI/USDC/USDT (may choose any) tokens
+
+
+## Functions
+### update
+
+Updates the following state variables to the latest values from MetaPool:
+- Dollar / 3CRV LP quote
+- 3CRV LP / Dollar quote
+- cumulative prices
+- update timestamp
+
+
+```solidity
+function update() external;
+```
+
+### consult
+
+Returns the quote for the provided `token` address
+
+If the `token` param is Dollar then returns 3CRV LP / Dollar quote
+
+If the `token` param is 3CRV LP then returns Dollar / 3CRV LP quote
+
+*This will always return 0 before update has been called successfully for the first time*
+
+
+```solidity
+function consult(address token) external view returns (uint256 amountOut);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amountOut`|`uint256`|Token price, Dollar / 3CRV LP or 3CRV LP / Dollar quote|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityChef.sol/interface.IUbiquityChef.md b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityChef.sol/interface.IUbiquityChef.md
new file mode 100644
index 000000000..d576a8e0d
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityChef.sol/interface.IUbiquityChef.md
@@ -0,0 +1,138 @@
+# IUbiquityChef
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IUbiquityChef.sol)
+
+Interface for staking Dollar-3CRV LP tokens for Governance tokens reward
+
+
+## Functions
+### deposit
+
+Deposits Dollar-3CRV LP tokens to staking for Governance tokens allocation
+
+
+```solidity
+function deposit(address sender, uint256 amount, uint256 stakingShareID) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`sender`|`address`|Address where to transfer pending Governance token rewards|
+|`amount`|`uint256`|Amount of LP tokens to deposit|
+|`stakingShareID`|`uint256`|Staking share id|
+
+
+### withdraw
+
+Withdraws Dollar-3CRV LP tokens from staking
+
+
+```solidity
+function withdraw(address sender, uint256 amount, uint256 stakingShareID) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`sender`|`address`|Address where to transfer pending Governance token rewards|
+|`amount`|`uint256`|Amount of LP tokens to withdraw|
+|`stakingShareID`|`uint256`|Staking share id|
+
+
+### getStakingShareInfo
+
+Returns staking share info
+
+
+```solidity
+function getStakingShareInfo(uint256 _id) external view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|Array of amount of shares and reward debt|
+
+
+### totalShares
+
+Total amount of Dollar-3CRV LP tokens deposited to the Staking contract
+
+
+```solidity
+function totalShares() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Total amount of deposited LP tokens|
+
+
+### pendingGovernance
+
+Returns amount of pending reward Governance tokens
+
+
+```solidity
+function pendingGovernance(address _user) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_user`|`address`|User address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of pending reward Governance tokens|
+
+
+## Events
+### Deposit
+Emitted when Dollar-3CRV LP tokens are deposited to the contract
+
+
+```solidity
+event Deposit(address indexed user, uint256 amount, uint256 stakingShareID);
+```
+
+### Withdraw
+Emitted when Dollar-3CRV LP tokens are withdrawn from the contract
+
+
+```solidity
+event Withdraw(address indexed user, uint256 amount, uint256 stakingShareID);
+```
+
+## Structs
+### StakingShareInfo
+User's staking share info
+
+
+```solidity
+struct StakingShareInfo {
+ uint256 amount;
+ uint256 rewardDebt;
+}
+```
+
+### PoolInfo
+Pool info
+
+
+```solidity
+struct PoolInfo {
+ uint256 lastRewardBlock;
+ uint256 accGovernancePerShare;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityDollarManager.sol/interface.IUbiquityDollarManager.md b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityDollarManager.sol/interface.IUbiquityDollarManager.md
new file mode 100644
index 000000000..c00730b69
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityDollarManager.sol/interface.IUbiquityDollarManager.md
@@ -0,0 +1,456 @@
+# IUbiquityDollarManager
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IUbiquityDollarManager.sol)
+
+**Inherits:**
+[IAccessControl](/src/dollar/interfaces/IAccessControl.sol/interface.IAccessControl.md)
+
+Interface for setting protocol parameters
+
+
+## Functions
+### INCENTIVE_MANAGER_ROLE
+
+Returns name for the "incentive manager" role
+
+
+```solidity
+function INCENTIVE_MANAGER_ROLE() external view returns (bytes32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Bytes representation of the role name|
+
+
+### GOVERNANCE_TOKEN_MINTER_ROLE
+
+Returns name for the "governance token minter" role
+
+
+```solidity
+function GOVERNANCE_TOKEN_MINTER_ROLE() external view returns (bytes32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Bytes representation of the role name|
+
+
+### creditTokenAddress
+
+Returns Credit token address
+
+
+```solidity
+function creditTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Credit token address|
+
+
+### treasuryAddress
+
+Returns treasury address
+
+
+```solidity
+function treasuryAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Treasury address|
+
+
+### setTwapOracleAddress
+
+Sets Curve TWAP oracle address
+
+
+```solidity
+function setTwapOracleAddress(address _twapOracleAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_twapOracleAddress`|`address`|TWAP oracle address|
+
+
+### setCreditTokenAddress
+
+Sets Credit token address
+
+
+```solidity
+function setCreditTokenAddress(address _creditTokenAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditTokenAddress`|`address`|Credit token address|
+
+
+### setCreditNftAddress
+
+Sets Credit NFT address
+
+
+```solidity
+function setCreditNftAddress(address _creditNftAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftAddress`|`address`|Credit NFT address|
+
+
+### setIncentiveToDollar
+
+Sets incentive contract `_incentiveAddress` for `_account` address
+
+
+```solidity
+function setIncentiveToDollar(address _account, address _incentiveAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_account`|`address`|Address for which to set an incentive contract|
+|`_incentiveAddress`|`address`|Incentive contract address|
+
+
+### setDollarTokenAddress
+
+Sets Dollar token address
+
+
+```solidity
+function setDollarTokenAddress(address _dollarTokenAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_dollarTokenAddress`|`address`|Dollar token address|
+
+
+### setGovernanceTokenAddress
+
+Sets Governance token address
+
+
+```solidity
+function setGovernanceTokenAddress(address _governanceTokenAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_governanceTokenAddress`|`address`|Governance token address|
+
+
+### setSushiSwapPoolAddress
+
+Sets Sushi swap pool address (Dollar-Governance)
+
+
+```solidity
+function setSushiSwapPoolAddress(address _sushiSwapPoolAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_sushiSwapPoolAddress`|`address`|Pool address|
+
+
+### setCreditCalculatorAddress
+
+Sets Credit calculator address
+
+
+```solidity
+function setCreditCalculatorAddress(address _creditCalculatorAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditCalculatorAddress`|`address`|Credit calculator address|
+
+
+### setCreditNftCalculatorAddress
+
+Sets Credit NFT calculator address
+
+
+```solidity
+function setCreditNftCalculatorAddress(address _creditNftCalculatorAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftCalculatorAddress`|`address`|Credit NFT calculator address|
+
+
+### setDollarMintCalculatorAddress
+
+Sets Dollar mint calculator address
+
+
+```solidity
+function setDollarMintCalculatorAddress(address _dollarMintCalculatorAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_dollarMintCalculatorAddress`|`address`|Dollar mint calculator address|
+
+
+### setExcessDollarsDistributor
+
+Sets excess Dollars distributor address
+
+
+```solidity
+function setExcessDollarsDistributor(address creditNftManagerAddress, address dollarMintExcess) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`creditNftManagerAddress`|`address`|Credit NFT manager address|
+|`dollarMintExcess`|`address`|Dollar distributor address|
+
+
+### setMasterChefAddress
+
+Sets MasterChef address
+
+
+```solidity
+function setMasterChefAddress(address _masterChefAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_masterChefAddress`|`address`|MasterChef address|
+
+
+### setFormulasAddress
+
+Sets formulas address
+
+
+```solidity
+function setFormulasAddress(address _formulasAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_formulasAddress`|`address`|Formulas address|
+
+
+### setStakingShareAddress
+
+Sets staking share address
+
+
+```solidity
+function setStakingShareAddress(address _stakingShareAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakingShareAddress`|`address`|Staking share address|
+
+
+### setStableSwapMetaPoolAddress
+
+Sets Curve Dollar-3CRV MetaPool address
+
+
+```solidity
+function setStableSwapMetaPoolAddress(address _stableSwapMetaPoolAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stableSwapMetaPoolAddress`|`address`|Curve Dollar-3CRV MetaPool address|
+
+
+### setStakingContractAddress
+
+Sets staking contract address
+
+*Staking contract participants deposit Curve LP tokens
+for a certain duration to earn Governance tokens and more Curve LP tokens*
+
+
+```solidity
+function setStakingContractAddress(address _stakingContractAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakingContractAddress`|`address`|Staking contract address|
+
+
+### setTreasuryAddress
+
+Sets treasury address
+
+*Treasury fund is used to maintain the protocol*
+
+
+```solidity
+function setTreasuryAddress(address _treasuryAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_treasuryAddress`|`address`|Treasury address|
+
+
+### deployStableSwapPool
+
+Deploys Curve MetaPool [Stablecoin, 3CRV LP]
+
+*From the curve documentation for uncollateralized algorithmic
+stablecoins amplification should be 5-10*
+
+
+```solidity
+function deployStableSwapPool(
+ address _curveFactory,
+ address _crvBasePool,
+ address _crv3PoolTokenAddress,
+ uint256 _amplificationCoefficient,
+ uint256 _fee
+) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_curveFactory`|`address`|Curve MetaPool factory address|
+|`_crvBasePool`|`address`|Base pool address for MetaPool|
+|`_crv3PoolTokenAddress`|`address`|Curve TriPool address|
+|`_amplificationCoefficient`|`uint256`|Amplification coefficient. The smaller it is the closer to a constant product we are.|
+|`_fee`|`uint256`|Trade fee, given as an integer with 1e10 precision|
+
+
+### getExcessDollarsDistributor
+
+Returns excess dollars distributor address
+
+
+```solidity
+function getExcessDollarsDistributor(address _creditNftManagerAddress) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftManagerAddress`|`address`|Credit NFT manager address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Excess dollars distributor address|
+
+
+### stakingContractAddress
+
+Returns staking address
+
+
+```solidity
+function stakingContractAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Staking address|
+
+
+### stakingShareAddress
+
+Returns staking share address
+
+
+```solidity
+function stakingShareAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Staking share address|
+
+
+### stableSwapMetaPoolAddress
+
+Returns Curve MetaPool address for Dollar-3CRV LP pair
+
+
+```solidity
+function stableSwapMetaPoolAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Curve MetaPool address|
+
+
+### dollarTokenAddress
+
+Returns Dollar token address
+
+
+```solidity
+function dollarTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Dollar token address|
+
+
+### governanceTokenAddress
+
+Returns Governance token address
+
+
+```solidity
+function governanceTokenAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Governance token address|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityDollarToken.sol/interface.IUbiquityDollarToken.md b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityDollarToken.sol/interface.IUbiquityDollarToken.md
new file mode 100644
index 000000000..2643f8762
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityDollarToken.sol/interface.IUbiquityDollarToken.md
@@ -0,0 +1,64 @@
+# IUbiquityDollarToken
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IUbiquityDollarToken.sol)
+
+**Inherits:**
+[IERC20Ubiquity](/src/dollar/interfaces/IERC20Ubiquity.sol/interface.IERC20Ubiquity.md)
+
+Ubiquity Dollar token interface
+
+
+## Functions
+### setIncentiveContract
+
+Sets `incentive` contract for `account`
+
+Incentive contracts are applied on Dollar transfers:
+- EOA => contract
+- contract => EOA
+- contract => contract
+- any transfer global incentive
+
+
+```solidity
+function setIncentiveContract(address account, address incentive) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Account to incentivize|
+|`incentive`|`address`|Incentive contract address|
+
+
+### incentiveContract
+
+Returns incentive contract address for `account`
+
+*Address is 0 if there is no incentive contract for the account*
+
+
+```solidity
+function incentiveContract(address account) external view returns (address);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address for which we should retrieve an incentive contract|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Incentive contract address|
+
+
+## Events
+### IncentiveContractUpdate
+Emitted on setting an incentive contract for an account
+
+
+```solidity
+event IncentiveContractUpdate(address indexed _incentivized, address indexed _incentiveContract);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityFormulas.sol/interface.IUbiquityFormulas.md b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityFormulas.sol/interface.IUbiquityFormulas.md
new file mode 100644
index 000000000..aef29ae44
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityFormulas.sol/interface.IUbiquityFormulas.md
@@ -0,0 +1,155 @@
+# IUbiquityFormulas
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IUbiquityFormulas.sol)
+
+Interface for staking formulas
+
+
+## Functions
+### durationMultiply
+
+Formula duration multiply
+
+`_shares = (1 + _multiplier * _weeks^3/2) * _uLP`
+
+`D32 = D^3/2`
+
+`S = m * D32 * A + A`
+
+
+```solidity
+function durationMultiply(uint256 _uLP, uint256 _weeks, uint256 _multiplier) external pure returns (uint256 _shares);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_uLP`|`uint256`|Amount of LP tokens|
+|`_weeks`|`uint256`|Minimum duration of staking period|
+|`_multiplier`|`uint256`|Staking discount multiplier = 0.0001|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_shares`|`uint256`|Amount of shares|
+
+
+### correctedAmountToWithdraw
+
+Formula to calculate the corrected amount to withdraw based on the proportion of
+LP deposited against actual LP tokens in the staking contract
+
+`corrected_amount = amount * (stakingLpBalance / totalLpDeposited)`
+
+If there is more or the same amount of LP than deposited then do nothing
+
+
+```solidity
+function correctedAmountToWithdraw(uint256 _totalLpDeposited, uint256 _stakingLpBalance, uint256 _amount)
+ external
+ pure
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_totalLpDeposited`|`uint256`|Total amount of LP deposited by users|
+|`_stakingLpBalance`|`uint256`|Actual staking contract LP tokens balance minus LP rewards|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP tokens to redeem|
+
+
+### lpRewardsAddLiquidityNormalization
+
+Formula may add a decreasing rewards if locking end is near when adding liquidity
+
+`rewards = _amount`
+
+
+```solidity
+function lpRewardsAddLiquidityNormalization(
+ StakingShare.Stake memory _stake,
+ uint256[2] memory _shareInfo,
+ uint256 _amount
+) external pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### lpRewardsRemoveLiquidityNormalization
+
+Formula may add a decreasing rewards if locking end is near when removing liquidity
+
+`rewards = _amount`
+
+
+```solidity
+function lpRewardsRemoveLiquidityNormalization(
+ StakingShare.Stake memory _stake,
+ uint256[2] memory _shareInfo,
+ uint256 _amount
+) external pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### sharesForLP
+
+Formula of governance rights corresponding to a staking shares LP amount
+
+Used on removing liquidity from staking
+
+`shares = (stake.shares * _amount) / stake.lpAmount`
+
+
+```solidity
+function sharesForLP(StakingShare.Stake memory _stake, uint256[2] memory _shareInfo, uint256 _amount)
+ external
+ pure
+ returns (uint256 _uLP);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_uLP`|`uint256`|Amount of shares|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityGovernance.sol/interface.IUbiquityGovernanceToken.md b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityGovernance.sol/interface.IUbiquityGovernanceToken.md
new file mode 100644
index 000000000..dc7a47938
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityGovernance.sol/interface.IUbiquityGovernanceToken.md
@@ -0,0 +1,9 @@
+# IUbiquityGovernanceToken
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IUbiquityGovernance.sol)
+
+**Inherits:**
+[IERC20Ubiquity](/src/dollar/interfaces/IERC20Ubiquity.sol/interface.IERC20Ubiquity.md)
+
+Ubiquity Governance token interface
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityPool.sol/interface.IUbiquityPool.md b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityPool.sol/interface.IUbiquityPool.md
new file mode 100644
index 000000000..e5327b92f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/IUbiquityPool.sol/interface.IUbiquityPool.md
@@ -0,0 +1,637 @@
+# IUbiquityPool
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/IUbiquityPool.sol)
+
+Ubiquity pool interface
+
+Allows users to:
+- deposit collateral in exchange for Ubiquity Dollars
+- redeem Ubiquity Dollars in exchange for the earlier provided collateral
+
+
+## Functions
+### allCollaterals
+
+Returns all collateral addresses
+
+
+```solidity
+function allCollaterals() external view returns (address[] memory);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address[]`|All collateral addresses|
+
+
+### collateralInformation
+
+Returns collateral information
+
+
+```solidity
+function collateralInformation(address collateralAddress)
+ external
+ view
+ returns (LibUbiquityPool.CollateralInformation memory returnData);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAddress`|`address`|Address of the collateral token|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`returnData`|`LibUbiquityPool.CollateralInformation`|Collateral info|
+
+
+### collateralRatio
+
+Returns current collateral ratio
+
+
+```solidity
+function collateralRatio() external view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Collateral ratio|
+
+
+### collateralUsdBalance
+
+Returns USD value of all collateral tokens held in the pool, in E18
+
+
+```solidity
+function collateralUsdBalance() external view returns (uint256 balanceTally);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`balanceTally`|`uint256`|USD value of all collateral tokens|
+
+
+### ethUsdPriceFeedInformation
+
+Returns chainlink price feed information for ETH/USD pair
+
+
+```solidity
+function ethUsdPriceFeedInformation() external view returns (address, uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Price feed address and staleness threshold in seconds|
+|``|`uint256`||
+
+
+### freeCollateralBalance
+
+Returns free collateral balance (i.e. that can be borrowed by AMO minters)
+
+
+```solidity
+function freeCollateralBalance(uint256 collateralIndex) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|collateral token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of free collateral|
+
+
+### getDollarInCollateral
+
+Returns Dollar value in collateral tokens
+
+
+```solidity
+function getDollarInCollateral(uint256 collateralIndex, uint256 dollarAmount) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|collateral token index|
+|`dollarAmount`|`uint256`|Amount of Dollars|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Value in collateral tokens|
+
+
+### getDollarPriceUsd
+
+Returns Ubiquity Dollar token USD price (1e6 precision) from Curve Metapool (Ubiquity Dollar, Curve Tri-Pool LP)
+
+
+```solidity
+function getDollarPriceUsd() external view returns (uint256 dollarPriceUsd);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarPriceUsd`|`uint256`|USD price of Ubiquity Dollar|
+
+
+### getGovernancePriceUsd
+
+Returns Governance token price in USD (6 decimals precision)
+
+*How it works:
+1. Fetch ETH/USD price from chainlink oracle
+2. Fetch Governance/ETH price from Curve's oracle
+3. Calculate Governance token price in USD*
+
+
+```solidity
+function getGovernancePriceUsd() external view returns (uint256 governancePriceUsd);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`governancePriceUsd`|`uint256`|Governance token price in USD|
+
+
+### getRedeemCollateralBalance
+
+Returns user's balance available for redemption
+
+
+```solidity
+function getRedeemCollateralBalance(address userAddress, uint256 collateralIndex) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`userAddress`|`address`|User address|
+|`collateralIndex`|`uint256`|Collateral token index|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|User's balance available for redemption|
+
+
+### getRedeemGovernanceBalance
+
+Returns user's Governance tokens balance available for redemption
+
+
+```solidity
+function getRedeemGovernanceBalance(address userAddress) external view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`userAddress`|`address`|User address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|User's Governance tokens balance available for redemption|
+
+
+### governanceEthPoolAddress
+
+Returns pool address for Governance/ETH pair
+
+
+```solidity
+function governanceEthPoolAddress() external view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Pool address|
+
+
+### stableUsdPriceFeedInformation
+
+Returns chainlink price feed information for stable/USD pair
+
+*Here stable coin refers to the 1st coin in the Curve's stable/Dollar plain pool*
+
+
+```solidity
+function stableUsdPriceFeedInformation() external view returns (address, uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Price feed address and staleness threshold in seconds|
+|``|`uint256`||
+
+
+### mintDollar
+
+Mints Dollars in exchange for collateral tokens
+
+
+```solidity
+function mintDollar(
+ uint256 collateralIndex,
+ uint256 dollarAmount,
+ uint256 dollarOutMin,
+ uint256 maxCollateralIn,
+ uint256 maxGovernanceIn,
+ bool isOneToOne
+) external returns (uint256 totalDollarMint, uint256 collateralNeeded, uint256 governanceNeeded);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`dollarAmount`|`uint256`|Amount of dollars to mint|
+|`dollarOutMin`|`uint256`|Min amount of dollars to mint (slippage protection)|
+|`maxCollateralIn`|`uint256`|Max amount of collateral to send (slippage protection)|
+|`maxGovernanceIn`|`uint256`|Max amount of Governance tokens to send (slippage protection)|
+|`isOneToOne`|`bool`|Force providing only collateral without Governance tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`totalDollarMint`|`uint256`|Amount of Dollars minted|
+|`collateralNeeded`|`uint256`|Amount of collateral sent to the pool|
+|`governanceNeeded`|`uint256`|Amount of Governance tokens burnt from sender|
+
+
+### redeemDollar
+
+Burns redeemable Ubiquity Dollars and sends back 1 USD of collateral token for every 1 Ubiquity Dollar burned
+
+*Redeem process is split in two steps:*
+
+*1. `redeemDollar()`*
+
+*2. `collectRedemption()`*
+
+*This is done in order to prevent someone using a flash loan of a collateral token to mint, redeem, and collect in a single transaction/block*
+
+
+```solidity
+function redeemDollar(uint256 collateralIndex, uint256 dollarAmount, uint256 governanceOutMin, uint256 collateralOutMin)
+ external
+ returns (uint256 collateralOut, uint256 governanceOut);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index being withdrawn|
+|`dollarAmount`|`uint256`|Amount of Ubiquity Dollars being burned|
+|`governanceOutMin`|`uint256`|Minimum amount of Governance tokens that'll be withdrawn, used to set acceptable slippage|
+|`collateralOutMin`|`uint256`|Minimum amount of collateral tokens that'll be withdrawn, used to set acceptable slippage|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralOut`|`uint256`|Amount of collateral tokens ready for redemption|
+|`governanceOut`|`uint256`||
+
+
+### collectRedemption
+
+Used to collect collateral tokens after redeeming/burning Ubiquity Dollars
+
+*Redeem process is split in two steps:*
+
+*1. `redeemDollar()`*
+
+*2. `collectRedemption()`*
+
+*This is done in order to prevent someone using a flash loan of a collateral token to mint, redeem, and collect in a single transaction/block*
+
+
+```solidity
+function collectRedemption(uint256 collateralIndex)
+ external
+ returns (uint256 governanceAmount, uint256 collateralAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index being collected|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`governanceAmount`|`uint256`|Amount of Governance tokens redeemed|
+|`collateralAmount`|`uint256`|Amount of collateral tokens redeemed|
+
+
+### updateChainLinkCollateralPrice
+
+Updates collateral token price in USD from ChainLink price feed
+
+
+```solidity
+function updateChainLinkCollateralPrice(uint256 collateralIndex) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+
+
+### amoMinterBorrow
+
+Allows AMO minters to borrow collateral to make yield in external
+protocols like Compound, Curve, erc...
+
+*Bypasses the gassy mint->redeem cycle for AMOs to borrow collateral*
+
+
+```solidity
+function amoMinterBorrow(uint256 collateralAmount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAmount`|`uint256`|Amount of collateral to borrow|
+
+
+### addAmoMinter
+
+Adds a new AMO minter
+
+
+```solidity
+function addAmoMinter(address amoMinterAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amoMinterAddress`|`address`|AMO minter address|
+
+
+### addCollateralToken
+
+Adds a new collateral token
+
+
+```solidity
+function addCollateralToken(address collateralAddress, address chainLinkPriceFeedAddress, uint256 poolCeiling)
+ external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAddress`|`address`|Collateral token address|
+|`chainLinkPriceFeedAddress`|`address`|Chainlink's price feed address|
+|`poolCeiling`|`uint256`|Max amount of available tokens for collateral|
+
+
+### removeAmoMinter
+
+Removes AMO minter
+
+
+```solidity
+function removeAmoMinter(address amoMinterAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amoMinterAddress`|`address`|AMO minter address to remove|
+
+
+### setCollateralChainLinkPriceFeed
+
+Sets collateral ChainLink price feed params
+
+
+```solidity
+function setCollateralChainLinkPriceFeed(
+ address collateralAddress,
+ address chainLinkPriceFeedAddress,
+ uint256 stalenessThreshold
+) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralAddress`|`address`|Collateral token address|
+|`chainLinkPriceFeedAddress`|`address`|ChainLink price feed address|
+|`stalenessThreshold`|`uint256`|Threshold in seconds when chainlink answer should be considered stale|
+
+
+### setCollateralRatio
+
+Sets collateral ratio
+
+*How much collateral/governance tokens user should provide/get to mint/redeem Dollar tokens, 1e6 precision*
+
+*Example (1_000_000 = 100%):
+- Mint: user provides 1 collateral token to get 1 Dollar
+- Redeem: user gets 1 collateral token for 1 Dollar*
+
+*Example (900_000 = 90%):
+- Mint: user provides 0.9 collateral token and 0.1 Governance token to get 1 Dollar
+- Redeem: user gets 0.9 collateral token and 0.1 Governance token for 1 Dollar*
+
+
+```solidity
+function setCollateralRatio(uint256 newCollateralRatio) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newCollateralRatio`|`uint256`|New collateral ratio|
+
+
+### setEthUsdChainLinkPriceFeed
+
+Sets chainlink params for ETH/USD price feed
+
+
+```solidity
+function setEthUsdChainLinkPriceFeed(address newPriceFeedAddress, uint256 newStalenessThreshold) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newPriceFeedAddress`|`address`|New chainlink price feed address for ETH/USD pair|
+|`newStalenessThreshold`|`uint256`|New threshold in seconds when chainlink's ETH/USD price feed answer should be considered stale|
+
+
+### setFees
+
+Sets mint and redeem fees, 1_000_000 = 100%
+
+
+```solidity
+function setFees(uint256 collateralIndex, uint256 newMintFee, uint256 newRedeemFee) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`newMintFee`|`uint256`|New mint fee|
+|`newRedeemFee`|`uint256`|New redeem fee|
+
+
+### setGovernanceEthPoolAddress
+
+Sets a new pool address for Governance/ETH pair
+
+*Based on Curve's CurveTwocryptoOptimized contract. Used for fetching Governance token USD price.
+How it works:
+1. Fetch Governance/ETH price from CurveTwocryptoOptimized's built-in oracle
+2. Fetch ETH/USD price from chainlink feed
+3. Calculate Governance token price in USD*
+
+
+```solidity
+function setGovernanceEthPoolAddress(address newGovernanceEthPoolAddress) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newGovernanceEthPoolAddress`|`address`|New pool address for Governance/ETH pair|
+
+
+### setPoolCeiling
+
+Sets max amount of collateral for a particular collateral token
+
+
+```solidity
+function setPoolCeiling(uint256 collateralIndex, uint256 newCeiling) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`newCeiling`|`uint256`|Max amount of collateral|
+
+
+### setPriceThresholds
+
+Sets mint and redeem price thresholds, 1_000_000 = $1.00
+
+
+```solidity
+function setPriceThresholds(uint256 newMintPriceThreshold, uint256 newRedeemPriceThreshold) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newMintPriceThreshold`|`uint256`|New mint price threshold|
+|`newRedeemPriceThreshold`|`uint256`|New redeem price threshold|
+
+
+### setRedemptionDelayBlocks
+
+Sets a redemption delay in blocks
+
+*Redeeming is split in 2 actions:*
+
+*1. `redeemDollar()`*
+
+*2. `collectRedemption()`*
+
+*`newRedemptionDelayBlocks` sets number of blocks that should be mined after which user can call `collectRedemption()`*
+
+
+```solidity
+function setRedemptionDelayBlocks(uint256 newRedemptionDelayBlocks) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newRedemptionDelayBlocks`|`uint256`|Redemption delay in blocks|
+
+
+### setStableUsdChainLinkPriceFeed
+
+Sets chainlink params for stable/USD price feed
+
+*Here stable coin refers to the 1st coin in the Curve's stable/Dollar plain pool*
+
+
+```solidity
+function setStableUsdChainLinkPriceFeed(address newPriceFeedAddress, uint256 newStalenessThreshold) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`newPriceFeedAddress`|`address`|New chainlink price feed address for stable/USD pair|
+|`newStalenessThreshold`|`uint256`|New threshold in seconds when chainlink's stable/USD price feed answer should be considered stale|
+
+
+### toggleCollateral
+
+Toggles (i.e. enables/disables) a particular collateral token
+
+
+```solidity
+function toggleCollateral(uint256 collateralIndex) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+
+
+### toggleMintRedeemBorrow
+
+Toggles pause for mint/redeem/borrow methods
+
+
+```solidity
+function toggleMintRedeemBorrow(uint256 collateralIndex, uint8 toggleIndex) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`collateralIndex`|`uint256`|Collateral token index|
+|`toggleIndex`|`uint8`|Method index. 0 - toggle mint pause, 1 - toggle redeem pause, 2 - toggle borrow by AMO pause|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/README.md b/packages/contracts/docs/src/src/dollar/interfaces/README.md
new file mode 100644
index 000000000..07bf9c282
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/README.md
@@ -0,0 +1,33 @@
+
+
+# Contents
+- [utils](/src/dollar/interfaces/utils)
+- [IAccessControl](IAccessControl.sol/interface.IAccessControl.md)
+- [IBondingCurve](IBondingCurve.sol/interface.IBondingCurve.md)
+- [ICreditNft](ICreditNft.sol/interface.ICreditNft.md)
+- [ICreditNftManager](ICreditNftManager.sol/interface.ICreditNftManager.md)
+- [ICreditNftRedemptionCalculator](ICreditNftRedemptionCalculator.sol/interface.ICreditNftRedemptionCalculator.md)
+- [ICreditRedemptionCalculator](ICreditRedemptionCalculator.sol/interface.ICreditRedemptionCalculator.md)
+- [ICurveFactory](ICurveFactory.sol/interface.ICurveFactory.md)
+- [ICurveStableSwapFactoryNG](ICurveStableSwapFactoryNG.sol/interface.ICurveStableSwapFactoryNG.md)
+- [ICurveStableSwapMetaNG](ICurveStableSwapMetaNG.sol/interface.ICurveStableSwapMetaNG.md)
+- [ICurveStableSwapNG](ICurveStableSwapNG.sol/interface.ICurveStableSwapNG.md)
+- [ICurveTwocryptoOptimized](ICurveTwocryptoOptimized.sol/interface.ICurveTwocryptoOptimized.md)
+- [IDepositZap](IDepositZap.sol/interface.IDepositZap.md)
+- [IDiamondCut](IDiamondCut.sol/interface.IDiamondCut.md)
+- [IDiamondLoupe](IDiamondLoupe.sol/interface.IDiamondLoupe.md)
+- [IDollarAmoMinter](IDollarAmoMinter.sol/interface.IDollarAmoMinter.md)
+- [IDollarMintCalculator](IDollarMintCalculator.sol/interface.IDollarMintCalculator.md)
+- [IDollarMintExcess](IDollarMintExcess.sol/interface.IDollarMintExcess.md)
+- [IERC1155Ubiquity](IERC1155Ubiquity.sol/interface.IERC1155Ubiquity.md)
+- [IERC173](IERC173.sol/interface.IERC173.md)
+- [IERC20Ubiquity](IERC20Ubiquity.sol/interface.IERC20Ubiquity.md)
+- [IStableSwap3Pool](IStableSwap3Pool.sol/interface.IStableSwap3Pool.md)
+- [IStaking](IStaking.sol/interface.IStaking.md)
+- [IStakingShare](IStakingShare.sol/interface.IStakingShare.md)
+- [IUbiquityChef](IUbiquityChef.sol/interface.IUbiquityChef.md)
+- [IUbiquityDollarManager](IUbiquityDollarManager.sol/interface.IUbiquityDollarManager.md)
+- [IUbiquityDollarToken](IUbiquityDollarToken.sol/interface.IUbiquityDollarToken.md)
+- [IUbiquityFormulas](IUbiquityFormulas.sol/interface.IUbiquityFormulas.md)
+- [IUbiquityGovernanceToken](IUbiquityGovernance.sol/interface.IUbiquityGovernanceToken.md)
+- [IUbiquityPool](IUbiquityPool.sol/interface.IUbiquityPool.md)
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/utils/ICollectableDust.sol/interface.ICollectableDust.md b/packages/contracts/docs/src/src/dollar/interfaces/utils/ICollectableDust.sol/interface.ICollectableDust.md
new file mode 100644
index 000000000..f22e7413f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/utils/ICollectableDust.sol/interface.ICollectableDust.md
@@ -0,0 +1,79 @@
+# ICollectableDust
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/interfaces/utils/ICollectableDust.sol)
+
+Interface for collecting dust (i.e. not part of a protocol) tokens sent to a contract
+
+
+## Functions
+### addProtocolToken
+
+Adds token address to a protocol
+
+
+```solidity
+function addProtocolToken(address _token) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token`|`address`|Token address to add|
+
+
+### removeProtocolToken
+
+Removes token address from a protocol
+
+
+```solidity
+function removeProtocolToken(address _token) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token`|`address`|Token address to remove|
+
+
+### sendDust
+
+Sends dust tokens (which are not part of a protocol) to the `_to` address
+
+
+```solidity
+function sendDust(address _to, address _token, uint256 _amount) external;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_to`|`address`|Tokens receiver address|
+|`_token`|`address`|Token address to send|
+|`_amount`|`uint256`|Amount of tokens to send|
+
+
+## Events
+### DustSent
+Emitted when dust tokens are sent to the `_to` address
+
+
+```solidity
+event DustSent(address _to, address token, uint256 amount);
+```
+
+### ProtocolTokenAdded
+Emitted when token is added to a protocol
+
+
+```solidity
+event ProtocolTokenAdded(address _token);
+```
+
+### ProtocolTokenRemoved
+Emitted when token is removed from a protocol
+
+
+```solidity
+event ProtocolTokenRemoved(address _token);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/interfaces/utils/README.md b/packages/contracts/docs/src/src/dollar/interfaces/utils/README.md
new file mode 100644
index 000000000..5b28a13c7
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/interfaces/utils/README.md
@@ -0,0 +1,4 @@
+
+
+# Contents
+- [ICollectableDust](ICollectableDust.sol/interface.ICollectableDust.md)
diff --git a/packages/contracts/docs/src/src/dollar/libraries/AddressUtils.sol/library.AddressUtils.md b/packages/contracts/docs/src/src/dollar/libraries/AddressUtils.sol/library.AddressUtils.md
new file mode 100644
index 000000000..43f50f4e0
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/AddressUtils.sol/library.AddressUtils.md
@@ -0,0 +1,214 @@
+# AddressUtils
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/AddressUtils.sol)
+
+Address utils
+
+*https://github.com/solidstate-network/solidstate-solidity/blob/master/contracts/utils/AddressUtils.sol*
+
+
+## Functions
+### toString
+
+Converts address to string
+
+
+```solidity
+function toString(address account) internal pure returns (string memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to convert|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`string`|String representation of `account`|
+
+
+### isContract
+
+Checks whether `account` has code
+
+*NOTICE: NOT SAFE, can be circumvented in the `constructor()`*
+
+
+```solidity
+function isContract(address account) internal view returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `account` has code|
+
+
+### sendValue
+
+Sends ETH to `account`
+
+
+```solidity
+function sendValue(address payable account, uint256 amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address payable`|Address where to send ETH|
+|`amount`|`uint256`|Amount of ETH to send|
+
+
+### functionCall
+
+Calls `target` with `data`
+
+
+```solidity
+function functionCall(address target, bytes memory data) internal returns (bytes memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Target address|
+|`data`|`bytes`|Data to pass|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes`|Response bytes|
+
+
+### functionCall
+
+Calls `target` with `data`
+
+
+```solidity
+function functionCall(address target, bytes memory data, string memory error) internal returns (bytes memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Target address|
+|`data`|`bytes`|Data to pass|
+|`error`|`string`|Text error|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes`|Response bytes|
+
+
+### functionCallWithValue
+
+Calls `target` with `data`
+
+
+```solidity
+function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Target address|
+|`data`|`bytes`|Data to pass|
+|`value`|`uint256`|Amount of ETH to send|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes`|Response bytes|
+
+
+### functionCallWithValue
+
+Calls `target` with `data`
+
+
+```solidity
+function functionCallWithValue(address target, bytes memory data, uint256 value, string memory error)
+ internal
+ returns (bytes memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Target address|
+|`data`|`bytes`|Data to pass|
+|`value`|`uint256`|Amount of ETH to send|
+|`error`|`string`|Text error|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes`|Response bytes|
+
+
+### _functionCallWithValue
+
+Calls `target` with `data`
+
+
+```solidity
+function _functionCallWithValue(address target, bytes memory data, uint256 value, string memory error)
+ private
+ returns (bytes memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Target address|
+|`data`|`bytes`|Data to pass|
+|`value`|`uint256`|Amount of ETH to send|
+|`error`|`string`|Text error|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes`|Response bytes|
+
+
+## Errors
+### AddressUtils__InsufficientBalance
+Thrown on insufficient balance
+
+
+```solidity
+error AddressUtils__InsufficientBalance();
+```
+
+### AddressUtils__NotContract
+Thrown when target address has no code
+
+
+```solidity
+error AddressUtils__NotContract();
+```
+
+### AddressUtils__SendValueFailed
+Thrown when sending ETH failed
+
+
+```solidity
+error AddressUtils__SendValueFailed();
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/Constants.sol/constants.Constants.md b/packages/contracts/docs/src/src/dollar/libraries/Constants.sol/constants.Constants.md
new file mode 100644
index 000000000..11ab11368
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/Constants.sol/constants.Constants.md
@@ -0,0 +1,187 @@
+# Constants
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/Constants.sol)
+
+### DEFAULT_ADMIN_ROLE
+*Default admin role name*
+
+
+```solidity
+bytes32 constant DEFAULT_ADMIN_ROLE = 0x00;
+```
+
+### GOVERNANCE_TOKEN_MINTER_ROLE
+*Role name for Governance tokens minter*
+
+
+```solidity
+bytes32 constant GOVERNANCE_TOKEN_MINTER_ROLE = keccak256("GOVERNANCE_TOKEN_MINTER_ROLE");
+```
+
+### GOVERNANCE_TOKEN_BURNER_ROLE
+*Role name for Governance tokens burner*
+
+
+```solidity
+bytes32 constant GOVERNANCE_TOKEN_BURNER_ROLE = keccak256("GOVERNANCE_TOKEN_BURNER_ROLE");
+```
+
+### STAKING_SHARE_MINTER_ROLE
+*Role name for staking share minter*
+
+
+```solidity
+bytes32 constant STAKING_SHARE_MINTER_ROLE = keccak256("STAKING_SHARE_MINTER_ROLE");
+```
+
+### STAKING_SHARE_BURNER_ROLE
+*Role name for staking share burner*
+
+
+```solidity
+bytes32 constant STAKING_SHARE_BURNER_ROLE = keccak256("STAKING_SHARE_BURNER_ROLE");
+```
+
+### CREDIT_TOKEN_MINTER_ROLE
+*Role name for Credit tokens minter*
+
+
+```solidity
+bytes32 constant CREDIT_TOKEN_MINTER_ROLE = keccak256("CREDIT_TOKEN_MINTER_ROLE");
+```
+
+### CREDIT_TOKEN_BURNER_ROLE
+*Role name for Credit tokens burner*
+
+
+```solidity
+bytes32 constant CREDIT_TOKEN_BURNER_ROLE = keccak256("CREDIT_TOKEN_BURNER_ROLE");
+```
+
+### DOLLAR_TOKEN_MINTER_ROLE
+*Role name for Dollar tokens minter*
+
+
+```solidity
+bytes32 constant DOLLAR_TOKEN_MINTER_ROLE = keccak256("DOLLAR_TOKEN_MINTER_ROLE");
+```
+
+### DOLLAR_TOKEN_BURNER_ROLE
+*Role name for Dollar tokens burner*
+
+
+```solidity
+bytes32 constant DOLLAR_TOKEN_BURNER_ROLE = keccak256("DOLLAR_TOKEN_BURNER_ROLE");
+```
+
+### CURVE_DOLLAR_MANAGER_ROLE
+*Role name for Dollar manager*
+
+
+```solidity
+bytes32 constant CURVE_DOLLAR_MANAGER_ROLE = keccak256("CURVE_DOLLAR_MANAGER_ROLE");
+```
+
+### PAUSER_ROLE
+*Role name for pauser*
+
+
+```solidity
+bytes32 constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
+```
+
+### CREDIT_NFT_MANAGER_ROLE
+*Role name for Credit NFT manager*
+
+
+```solidity
+bytes32 constant CREDIT_NFT_MANAGER_ROLE = keccak256("CREDIT_NFT_MANAGER_ROLE");
+```
+
+### STAKING_MANAGER_ROLE
+*Role name for Staking manager*
+
+
+```solidity
+bytes32 constant STAKING_MANAGER_ROLE = keccak256("STAKING_MANAGER_ROLE");
+```
+
+### INCENTIVE_MANAGER_ROLE
+*Role name for inventive manager*
+
+
+```solidity
+bytes32 constant INCENTIVE_MANAGER_ROLE = keccak256("INCENTIVE_MANAGER");
+```
+
+### GOVERNANCE_TOKEN_MANAGER_ROLE
+*Role name for Governance token manager*
+
+
+```solidity
+bytes32 constant GOVERNANCE_TOKEN_MANAGER_ROLE = keccak256("GOVERNANCE_TOKEN_MANAGER_ROLE");
+```
+
+### ETH_ADDRESS
+*ETH pseudo address used to distinguish ERC20 tokens and ETH in `LibCollectableDust.sendDust()`*
+
+
+```solidity
+address constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
+```
+
+### ONE
+*1 ETH*
+
+
+```solidity
+uint256 constant ONE = uint256(1 ether);
+```
+
+### ACCURACY
+*Accuracy used in `LibBondingCurve`*
+
+
+```solidity
+uint256 constant ACCURACY = 10e18;
+```
+
+### MAX_WEIGHT
+*Max connector weight used in `LibBondingCurve`*
+
+
+```solidity
+uint32 constant MAX_WEIGHT = 1e6;
+```
+
+### PERMIT_TYPEHASH
+*keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");*
+
+
+```solidity
+bytes32 constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
+```
+
+### _NOT_ENTERED
+*Reentrancy constant*
+
+
+```solidity
+uint256 constant _NOT_ENTERED = 1;
+```
+
+### _ENTERED
+*Reentrancy constant*
+
+
+```solidity
+uint256 constant _ENTERED = 2;
+```
+
+### UBIQUITY_POOL_PRICE_PRECISION
+*Ubiquity pool price precision*
+
+
+```solidity
+uint256 constant UBIQUITY_POOL_PRICE_PRECISION = 1e6;
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/EnumerableSet.sol/library.EnumerableSet.md b/packages/contracts/docs/src/src/dollar/libraries/EnumerableSet.sol/library.EnumerableSet.md
new file mode 100644
index 000000000..c88d47602
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/EnumerableSet.sol/library.EnumerableSet.md
@@ -0,0 +1,361 @@
+# EnumerableSet
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/fc408f67cf3bb2985f27c3122e2ac2dfaafec2a2/src/dollar/libraries/EnumerableSet.sol)
+
+Set implementation with enumeration functions
+
+*Derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license)*
+
+*https://github.com/solidstate-network/solidstate-solidity/blob/master/contracts/data/EnumerableSet.sol*
+
+
+## Functions
+### at
+
+Returns the value stored at position `index` in the set. O(1).
+Note that there are no guarantees on the ordering of values inside the
+array, and it may change when more values are added or removed.
+Requirements:
+- `index` must be strictly less than {length}.
+
+
+```solidity
+function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Value of type `bytes32`|
+
+
+### at
+
+Returns the value stored at position `index` in the set. O(1).
+Note that there are no guarantees on the ordering of values inside the
+array, and it may change when more values are added or removed.
+Requirements:
+- `index` must be strictly less than {length}.
+
+
+```solidity
+function at(AddressSet storage set, uint256 index) internal view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Value of type `address`|
+
+
+### at
+
+Returns the value stored at position `index` in the set. O(1).
+Note that there are no guarantees on the ordering of values inside the
+array, and it may change when more values are added or removed.
+Requirements:
+- `index` must be strictly less than {length}.
+
+
+```solidity
+function at(UintSet storage set, uint256 index) internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Value of type `uint256`|
+
+
+### contains
+
+Returns true if the value of type `bytes32` is in the set. O(1).
+
+
+```solidity
+function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool);
+```
+
+### contains
+
+Returns true if the value of type `address` is in the set. O(1).
+
+
+```solidity
+function contains(AddressSet storage set, address value) internal view returns (bool);
+```
+
+### contains
+
+Returns true if the value of type `uint256` is in the set. O(1).
+
+
+```solidity
+function contains(UintSet storage set, uint256 value) internal view returns (bool);
+```
+
+### indexOf
+
+Returns index of the `value` of type `bytes32` in the `set`
+
+
+```solidity
+function indexOf(Bytes32Set storage set, bytes32 value) internal view returns (uint256);
+```
+
+### indexOf
+
+Returns index of the `value` of type `address` in the `set`
+
+
+```solidity
+function indexOf(AddressSet storage set, address value) internal view returns (uint256);
+```
+
+### indexOf
+
+Returns index of the `value` of type `uint256` in the `set`
+
+
+```solidity
+function indexOf(UintSet storage set, uint256 value) internal view returns (uint256);
+```
+
+### length
+
+Returns the number of values in the set. O(1).
+
+
+```solidity
+function length(Bytes32Set storage set) internal view returns (uint256);
+```
+
+### length
+
+Returns the number of values in the set. O(1).
+
+
+```solidity
+function length(AddressSet storage set) internal view returns (uint256);
+```
+
+### length
+
+Returns the number of values in the set. O(1).
+
+
+```solidity
+function length(UintSet storage set) internal view returns (uint256);
+```
+
+### add
+
+Adds a value of type `bytes32` to a set. O(1).
+Returns true if the value was added to the set, that is if it was not
+already present.
+
+
+```solidity
+function add(Bytes32Set storage set, bytes32 value) internal returns (bool);
+```
+
+### add
+
+Adds a value of type `address` to a set. O(1).
+Returns true if the value was added to the set, that is if it was not
+already present.
+
+
+```solidity
+function add(AddressSet storage set, address value) internal returns (bool);
+```
+
+### add
+
+Adds a value of type `uint256` to a set. O(1).
+Returns true if the value was added to the set, that is if it was not
+already present.
+
+
+```solidity
+function add(UintSet storage set, uint256 value) internal returns (bool);
+```
+
+### remove
+
+Removes a value of type `bytes32` from a set. O(1).
+Returns true if the value was removed from the set, that is if it was
+present.
+
+
+```solidity
+function remove(Bytes32Set storage set, bytes32 value) internal returns (bool);
+```
+
+### remove
+
+Removes a value of type `address` from a set. O(1).
+Returns true if the value was removed from the set, that is if it was
+present.
+
+
+```solidity
+function remove(AddressSet storage set, address value) internal returns (bool);
+```
+
+### remove
+
+Removes a value of type `uint256` from a set. O(1).
+Returns true if the value was removed from the set, that is if it was
+present.
+
+
+```solidity
+function remove(UintSet storage set, uint256 value) internal returns (bool);
+```
+
+### toArray
+
+Returns set values as an array of type `bytes32[]`
+
+
+```solidity
+function toArray(Bytes32Set storage set) internal view returns (bytes32[] memory);
+```
+
+### toArray
+
+Returns set values as an array of type `address[]`
+
+
+```solidity
+function toArray(AddressSet storage set) internal view returns (address[] memory);
+```
+
+### toArray
+
+Returns set values as an array of type `uint256[]`
+
+
+```solidity
+function toArray(UintSet storage set) internal view returns (uint256[] memory);
+```
+
+### _at
+
+Returns the value stored at position `index` in the set. O(1).
+Note that there are no guarantees on the ordering of values inside the
+array, and it may change when more values are added or removed.
+Requirements:
+- `index` must be strictly less than {length}.
+
+
+```solidity
+function _at(Set storage set, uint256 index) private view returns (bytes32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Value of type `bytes32`|
+
+
+### _contains
+
+Returns true if the value of type `bytes32` is in the set. O(1).
+
+
+```solidity
+function _contains(Set storage set, bytes32 value) private view returns (bool);
+```
+
+### _indexOf
+
+Returns index of the `value` of type `bytes32` in the `set`
+
+
+```solidity
+function _indexOf(Set storage set, bytes32 value) private view returns (uint256);
+```
+
+### _length
+
+Returns the number of values in the set. O(1).
+
+
+```solidity
+function _length(Set storage set) private view returns (uint256);
+```
+
+### _add
+
+Adds a value of type `bytes32` to a set. O(1).
+Returns true if the value was added to the set, that is if it was not
+already present.
+
+
+```solidity
+function _add(Set storage set, bytes32 value) private returns (bool ret);
+```
+
+### _remove
+
+Removes a value of type `bytes32` from a set. O(1).
+Returns true if the value was removed from the set, that is if it was
+present.
+
+
+```solidity
+function _remove(Set storage set, bytes32 value) private returns (bool ret);
+```
+
+## Errors
+### EnumerableSet__IndexOutOfBounds
+Thrown when index does not exist
+
+
+```solidity
+error EnumerableSet__IndexOutOfBounds();
+```
+
+## Structs
+### Set
+Set struct
+
+
+```solidity
+struct Set {
+ bytes32[] _values;
+ mapping(bytes32 => uint256) _indexes;
+}
+```
+
+### Bytes32Set
+Bytes32Set
+
+
+```solidity
+struct Bytes32Set {
+ Set _inner;
+}
+```
+
+### AddressSet
+AddressSet
+
+
+```solidity
+struct AddressSet {
+ Set _inner;
+}
+```
+
+### UintSet
+UintSet
+
+
+```solidity
+struct UintSet {
+ Set _inner;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibAccessControl.sol/library.LibAccessControl.md b/packages/contracts/docs/src/src/dollar/libraries/LibAccessControl.sol/library.LibAccessControl.md
new file mode 100644
index 000000000..03278173d
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibAccessControl.sol/library.LibAccessControl.md
@@ -0,0 +1,275 @@
+# LibAccessControl
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibAccessControl.sol)
+
+Access control library
+
+
+## State Variables
+### ACCESS_CONTROL_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant ACCESS_CONTROL_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.access.control.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### accessControlStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function accessControlStorage() internal pure returns (Layout storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`Layout`|Struct used as a storage|
+
+
+### onlyRole
+
+Checks that a method can only be called by the provided role
+
+
+```solidity
+modifier onlyRole(bytes32 role);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role name|
+
+
+### paused
+
+Returns true if the contract is paused and false otherwise
+
+
+```solidity
+function paused() internal view returns (bool);
+```
+
+### hasRole
+
+Checks whether role is assigned to account
+
+
+```solidity
+function hasRole(bytes32 role, address account) internal view returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to check|
+|`account`|`address`|Address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether role is assigned to account|
+
+
+### checkRole
+
+Reverts if sender does not have a given role
+
+
+```solidity
+function checkRole(bytes32 role) internal view;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+
+
+### checkRole
+
+Reverts if given account does not have a given role
+
+
+```solidity
+function checkRole(bytes32 role, address account) internal view;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+|`account`|`address`|Address to query|
+
+
+### getRoleAdmin
+
+Returns admin role for a given role
+
+
+```solidity
+function getRoleAdmin(bytes32 role) internal view returns (bytes32);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to query|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes32`|Admin role for a provided role|
+
+
+### setRoleAdmin
+
+Sets a new admin role for a provided role
+
+
+```solidity
+function setRoleAdmin(bytes32 role, bytes32 adminRole) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role for which admin role should be set|
+|`adminRole`|`bytes32`|Admin role to set|
+
+
+### grantRole
+
+Assigns role to a given account
+
+
+```solidity
+function grantRole(bytes32 role, address account) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to assign|
+|`account`|`address`|Recipient of role assignment|
+
+
+### revokeRole
+
+Unassign role from a given account
+
+
+```solidity
+function revokeRole(bytes32 role, address account) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to unassign|
+|`account`|`address`|Address from which the provided role should be unassigned|
+
+
+### renounceRole
+
+Renounces role
+
+
+```solidity
+function renounceRole(bytes32 role) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`role`|`bytes32`|Role to renounce|
+
+
+### pause
+
+Pauses the contract
+
+
+```solidity
+function pause() internal;
+```
+
+### unpause
+
+Unpauses the contract
+
+
+```solidity
+function unpause() internal;
+```
+
+## Events
+### RoleAdminChanged
+Emitted when admin role of a role is updated
+
+
+```solidity
+event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
+```
+
+### RoleGranted
+Emitted when role is granted to account
+
+
+```solidity
+event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
+```
+
+### RoleRevoked
+Emitted when role is revoked from account
+
+
+```solidity
+event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
+```
+
+### Paused
+Emitted when the pause is triggered by `account`
+
+
+```solidity
+event Paused(address account);
+```
+
+### Unpaused
+Emitted when the pause is lifted by `account`
+
+
+```solidity
+event Unpaused(address account);
+```
+
+## Structs
+### RoleData
+Structure to keep all role members with their admin role
+
+
+```solidity
+struct RoleData {
+ EnumerableSet.AddressSet members;
+ bytes32 adminRole;
+}
+```
+
+### Layout
+Structure to keep all protocol roles
+
+
+```solidity
+struct Layout {
+ mapping(bytes32 => RoleData) roles;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md b/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md
new file mode 100644
index 000000000..74cdcf091
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/contract.Modifiers.md
@@ -0,0 +1,151 @@
+# Modifiers
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibAppStorage.sol)
+
+Contract includes modifiers shared across all protocol's contracts
+
+
+## State Variables
+### store
+Shared struct used as a storage across all protocol's contracts
+
+
+```solidity
+AppStorage internal store;
+```
+
+
+## Functions
+### nonReentrant
+
+Prevents a contract from calling itself, directly or indirectly.
+Calling a `nonReentrant` function from another `nonReentrant`
+function is not supported. It is possible to prevent this from happening
+by making the `nonReentrant` function external, and making it call a
+`private` function that does the actual work.
+
+*Works identically to OZ's nonReentrant.*
+
+*Used to avoid state storage collision within diamond.*
+
+
+```solidity
+modifier nonReentrant();
+```
+
+### onlyOwner
+
+Checks that method is called by a contract owner
+
+
+```solidity
+modifier onlyOwner();
+```
+
+### onlyCreditNftManager
+
+Checks that method is called by address with the `CREDIT_NFT_MANAGER_ROLE` role
+
+
+```solidity
+modifier onlyCreditNftManager();
+```
+
+### onlyAdmin
+
+Checks that method is called by address with the `DEFAULT_ADMIN_ROLE` role
+
+
+```solidity
+modifier onlyAdmin();
+```
+
+### onlyMinter
+
+Checks that method is called by address with the `GOVERNANCE_TOKEN_MINTER_ROLE` role
+
+
+```solidity
+modifier onlyMinter();
+```
+
+### onlyBurner
+
+Checks that method is called by address with the `GOVERNANCE_TOKEN_BURNER_ROLE` role
+
+
+```solidity
+modifier onlyBurner();
+```
+
+### whenNotPaused
+
+Modifier to make a function callable only when the contract is not paused
+
+
+```solidity
+modifier whenNotPaused();
+```
+
+### whenPaused
+
+Modifier to make a function callable only when the contract is paused
+
+
+```solidity
+modifier whenPaused();
+```
+
+### onlyStakingManager
+
+Checks that method is called by address with the `STAKING_MANAGER_ROLE` role
+
+
+```solidity
+modifier onlyStakingManager();
+```
+
+### onlyPauser
+
+Checks that method is called by address with the `PAUSER_ROLE` role
+
+
+```solidity
+modifier onlyPauser();
+```
+
+### onlyTokenManager
+
+Checks that method is called by address with the `GOVERNANCE_TOKEN_MANAGER_ROLE` role
+
+
+```solidity
+modifier onlyTokenManager();
+```
+
+### onlyIncentiveAdmin
+
+Checks that method is called by address with the `INCENTIVE_MANAGER_ROLE` role
+
+
+```solidity
+modifier onlyIncentiveAdmin();
+```
+
+### onlyDollarManager
+
+Checks that method is called by address with the `CURVE_DOLLAR_MANAGER_ROLE` role
+
+
+```solidity
+modifier onlyDollarManager();
+```
+
+### _initReentrancyGuard
+
+Initializes reentrancy guard on contract deployment
+
+
+```solidity
+function _initReentrancyGuard() internal;
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/library.LibAppStorage.md b/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/library.LibAppStorage.md
new file mode 100644
index 000000000..7421abd3b
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/library.LibAppStorage.md
@@ -0,0 +1,22 @@
+# LibAppStorage
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibAppStorage.sol)
+
+Library used as a shared storage among all protocol libraries
+
+
+## Functions
+### appStorage
+
+Returns `AppStorage` struct used as a shared storage among all libraries
+
+
+```solidity
+function appStorage() internal pure returns (AppStorage storage ds);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`ds`|`AppStorage`|`AppStorage` struct used as a shared storage|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/struct.AppStorage.md b/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/struct.AppStorage.md
new file mode 100644
index 000000000..49efd9515
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibAppStorage.sol/struct.AppStorage.md
@@ -0,0 +1,34 @@
+# AppStorage
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibAppStorage.sol)
+
+Shared struct used as a storage in the `LibAppStorage` library
+
+
+```solidity
+struct AppStorage {
+ uint256 reentrancyStatus;
+ address dollarTokenAddress;
+ address creditNftAddress;
+ address creditNftCalculatorAddress;
+ address dollarMintCalculatorAddress;
+ address stakingShareAddress;
+ address stakingContractAddress;
+ address stableSwapMetaPoolAddress;
+ address stableSwapPlainPoolAddress;
+ address curve3PoolTokenAddress;
+ address treasuryAddress;
+ address governanceTokenAddress;
+ address sushiSwapPoolAddress;
+ address masterChefAddress;
+ address formulasAddress;
+ address creditTokenAddress;
+ address creditCalculatorAddress;
+ address ubiquiStickAddress;
+ address bondingCurveAddress;
+ address bancorFormulaAddress;
+ address curveDollarIncentiveAddress;
+ mapping(address => address) _excessDollarDistributors;
+ bool paused;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibBondingCurve.sol/library.LibBondingCurve.md b/packages/contracts/docs/src/src/dollar/libraries/LibBondingCurve.sol/library.LibBondingCurve.md
new file mode 100644
index 000000000..761e61fcb
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibBondingCurve.sol/library.LibBondingCurve.md
@@ -0,0 +1,296 @@
+# LibBondingCurve
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibBondingCurve.sol)
+
+Bonding curve library based on Bancor formula
+
+Inspired from Bancor protocol https://github.com/bancorprotocol/contracts
+
+Used on UbiquiStick NFT minting
+
+
+## State Variables
+### BONDING_CONTROL_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant BONDING_CONTROL_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.bonding.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### bondingCurveStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function bondingCurveStorage() internal pure returns (BondingCurveData storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`BondingCurveData`|Struct used as a storage|
+
+
+### setParams
+
+Sets bonding curve params
+
+
+```solidity
+function setParams(uint32 _connectorWeight, uint256 _baseY) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_connectorWeight`|`uint32`|Connector weight|
+|`_baseY`|`uint256`|Base Y|
+
+
+### connectorWeight
+
+Returns `connectorWeight` value
+
+
+```solidity
+function connectorWeight() internal view returns (uint32);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint32`|Connector weight value|
+
+
+### baseY
+
+Returns `baseY` value
+
+
+```solidity
+function baseY() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Base Y value|
+
+
+### poolBalance
+
+Returns total balance of deposited collateral
+
+
+```solidity
+function poolBalance() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of deposited collateral|
+
+
+### deposit
+
+Deposits collateral tokens in exchange for UbiquiStick NFT
+
+
+```solidity
+function deposit(uint256 _collateralDeposited, address _recipient) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_collateralDeposited`|`uint256`|Amount of collateral|
+|`_recipient`|`address`|Address to receive the NFT|
+
+
+### getShare
+
+Returns number of NFTs a `_recipient` holds
+
+
+```solidity
+function getShare(address _recipient) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_recipient`|`address`|User address|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of NFTs for `_recipient`|
+
+
+### toBytes
+
+Converts `x` to `bytes`
+
+
+```solidity
+function toBytes(uint256 x) internal pure returns (bytes memory b);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`x`|`uint256`|Value to convert to `bytes`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`b`|`bytes`|`x` value converted to `bytes`|
+
+
+### withdraw
+
+Withdraws collateral tokens to treasury
+
+
+```solidity
+function withdraw(uint256 _amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of collateral tokens to withdraw|
+
+
+### purchaseTargetAmount
+
+Given a token supply, reserve balance, weight and a deposit amount (in the reserve token),
+calculates the target amount for a given conversion (in the main token)
+
+`_supply * ((1 + _tokensDeposited / _connectorBalance) ^ (_connectorWeight / 1000000) - 1)`
+
+
+```solidity
+function purchaseTargetAmount(
+ uint256 _tokensDeposited,
+ uint32 _connectorWeight,
+ uint256 _supply,
+ uint256 _connectorBalance
+) internal pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_tokensDeposited`|`uint256`|Amount of collateral tokens to deposit|
+|`_connectorWeight`|`uint32`|Connector weight, represented in ppm, 1 - 1,000,000|
+|`_supply`|`uint256`|Current token supply|
+|`_connectorBalance`|`uint256`|Total connector balance|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of tokens minted|
+
+
+### purchaseTargetAmountFromZero
+
+Given a deposit (in the collateral token) token supply of 0, calculates the return
+for a given conversion (in the token)
+
+`_supply * ((1 + _tokensDeposited / _connectorBalance) ^ (_connectorWeight / 1000000) - 1)`
+
+
+```solidity
+function purchaseTargetAmountFromZero(
+ uint256 _tokensDeposited,
+ uint256 _connectorWeight,
+ uint256 _baseX,
+ uint256 _baseY
+) internal pure returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_tokensDeposited`|`uint256`|Amount of collateral tokens to deposit|
+|`_connectorWeight`|`uint256`|Connector weight, represented in ppm, 1 - 1,000,000|
+|`_baseX`|`uint256`|Constant x|
+|`_baseY`|`uint256`|Expected price|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of tokens minted|
+
+
+### uintToBytes16
+
+Converts `x` to `bytes16`
+
+
+```solidity
+function uintToBytes16(uint256 x) internal pure returns (bytes16 b);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`x`|`uint256`|Value to convert to `bytes16`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`b`|`bytes16`|`x` value converted to `bytes16`|
+
+
+## Events
+### Deposit
+Emitted when collateral is deposited
+
+
+```solidity
+event Deposit(address indexed user, uint256 amount);
+```
+
+### Withdraw
+Emitted when collateral is withdrawn
+
+
+```solidity
+event Withdraw(uint256 amount);
+```
+
+### ParamsSet
+Emitted when parameters are updated
+
+
+```solidity
+event ParamsSet(uint32 connectorWeight, uint256 baseY);
+```
+
+## Structs
+### BondingCurveData
+Struct used as a storage for the current library
+
+
+```solidity
+struct BondingCurveData {
+ uint32 connectorWeight;
+ uint256 baseY;
+ uint256 poolBalance;
+ uint256 tokenIds;
+ mapping(address => uint256) share;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibChef.sol/library.LibChef.md b/packages/contracts/docs/src/src/dollar/libraries/LibChef.sol/library.LibChef.md
new file mode 100644
index 000000000..ecf3c32b2
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibChef.sol/library.LibChef.md
@@ -0,0 +1,417 @@
+# LibChef
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibChef.sol)
+
+Library for staking Dollar-3CRV LP tokens for Governance tokens reward
+
+
+## State Variables
+### UBIQUITY_CHEF_STORAGE_POSITION
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant UBIQUITY_CHEF_STORAGE_POSITION =
+ bytes32(uint256(keccak256("diamond.standard.ubiquity.chef.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### chefStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function chefStorage() internal pure returns (ChefStorage storage ds);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`ds`|`ChefStorage`|Struct used as a storage|
+
+
+### initialize
+
+Initializes staking
+
+
+```solidity
+function initialize(
+ address[] memory _tos,
+ uint256[] memory _amounts,
+ uint256[] memory _stakingShareIDs,
+ uint256 _governancePerBlock
+) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_tos`|`address[]`|Array of addresses for initial deposits|
+|`_amounts`|`uint256[]`|Array of LP amounts for initial deposits|
+|`_stakingShareIDs`|`uint256[]`|Array of staking share IDs for initial deposits|
+|`_governancePerBlock`|`uint256`|Amount of Governance tokens minted each block|
+
+
+### setGovernancePerBlock
+
+Sets amount of Governance tokens minted each block
+
+
+```solidity
+function setGovernancePerBlock(uint256 _governancePerBlock) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_governancePerBlock`|`uint256`|Amount of Governance tokens minted each block|
+
+
+### governancePerBlock
+
+Returns amount of Governance tokens minted each block
+
+
+```solidity
+function governancePerBlock() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Governance tokens minted each block|
+
+
+### governanceDivider
+
+Returns governance divider param
+
+Example: if `_governanceDivider = 5` then `100 / 5 = 20%` extra minted Governance tokens for treasury
+
+
+```solidity
+function governanceDivider() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Governance divider param value|
+
+
+### pool
+
+Returns pool info
+
+
+```solidity
+function pool() internal view returns (PoolInfo memory);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`PoolInfo`|Pool info: - last block number when Governance tokens distribution occurred - Governance tokens per share, times 1e12|
+
+
+### minPriceDiffToUpdateMultiplier
+
+Returns min price difference between the old and the new Dollar prices
+required to update the governance multiplier
+
+
+```solidity
+function minPriceDiffToUpdateMultiplier() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Min Dollar price diff to update the governance multiplier|
+
+
+### setGovernanceShareForTreasury
+
+Sets Governance token divider param. The bigger `_governanceDivider` the less extra
+Governance tokens will be minted for the treasury.
+
+Example: if `_governanceDivider = 5` then `100 / 5 = 20%` extra minted Governance tokens for treasury
+
+
+```solidity
+function setGovernanceShareForTreasury(uint256 _governanceDivider) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_governanceDivider`|`uint256`|Governance divider param value|
+
+
+### setMinPriceDiffToUpdateMultiplier
+
+Sets min price difference between the old and the new Dollar prices
+
+
+```solidity
+function setMinPriceDiffToUpdateMultiplier(uint256 _minPriceDiffToUpdateMultiplier) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_minPriceDiffToUpdateMultiplier`|`uint256`|Min price diff to update governance multiplier|
+
+
+### withdraw
+
+Withdraws Dollar-3CRV LP tokens from staking
+
+
+```solidity
+function withdraw(address to, uint256 _amount, uint256 _stakingShareID) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to transfer pending Governance token rewards|
+|`_amount`|`uint256`|Amount of LP tokens to withdraw|
+|`_stakingShareID`|`uint256`|Staking share id|
+
+
+### getRewards
+
+Withdraws pending Governance token rewards
+
+
+```solidity
+function getRewards(uint256 stakingShareID) internal returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareID`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Reward amount transferred to `msg.sender`|
+
+
+### getStakingShareInfo
+
+Returns staking share info
+
+
+```solidity
+function getStakingShareInfo(uint256 _id) internal view returns (uint256[2] memory);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256[2]`|Array of amount of shares and reward debt|
+
+
+### totalShares
+
+Total amount of Dollar-3CRV LP tokens deposited to the Staking contract
+
+
+```solidity
+function totalShares() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Total amount of deposited LP tokens|
+
+
+### pendingGovernance
+
+Returns amount of pending reward Governance tokens
+
+
+```solidity
+function pendingGovernance(uint256 stakingShareID) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareID`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of pending reward Governance tokens|
+
+
+### deposit
+
+Deposits Dollar-3CRV LP tokens to staking for Governance tokens allocation
+
+
+```solidity
+function deposit(address to, uint256 _amount, uint256 _stakingShareID) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to transfer pending Governance token rewards|
+|`_amount`|`uint256`|Amount of LP tokens to deposit|
+|`_stakingShareID`|`uint256`|Staking share id|
+
+
+### _updateGovernanceMultiplier
+
+Updates Governance token multiplier if Dollar price diff > `minPriceDiffToUpdateMultiplier`
+
+
+```solidity
+function _updateGovernanceMultiplier() internal;
+```
+
+### _updatePool
+
+Updates reward variables of the given pool to be up-to-date
+
+
+```solidity
+function _updatePool() internal;
+```
+
+### _safeGovernanceTransfer
+
+Safe Governance Token transfer function, just in case if rounding
+error causes pool not to have enough Governance tokens
+
+
+```solidity
+function _safeGovernanceTransfer(address _to, uint256 _amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_to`|`address`|Address where to transfer Governance tokens|
+|`_amount`|`uint256`|Amount of Governance tokens to transfer|
+
+
+### _getMultiplier
+
+Returns Governance token bonus multiplier based on number of passed blocks
+
+
+```solidity
+function _getMultiplier() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Governance token bonus multiplier|
+
+
+### _getGovernanceMultiplier
+
+Returns governance multiplier
+
+
+```solidity
+function _getGovernanceMultiplier() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Governance multiplier|
+
+
+## Events
+### Deposit
+Emitted when Dollar-3CRV LP tokens are deposited to the contract
+
+
+```solidity
+event Deposit(address indexed user, uint256 amount, uint256 indexed stakingShareId);
+```
+
+### Withdraw
+Emitted when Dollar-3CRV LP tokens are withdrawn from the contract
+
+
+```solidity
+event Withdraw(address indexed user, uint256 amount, uint256 indexed stakingShareId);
+```
+
+### GovernancePerBlockModified
+Emitted when amount of Governance tokens minted per block is updated
+
+
+```solidity
+event GovernancePerBlockModified(uint256 indexed governancePerBlock);
+```
+
+### MinPriceDiffToUpdateMultiplierModified
+Emitted when min Dollar price diff for governance multiplier change is updated
+
+
+```solidity
+event MinPriceDiffToUpdateMultiplierModified(uint256 indexed minPriceDiffToUpdateMultiplier);
+```
+
+## Structs
+### StakingShareInfo
+User's staking share info
+
+
+```solidity
+struct StakingShareInfo {
+ uint256 amount;
+ uint256 rewardDebt;
+}
+```
+
+### PoolInfo
+Pool info
+
+
+```solidity
+struct PoolInfo {
+ uint256 lastRewardBlock;
+ uint256 accGovernancePerShare;
+}
+```
+
+### ChefStorage
+Struct used as a storage for the current library
+
+
+```solidity
+struct ChefStorage {
+ uint256 governancePerBlock;
+ uint256 governanceMultiplier;
+ uint256 minPriceDiffToUpdateMultiplier;
+ uint256 lastPrice;
+ uint256 governanceDivider;
+ PoolInfo pool;
+ mapping(uint256 => StakingShareInfo) ssInfo;
+ uint256 totalShares;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibCollectableDust.sol/library.LibCollectableDust.md b/packages/contracts/docs/src/src/dollar/libraries/LibCollectableDust.sol/library.LibCollectableDust.md
new file mode 100644
index 000000000..38498ba6e
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibCollectableDust.sol/library.LibCollectableDust.md
@@ -0,0 +1,116 @@
+# LibCollectableDust
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibCollectableDust.sol)
+
+Library for collecting dust (i.e. not part of a protocol) tokens sent to a contract
+
+
+## State Variables
+### COLLECTABLE_DUST_CONTROL_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant COLLECTABLE_DUST_CONTROL_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.collectable.dust.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### collectableDustStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function collectableDustStorage() internal pure returns (Tokens storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`Tokens`|Struct used as a storage|
+
+
+### addProtocolToken
+
+Adds token address to a protocol
+
+
+```solidity
+function addProtocolToken(address _token) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token`|`address`|Token address to add|
+
+
+### removeProtocolToken
+
+Removes token address from a protocol
+
+
+```solidity
+function removeProtocolToken(address _token) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_token`|`address`|Token address to remove|
+
+
+### sendDust
+
+Sends dust tokens (which are not part of a protocol) to the `_to` address
+
+
+```solidity
+function sendDust(address _to, address _token, uint256 _amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_to`|`address`|Tokens receiver address|
+|`_token`|`address`|Token address to send|
+|`_amount`|`uint256`|Amount of tokens to send|
+
+
+## Events
+### DustSent
+Emitted when dust tokens are sent to the `_to` address
+
+
+```solidity
+event DustSent(address _to, address token, uint256 amount);
+```
+
+### ProtocolTokenAdded
+Emitted when token is added to a protocol
+
+
+```solidity
+event ProtocolTokenAdded(address _token);
+```
+
+### ProtocolTokenRemoved
+Emitted when token is removed from a protocol
+
+
+```solidity
+event ProtocolTokenRemoved(address _token);
+```
+
+## Structs
+### Tokens
+Struct used as a storage for the current library
+
+
+```solidity
+struct Tokens {
+ EnumerableSet.AddressSet protocolTokens;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibCreditClock.sol/library.LibCreditClock.md b/packages/contracts/docs/src/src/dollar/libraries/LibCreditClock.sol/library.LibCreditClock.md
new file mode 100644
index 000000000..98d8c2f1a
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibCreditClock.sol/library.LibCreditClock.md
@@ -0,0 +1,123 @@
+# LibCreditClock
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibCreditClock.sol)
+
+Library for Credit Clock Facet
+
+
+## State Variables
+### CREDIT_CLOCK_STORAGE_POSITION
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant CREDIT_CLOCK_STORAGE_POSITION =
+ bytes32(uint256(keccak256("ubiquity.contracts.credit.clock.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### creditClockStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function creditClockStorage() internal pure returns (CreditClockData storage data);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`data`|`CreditClockData`|Struct used as a storage|
+
+
+### setManager
+
+Updates the manager address
+
+
+```solidity
+function setManager(address _manager) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_manager`|`address`|New manager address|
+
+
+### getManager
+
+Returns the manager address
+
+
+```solidity
+function getManager() internal view returns (address);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`address`|Manager address|
+
+
+### setRatePerBlock
+
+Sets rate to apply from this block onward
+
+
+```solidity
+function setRatePerBlock(bytes16 _ratePerBlock) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_ratePerBlock`|`bytes16`|ABDKMathQuad new rate per block to apply from this block onward|
+
+
+### getRate
+
+Calculates `rateStartValue * (1 / ((1 + ratePerBlock)^blockNumber - rateStartBlock)))`
+
+
+```solidity
+function getRate(uint256 blockNumber) internal view returns (bytes16 rate);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`blockNumber`|`uint256`|Block number to get the rate for. 0 for current block.|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`rate`|`bytes16`|ABDKMathQuad rate calculated for the block number|
+
+
+## Events
+### SetRatePerBlock
+Emitted when depreciation rate per block is updated
+
+
+```solidity
+event SetRatePerBlock(uint256 rateStartBlock, bytes16 rateStartValue, bytes16 ratePerBlock);
+```
+
+## Structs
+### CreditClockData
+Struct used as a storage for the current library
+
+
+```solidity
+struct CreditClockData {
+ IAccessControl accessControl;
+ uint256 rateStartBlock;
+ bytes16 rateStartValue;
+ bytes16 ratePerBlock;
+ bytes16 one;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibCreditNftManager.sol/library.LibCreditNftManager.md b/packages/contracts/docs/src/src/dollar/libraries/LibCreditNftManager.sol/library.LibCreditNftManager.md
new file mode 100644
index 000000000..3977234e4
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibCreditNftManager.sol/library.LibCreditNftManager.md
@@ -0,0 +1,357 @@
+# LibCreditNftManager
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibCreditNftManager.sol)
+
+Library for basic credit issuing and redemption mechanism for Credit NFT and Credit holders
+
+Allows users to burn their Dollars in exchange for Credit NFTs or Credits redeemable in the future
+
+Allows users to:
+- redeem individual Credit NFT or batch redeem Credit NFT on a first-come first-serve basis
+- redeem Credits for Dollars
+
+
+## State Variables
+### CREDIT_NFT_MANAGER_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant CREDIT_NFT_MANAGER_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.credit.nft.manager.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### creditNftStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function creditNftStorage() internal pure returns (CreditNftManagerData storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`CreditNftManagerData`|Struct used as a storage|
+
+
+### expiredCreditNftConversionRate
+
+Returns Credit NFT to Governance conversion rate
+
+
+```solidity
+function expiredCreditNftConversionRate() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Conversion rate|
+
+
+### setExpiredCreditNftConversionRate
+
+Credit NFT to Governance conversion rate
+
+When Credit NFTs are expired they can be converted to
+Governance tokens using `rate` conversion rate
+
+
+```solidity
+function setExpiredCreditNftConversionRate(uint256 rate) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`rate`|`uint256`|Credit NFT to Governance tokens conversion rate|
+
+
+### setCreditNftLength
+
+Sets Credit NFT block lifespan
+
+
+```solidity
+function setCreditNftLength(uint256 _creditNftLengthBlocks) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_creditNftLengthBlocks`|`uint256`|The number of blocks during which Credit NFTs can be redeemed for Dollars|
+
+
+### creditNftLengthBlocks
+
+Returns Credit NFT block lifespan
+
+
+```solidity
+function creditNftLengthBlocks() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Number of blocks during which Credit NFTs can be redeemed for Dollars|
+
+
+### exchangeDollarsForCreditNft
+
+Burns Dollars in exchange for Credit NFTs
+
+Should only be called when Dollar price < 1$
+
+
+```solidity
+function exchangeDollarsForCreditNft(uint256 amount) internal returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to exchange for Credit NFTs|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Expiry block number when Credit NFTs can no longer be redeemed for Dollars|
+
+
+### exchangeDollarsForCredit
+
+Burns Dollars in exchange for Credit tokens
+
+Should only be called when Dollar price < 1$
+
+
+```solidity
+function exchangeDollarsForCredit(uint256 amount) internal returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits minted|
+
+
+### getCreditNftReturnedForDollars
+
+Returns amount of Credit NFTs to be minted for the `amount` of Dollars to burn
+
+
+```solidity
+function getCreditNftReturnedForDollars(uint256 amount) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credit NFTs to be minted|
+
+
+### getCreditReturnedForDollars
+
+Returns the amount of Credit tokens to be minter for the provided `amount` of Dollars to burn
+
+
+```solidity
+function getCreditReturnedForDollars(uint256 amount) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits to be minted|
+
+
+### onERC1155Received
+
+Handles the receipt of a single ERC1155 token type. This function is
+called at the end of a `safeTransferFrom` after the balance has been updated.
+NOTE: To accept the transfer, this must return
+`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
+(i.e. 0xf23a6e61, or its own function selector).
+
+
+```solidity
+function onERC1155Received(address operator, address, uint256, uint256, bytes calldata)
+ internal
+ view
+ returns (bytes4);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`operator`|`address`|The address which initiated the transfer (i.e. msg.sender)|
+|``|`address`||
+|``|`uint256`||
+|``|`uint256`||
+|``|`bytes`||
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bytes4`|`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed|
+
+
+### burnExpiredCreditNftForGovernance
+
+Burns expired Credit NFTs for Governance tokens at `expiredCreditNftConversionRate` rate
+
+
+```solidity
+function burnExpiredCreditNftForGovernance(uint256 id, uint256 amount) public returns (uint256 governanceAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT timestamp|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`governanceAmount`|`uint256`|Amount of Governance tokens minted to Credit NFT holder|
+
+
+### burnCreditNftForCredit
+
+TODO: Should we leave it ?
+
+Burns Credit NFTs for Credit tokens
+
+
+```solidity
+function burnCreditNftForCredit(uint256 id, uint256 amount) public returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT timestamp|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Credit tokens balance of `msg.sender`|
+
+
+### burnCreditTokensForDollars
+
+Burns Credit tokens for Dollars when Dollar price > 1$
+
+
+```solidity
+function burnCreditTokensForDollars(uint256 amount) public returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Credits to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of unredeemed Credits|
+
+
+### redeemCreditNft
+
+Burns Credit NFTs for Dollars when Dollar price > 1$
+
+
+```solidity
+function redeemCreditNft(uint256 id, uint256 amount) public returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`id`|`uint256`|Credit NFT expiry block number|
+|`amount`|`uint256`|Amount of Credit NFTs to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of unredeemed Credit NFTs|
+
+
+### mintClaimableDollars
+
+Mints Dollars when Dollar price > 1$
+
+Distributes excess Dollars this way:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+```solidity
+function mintClaimableDollars() public;
+```
+
+## Events
+### ExpiredCreditNftConversionRateChanged
+Emitted when Credit NFT to Governance conversion rate was updated
+
+
+```solidity
+event ExpiredCreditNftConversionRateChanged(uint256 newRate, uint256 previousRate);
+```
+
+### CreditNftLengthChanged
+Emitted when Credit NFT block expiration length was updated
+
+
+```solidity
+event CreditNftLengthChanged(uint256 newCreditNftLengthBlocks, uint256 previousCreditNftLengthBlocks);
+```
+
+## Structs
+### CreditNftManagerData
+Struct used as a storage for the current library
+
+
+```solidity
+struct CreditNftManagerData {
+ uint256 dollarsMintedThisCycle;
+ uint256 blockHeightDebt;
+ uint256 creditNftLengthBlocks;
+ uint256 expiredCreditNftConversionRate;
+ bool debtCycle;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibCreditNftRedemptionCalculator.sol/library.LibCreditNftRedemptionCalculator.md b/packages/contracts/docs/src/src/dollar/libraries/LibCreditNftRedemptionCalculator.sol/library.LibCreditNftRedemptionCalculator.md
new file mode 100644
index 000000000..7a724c69e
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibCreditNftRedemptionCalculator.sol/library.LibCreditNftRedemptionCalculator.md
@@ -0,0 +1,28 @@
+# LibCreditNftRedemptionCalculator
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibCreditNftRedemptionCalculator.sol)
+
+Library for calculating amount of Credit NFTs to mint on Dollars burn
+
+
+## Functions
+### getCreditNftAmount
+
+Returns Credit NFT amount minted for `dollarsToBurn` amount of Dollars to burn
+
+
+```solidity
+function getCreditNftAmount(uint256 dollarsToBurn) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarsToBurn`|`uint256`|Amount of Dollars to burn|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credit NFTs to mint|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibCreditRedemptionCalculator.sol/library.LibCreditRedemptionCalculator.md b/packages/contracts/docs/src/src/dollar/libraries/LibCreditRedemptionCalculator.sol/library.LibCreditRedemptionCalculator.md
new file mode 100644
index 000000000..d994ac11f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibCreditRedemptionCalculator.sol/library.LibCreditRedemptionCalculator.md
@@ -0,0 +1,97 @@
+# LibCreditRedemptionCalculator
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibCreditRedemptionCalculator.sol)
+
+Library for calculating amount of Credits to mint on Dollars burn
+
+
+## State Variables
+### CREDIT_REDEMPTION_CALCULATOR_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant CREDIT_REDEMPTION_CALCULATOR_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.credit.redemption.calculator.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### creditRedemptionCalculatorStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function creditRedemptionCalculatorStorage() internal pure returns (CreditRedemptionCalculatorData storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`CreditRedemptionCalculatorData`|Struct used as a storage|
+
+
+### setConstant
+
+Sets the `p` param in the Credit mint calculation formula:
+`y = x * ((BlockDebtStart / BlockBurn) ^ p)`
+
+
+```solidity
+function setConstant(uint256 coef) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`coef`|`uint256`|New `p` param in wei|
+
+
+### getConstant
+
+Returns the `p` param used in the Credit mint calculation formula
+
+
+```solidity
+function getConstant() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|`p` param|
+
+
+### getCreditAmount
+
+Returns amount of Credits to mint for `dollarsToBurn` amount of Dollars to burn
+
+
+```solidity
+function getCreditAmount(uint256 dollarsToBurn, uint256 blockHeightDebt) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`dollarsToBurn`|`uint256`|Amount of Dollars to burn|
+|`blockHeightDebt`|`uint256`|Block number when the latest debt cycle started (i.e. when Dollar price became < 1$)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Credits to mint|
+
+
+## Structs
+### CreditRedemptionCalculatorData
+Struct used as a storage for the current library
+
+
+```solidity
+struct CreditRedemptionCalculatorData {
+ uint256 coef;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibCurveDollarIncentive.sol/library.LibCurveDollarIncentive.md b/packages/contracts/docs/src/src/dollar/libraries/LibCurveDollarIncentive.sol/library.LibCurveDollarIncentive.md
new file mode 100644
index 000000000..36b00a435
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibCurveDollarIncentive.sol/library.LibCurveDollarIncentive.md
@@ -0,0 +1,226 @@
+# LibCurveDollarIncentive
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibCurveDollarIncentive.sol)
+
+Library adds buy incentive and sell penalty for Curve's Dollar-3CRV MetaPool
+
+
+## State Variables
+### CURVE_DOLLAR_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant CURVE_DOLLAR_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.curve.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+### _one
+One point in `bytes16`
+
+
+```solidity
+bytes16 constant _one = bytes16(abi.encodePacked(uint256(1 ether)));
+```
+
+
+## Functions
+### curveDollarStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function curveDollarStorage() internal pure returns (CurveDollarData storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`CurveDollarData`|Struct used as a storage|
+
+
+### isSellPenaltyOn
+
+Checks whether sell penalty is enabled
+
+
+```solidity
+function isSellPenaltyOn() internal view returns (bool);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether sell penalty is enabled|
+
+
+### isBuyIncentiveOn
+
+Checks whether buy incentive is enabled
+
+
+```solidity
+function isBuyIncentiveOn() internal view returns (bool);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether buy incentive is enabled|
+
+
+### incentivize
+
+Adds buy and sell incentives
+
+
+```solidity
+function incentivize(address sender, address receiver, uint256 amountIn) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`sender`|`address`|Sender address|
+|`receiver`|`address`|Receiver address|
+|`amountIn`|`uint256`|Trade amount|
+
+
+### setExemptAddress
+
+Sets an address to be exempted from Curve trading incentives
+
+
+```solidity
+function setExemptAddress(address account, bool isExempt) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`account`|`address`|Address to update|
+|`isExempt`|`bool`|Flag for whether to flag as exempt or not|
+
+
+### switchSellPenalty
+
+Switches the sell penalty
+
+
+```solidity
+function switchSellPenalty() internal;
+```
+
+### switchBuyIncentive
+
+Switches the buy incentive
+
+
+```solidity
+function switchBuyIncentive() internal;
+```
+
+### isExemptAddress
+
+Checks whether `account` is marked as exempt
+
+Whether `account` is exempt from buy incentive and sell penalty
+
+
+```solidity
+function isExemptAddress(address account) internal view returns (bool);
+```
+
+### _incentivizeSell
+
+Adds penalty for selling `amount` of Dollars for `target` address
+
+
+```solidity
+function _incentivizeSell(address target, uint256 amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Address to penalize|
+|`amount`|`uint256`|Trade amount|
+
+
+### _incentivizeBuy
+
+Adds incentive for buying `amountIn` of Dollars for `target` address
+
+
+```solidity
+function _incentivizeBuy(address target, uint256 amountIn) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`target`|`address`|Address to incentivize|
+|`amountIn`|`uint256`|Trade amount|
+
+
+### _getPercentDeviationFromUnderPeg
+
+Returns the percentage of deviation from the peg multiplied by amount when Dollar < 1$
+
+
+```solidity
+function _getPercentDeviationFromUnderPeg(uint256 amount) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Trade amount|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Percentage of deviation|
+
+
+### _getTWAPPrice
+
+Returns current Dollar price
+
+*Returns 3CRV LP / Dollar quote, i.e. how many 3CRV LP tokens user will get for 1 Dollar*
+
+
+```solidity
+function _getTWAPPrice() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Dollar price|
+
+
+## Events
+### ExemptAddressUpdate
+Emitted when `_account` exempt is updated
+
+
+```solidity
+event ExemptAddressUpdate(address indexed _account, bool _isExempt);
+```
+
+## Structs
+### CurveDollarData
+Struct used as a storage for the current library
+
+
+```solidity
+struct CurveDollarData {
+ bool isSellPenaltyOn;
+ bool isBuyIncentiveOn;
+ mapping(address => bool) _exempt;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibDiamond.sol/error.InitializationFunctionReverted.md b/packages/contracts/docs/src/src/dollar/libraries/LibDiamond.sol/error.InitializationFunctionReverted.md
new file mode 100644
index 000000000..09f861170
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibDiamond.sol/error.InitializationFunctionReverted.md
@@ -0,0 +1,10 @@
+# InitializationFunctionReverted
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibDiamond.sol)
+
+Error thrown when `initializeDiamondCut()` fails
+
+
+```solidity
+error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata);
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibDiamond.sol/library.LibDiamond.md b/packages/contracts/docs/src/src/dollar/libraries/LibDiamond.sol/library.LibDiamond.md
new file mode 100644
index 000000000..ae09bb95f
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibDiamond.sol/library.LibDiamond.md
@@ -0,0 +1,276 @@
+# LibDiamond
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibDiamond.sol)
+
+Library used for diamond facets and selector modifications
+
+*Remember to add the loupe functions from DiamondLoupeFacet to the diamond.
+The loupe functions are required by the EIP2535 Diamonds standard.*
+
+
+## State Variables
+### DIAMOND_STORAGE_POSITION
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant DIAMOND_STORAGE_POSITION =
+ bytes32(uint256(keccak256("diamond.standard.diamond.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### diamondStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function diamondStorage() internal pure returns (DiamondStorage storage ds);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`ds`|`DiamondStorage`|Struct used as a storage|
+
+
+### setContractOwner
+
+Updates contract owner
+
+
+```solidity
+function setContractOwner(address _newOwner) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_newOwner`|`address`|New contract owner|
+
+
+### contractOwner
+
+Returns contract owner
+
+
+```solidity
+function contractOwner() internal view returns (address contractOwner_);
+```
+
+### enforceIsContractOwner
+
+Checks that `msg.sender` is a contract owner
+
+
+```solidity
+function enforceIsContractOwner() internal view;
+```
+
+### diamondCut
+
+Add/replace/remove any number of functions and optionally execute a function with delegatecall
+
+*`_calldata` is executed with delegatecall on `_init`*
+
+
+```solidity
+function diamondCut(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_diamondCut`|`IDiamondCut.FacetCut[]`|Contains the facet addresses and function selectors|
+|`_init`|`address`|The address of the contract or facet to execute _calldata|
+|`_calldata`|`bytes`|A function call, including function selector and arguments|
+
+
+### addFunctions
+
+Adds new functions to a facet
+
+
+```solidity
+function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_facetAddress`|`address`|Facet address|
+|`_functionSelectors`|`bytes4[]`|Function selectors to add|
+
+
+### replaceFunctions
+
+Replaces functions in a facet
+
+
+```solidity
+function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_facetAddress`|`address`|Facet address|
+|`_functionSelectors`|`bytes4[]`|Function selectors to replace with|
+
+
+### removeFunctions
+
+Removes functions from a facet
+
+
+```solidity
+function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_facetAddress`|`address`|Facet address|
+|`_functionSelectors`|`bytes4[]`|Function selectors to remove|
+
+
+### addFacet
+
+Adds a new diamond facet
+
+
+```solidity
+function addFacet(DiamondStorage storage ds, address _facetAddress) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`ds`|`DiamondStorage`|Struct used as a storage|
+|`_facetAddress`|`address`|Facet address to add|
+
+
+### addFunction
+
+Adds new function to a facet
+
+
+```solidity
+function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress)
+ internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`ds`|`DiamondStorage`|Struct used as a storage|
+|`_selector`|`bytes4`|Function selector to add|
+|`_selectorPosition`|`uint96`|Position in `FacetFunctionSelectors.functionSelectors` array|
+|`_facetAddress`|`address`|Facet address|
+
+
+### removeFunction
+
+Removes function from a facet
+
+
+```solidity
+function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`ds`|`DiamondStorage`|Struct used as a storage|
+|`_facetAddress`|`address`|Facet address|
+|`_selector`|`bytes4`|Function selector to add|
+
+
+### initializeDiamondCut
+
+Function called on diamond cut modification
+
+*`_calldata` is executed with delegatecall on `_init`*
+
+
+```solidity
+function initializeDiamondCut(address _init, bytes memory _calldata) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_init`|`address`|The address of the contract or facet to execute _calldata|
+|`_calldata`|`bytes`|A function call, including function selector and arguments|
+
+
+### enforceHasContractCode
+
+Reverts if `_contract` address doesn't have any code
+
+
+```solidity
+function enforceHasContractCode(address _contract, string memory _errorMessage) internal view;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_contract`|`address`|Contract address to check for empty code|
+|`_errorMessage`|`string`|Error message|
+
+
+## Events
+### OwnershipTransferred
+Emitted when contract owner is updated
+
+
+```solidity
+event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
+```
+
+### DiamondCut
+Emitted when facet is modified
+
+
+```solidity
+event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);
+```
+
+## Structs
+### FacetAddressAndPosition
+Struct used as a mapping of facet to function selector position
+
+
+```solidity
+struct FacetAddressAndPosition {
+ address facetAddress;
+ uint96 functionSelectorPosition;
+}
+```
+
+### FacetFunctionSelectors
+Struct used as a mapping of facet to function selectors
+
+
+```solidity
+struct FacetFunctionSelectors {
+ bytes4[] functionSelectors;
+ uint256 facetAddressPosition;
+}
+```
+
+### DiamondStorage
+Struct used as a storage for this library
+
+
+```solidity
+struct DiamondStorage {
+ mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
+ mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
+ address[] facetAddresses;
+ mapping(bytes4 => bool) supportedInterfaces;
+ address contractOwner;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibDirectGovernanceFarmer.sol/library.LibDirectGovernanceFarmer.md b/packages/contracts/docs/src/src/dollar/libraries/LibDirectGovernanceFarmer.sol/library.LibDirectGovernanceFarmer.md
new file mode 100644
index 000000000..79a73516a
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibDirectGovernanceFarmer.sol/library.LibDirectGovernanceFarmer.md
@@ -0,0 +1,257 @@
+# LibDirectGovernanceFarmer
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibDirectGovernanceFarmer.sol)
+
+
+## State Variables
+### DIRECT_GOVERNANCE_STORAGE_POSITION
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant DIRECT_GOVERNANCE_STORAGE_POSITION =
+ bytes32(uint256(keccak256("ubiquity.contracts.direct.governance.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### directGovernanceStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function directGovernanceStorage() internal pure returns (DirectGovernanceData storage data);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`data`|`DirectGovernanceData`|Struct used as a storage|
+
+
+### init
+
+Used to initialize this facet with corresponding values
+
+
+```solidity
+function init(address _manager, address base3Pool, address ubiquity3PoolLP, address _ubiquityDollar, address depositZap)
+ internal;
+```
+
+### depositSingle
+
+Standard Interface Provided by Curve ///
+
+Deposits a single token to staking
+
+Stable coin (DAI / USDC / USDT / Ubiquity Dollar) => Dollar-3CRV LP => Ubiquity Staking
+
+How it works:
+1. User deposit supported stablecoins
+2. Deposited stablecoins are added to Curve MetaPool
+3. User gets Dollar-3CRV LP tokens
+4. Dollar-3CRV LP tokens are transferred to the staking contract
+5. User gets a staking share id
+
+
+```solidity
+function depositSingle(address token, uint256 amount, uint256 durationWeeks)
+ internal
+ returns (uint256 stakingShareId);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token deposited : Stablecoin|
+|`amount`|`uint256`|Amount of tokens to deposit (For max: `uint256(-1)`)|
+|`durationWeeks`|`uint256`|Duration in weeks tokens will be locked (1-208)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking share id|
+
+
+### depositMulti
+
+Deposits into Ubiquity protocol
+
+Stable coins (DAI / USDC / USDT / Ubiquity Dollar) => uAD3CRV-f => Ubiquity StakingShare
+
+STEP 1 : Change (DAI / USDC / USDT / Ubiquity dollar) to 3CRV at uAD3CRV MetaPool
+
+STEP 2 : uAD3CRV-f => Ubiquity StakingShare
+
+
+```solidity
+function depositMulti(uint256[4] calldata tokenAmounts, uint256 durationWeeks)
+ internal
+ returns (uint256 stakingShareId);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmounts`|`uint256[4]`|Amount of tokens to deposit (For max: `uint256(-1)`) it MUST follow this order [Ubiquity Dollar, DAI, USDC, USDT]|
+|`durationWeeks`|`uint256`|Duration in weeks tokens will be locked (1-208)|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking share id|
+
+
+### withdrawWithId
+
+Withdraws from Ubiquity protocol
+
+Ubiquity StakingShare => uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+STEP 1 : Ubiquity StakingShare => uAD3CRV-f
+
+STEP 2 : uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+
+```solidity
+function withdrawWithId(uint256 stakingShareId) internal returns (uint256[4] memory tokenAmounts);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking Share Id to withdraw|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmounts`|`uint256[4]`|Array of token amounts [Ubiquity Dollar, DAI, USDC, USDT]|
+
+
+### withdraw
+
+Withdraws from Ubiquity protocol
+
+Ubiquity StakingShare => uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+STEP 1 : Ubiquity StakingShare => uAD3CRV-f
+
+STEP 2 : uAD3CRV-f => stable coin (DAI / USDC / USDT / Ubiquity Dollar)
+
+
+```solidity
+function withdraw(uint256 stakingShareId, address token) internal returns (uint256 tokenAmount);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`stakingShareId`|`uint256`|Staking Share Id to withdraw|
+|`token`|`address`|Token to withdraw to : DAI, USDC, USDT, 3CRV or Ubiquity Dollar|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`tokenAmount`|`uint256`|Amount of token withdrawn|
+
+
+### isIdIncluded
+
+Checks whether `id` exists in `idList[]`
+
+
+```solidity
+function isIdIncluded(uint256[] memory idList, uint256 id) internal pure returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`idList`|`uint256[]`|Array to search in|
+|`id`|`uint256`|Value to search in `idList`|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `id` exists in `idList[]`|
+
+
+### isMetaPoolCoin
+
+Checks that `token` is one of the underlying MetaPool tokens or stablecoin from MetaPool
+
+
+```solidity
+function isMetaPoolCoin(address token) internal pure returns (bool);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`token`|`address`|Token address to check|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`bool`|Whether `token` is one of the underlying MetaPool tokens or stablecoin from MetaPool|
+
+
+## Events
+### DepositSingle
+Emitted when user deposits a single token
+
+
+```solidity
+event DepositSingle(
+ address indexed sender, address token, uint256 amount, uint256 durationWeeks, uint256 stakingShareId
+);
+```
+
+### DepositMulti
+Emitted when user deposits multiple tokens
+
+
+```solidity
+event DepositMulti(address indexed sender, uint256[4] amounts, uint256 durationWeeks, uint256 stakingShareId);
+```
+
+### Withdraw
+Emitted when user withdraws a single token
+
+
+```solidity
+event Withdraw(address indexed sender, uint256 stakingShareId, address token, uint256 amount);
+```
+
+### WithdrawAll
+Emitted when user withdraws multiple tokens
+
+
+```solidity
+event WithdrawAll(address indexed sender, uint256 stakingShareId, uint256[4] amounts);
+```
+
+## Structs
+### DirectGovernanceData
+Struct used as a storage for the current library
+
+
+```solidity
+struct DirectGovernanceData {
+ address token0;
+ address token1;
+ address token2;
+ address ubiquity3PoolLP;
+ IERC20Ubiquity ubiquityDollar;
+ address depositZapUbiquityDollar;
+ IUbiquityDollarManager manager;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibDollarMintCalculator.sol/library.LibDollarMintCalculator.md b/packages/contracts/docs/src/src/dollar/libraries/LibDollarMintCalculator.sol/library.LibDollarMintCalculator.md
new file mode 100644
index 000000000..bd579427c
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibDollarMintCalculator.sol/library.LibDollarMintCalculator.md
@@ -0,0 +1,22 @@
+# LibDollarMintCalculator
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibDollarMintCalculator.sol)
+
+Calculates amount of Dollars ready to be minted when TWAP price (i.e. Dollar price) > 1$
+
+
+## Functions
+### getDollarsToMint
+
+Returns amount of Dollars to be minted based on formula `(TWAP_PRICE - 1) * DOLLAR_TOTAL_SUPPLY`
+
+
+```solidity
+function getDollarsToMint() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Dollars to be minted|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibDollarMintExcess.sol/library.LibDollarMintExcess.md b/packages/contracts/docs/src/src/dollar/libraries/LibDollarMintExcess.sol/library.LibDollarMintExcess.md
new file mode 100644
index 000000000..c495160a5
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibDollarMintExcess.sol/library.LibDollarMintExcess.md
@@ -0,0 +1,103 @@
+# LibDollarMintExcess
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibDollarMintExcess.sol)
+
+Library for distributing excess Dollars when `mintClaimableDollars()` is called
+
+Excess Dollars are distributed this way:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+## State Variables
+### _minAmountToDistribute
+Min amount of Dollars to distribute
+
+
+```solidity
+uint256 private constant _minAmountToDistribute = 100 ether;
+```
+
+
+### _router
+DEX router address
+
+
+```solidity
+IUniswapV2Router01 private constant _router = IUniswapV2Router01(0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F);
+```
+
+
+## Functions
+### distributeDollars
+
+Distributes excess Dollars:
+- 50% goes to the treasury address
+- 10% goes for burning Dollar-Governance LP tokens in a DEX pool
+- 40% goes to the Staking contract
+
+
+```solidity
+function distributeDollars() internal;
+```
+
+### _swapDollarsForGovernance
+
+Swaps Dollars for Governance tokens in a DEX
+
+
+```solidity
+function _swapDollarsForGovernance(bytes16 amountIn) internal returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amountIn`|`bytes16`|Amount of Dollars to swap|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Governance tokens returned|
+
+
+### _governanceBuyBackLPAndBurn
+
+Swaps half of `amount` Dollars for Governance tokens and adds
+them as a liquidity to a DEX pool burning the result LP tokens
+
+
+```solidity
+function _governanceBuyBackLPAndBurn(uint256 amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of Dollars|
+
+
+### _convertToCurveLPAndTransfer
+
+Swaps `amount` Dollars for 3CRV LP tokens in the MetaPool, adds
+3CRV LP tokens to the MetaPool and transfers the result Dollar-3CRV LP tokens
+to the Staking contract
+
+
+```solidity
+function _convertToCurveLPAndTransfer(uint256 amount) internal returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Dollars amount|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of Dollar-3CRV LP tokens minted|
+
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibStaking.sol/library.LibStaking.md b/packages/contracts/docs/src/src/dollar/libraries/LibStaking.sol/library.LibStaking.md
new file mode 100644
index 000000000..132e00e05
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibStaking.sol/library.LibStaking.md
@@ -0,0 +1,386 @@
+# LibStaking
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibStaking.sol)
+
+Staking library
+
+
+## State Variables
+### STAKING_CONTROL_STORAGE_SLOT
+Storage slot used to store data for this library
+
+
+```solidity
+bytes32 constant STAKING_CONTROL_STORAGE_SLOT =
+ bytes32(uint256(keccak256("ubiquity.contracts.staking.storage")) - 1) & ~bytes32(uint256(0xff));
+```
+
+
+## Functions
+### stakingStorage
+
+Returns struct used as a storage for this library
+
+
+```solidity
+function stakingStorage() internal pure returns (StakingData storage l);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`l`|`StakingData`|Struct used as a storage|
+
+
+### dollarPriceReset
+
+Removes Ubiquity Dollar unilaterally from the curve LP share sitting inside
+the staking contract and sends the Ubiquity Dollar received to the treasury. This will
+have the immediate effect of pushing the Ubiquity Dollar price HIGHER
+
+It will remove one coin only from the curve LP share sitting in the staking contract
+
+
+```solidity
+function dollarPriceReset(uint256 amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of LP token to be removed for Ubiquity Dollar|
+
+
+### crvPriceReset
+
+Remove 3CRV unilaterally from the curve LP share sitting inside
+the staking contract and send the 3CRV received to the treasury. This will
+have the immediate effect of pushing the Ubiquity Dollar price LOWER.
+
+It will remove one coin only from the curve LP share sitting in the staking contract
+
+
+```solidity
+function crvPriceReset(uint256 amount) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of LP token to be removed for 3CRV tokens|
+
+
+### setStakingDiscountMultiplier
+
+Sets staking discount multiplier
+
+
+```solidity
+function setStakingDiscountMultiplier(uint256 _stakingDiscountMultiplier) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stakingDiscountMultiplier`|`uint256`|New staking discount multiplier|
+
+
+### stakingDiscountMultiplier
+
+Returns staking discount multiplier
+
+
+```solidity
+function stakingDiscountMultiplier() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Staking discount multiplier|
+
+
+### blockCountInAWeek
+
+Returns number of blocks in a week
+
+
+```solidity
+function blockCountInAWeek() internal view returns (uint256);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Number of blocks in a week|
+
+
+### setBlockCountInAWeek
+
+Sets number of blocks in a week
+
+
+```solidity
+function setBlockCountInAWeek(uint256 _blockCountInAWeek) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_blockCountInAWeek`|`uint256`|Number of blocks in a week|
+
+
+### deposit
+
+Deposits UbiquityDollar-3CRV LP tokens for a duration to receive staking shares
+
+Weeks act as a multiplier for the amount of staking shares to be received
+
+
+```solidity
+function deposit(uint256 _lpsAmount, uint256 _weeks) internal returns (uint256 _id);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_lpsAmount`|`uint256`|Amount of LP tokens to send|
+|`_weeks`|`uint256`|Number of weeks during which LP tokens will be held|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+
+### addLiquidity
+
+Adds an amount of UbiquityDollar-3CRV LP tokens
+
+Staking shares are ERC1155 (aka NFT) because they have an expiration date
+
+
+```solidity
+function addLiquidity(uint256 _amount, uint256 _id, uint256 _weeks) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of LP token to deposit|
+|`_id`|`uint256`|Staking share id|
+|`_weeks`|`uint256`|Number of weeks during which LP tokens will be held|
+
+
+### removeLiquidity
+
+Removes an amount of UbiquityDollar-3CRV LP tokens
+
+Staking shares are ERC1155 (aka NFT) because they have an expiration date
+
+
+```solidity
+function removeLiquidity(uint256 _amount, uint256 _id) internal;
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_amount`|`uint256`|Amount of LP token deposited when `_id` was created to be withdrawn|
+|`_id`|`uint256`|Staking share id|
+
+
+### pendingLpRewards
+
+View function to see pending LP rewards on frontend
+
+
+```solidity
+function pendingLpRewards(uint256 _id) internal view returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### lpRewardForShares
+
+Returns the amount of LP token rewards an amount of shares entitled
+
+
+```solidity
+function lpRewardForShares(uint256 amount, uint256 lpRewardDebt) internal view returns (uint256 pendingLpReward);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`amount`|`uint256`|Amount of staking shares|
+|`lpRewardDebt`|`uint256`|Amount of LP rewards that have already been distributed|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`pendingLpReward`|`uint256`|Amount of pending LP rewards|
+
+
+### currentShareValue
+
+Returns current share price
+
+
+```solidity
+function currentShareValue() internal view returns (uint256 priceShare);
+```
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`priceShare`|`uint256`|Share price|
+
+
+### _updateLpPerShare
+
+Updates the accumulated excess LP per share
+
+
+```solidity
+function _updateLpPerShare() internal;
+```
+
+### _mint
+
+Mints a staking share on deposit
+
+
+```solidity
+function _mint(address to, uint256 lpAmount, uint256 shares, uint256 endBlock) internal returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`to`|`address`|Address where to mint a staking share|
+|`lpAmount`|`uint256`|Amount of LP tokens|
+|`shares`|`uint256`|Amount of shares|
+|`endBlock`|`uint256`|Staking share end block|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Staking share id|
+
+
+### _checkForLiquidity
+
+Returns staking share info
+
+
+```solidity
+function _checkForLiquidity(uint256 _id)
+ internal
+ view
+ returns (uint256[2] memory bs, StakingShare.Stake memory stake);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_id`|`uint256`|Staking share id|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`bs`|`uint256[2]`|Array of amount of shares and reward debt|
+|`stake`|`StakingShare.Stake`|Stake info|
+
+
+## Events
+### PriceReset
+Emitted when Dollar or 3CRV tokens are removed from Curve MetaPool
+
+
+```solidity
+event PriceReset(address _tokenWithdrawn, uint256 _amountWithdrawn, uint256 _amountTransferred);
+```
+
+### Deposit
+Emitted when user deposits Dollar-3CRV LP tokens to the staking contract
+
+
+```solidity
+event Deposit(
+ address indexed _user,
+ uint256 indexed _id,
+ uint256 _lpAmount,
+ uint256 _stakingShareAmount,
+ uint256 _weeks,
+ uint256 _endBlock
+);
+```
+
+### RemoveLiquidityFromStake
+Emitted when user removes liquidity from stake
+
+
+```solidity
+event RemoveLiquidityFromStake(
+ address indexed _user,
+ uint256 indexed _id,
+ uint256 _lpAmount,
+ uint256 _lpAmountTransferred,
+ uint256 _lpRewards,
+ uint256 _stakingShareAmount
+);
+```
+
+### AddLiquidityFromStake
+Emitted when user adds liquidity to stake
+
+
+```solidity
+event AddLiquidityFromStake(address indexed _user, uint256 indexed _id, uint256 _lpAmount, uint256 _stakingShareAmount);
+```
+
+### StakingDiscountMultiplierUpdated
+Emitted when staking discount multiplier is updated
+
+
+```solidity
+event StakingDiscountMultiplierUpdated(uint256 _stakingDiscountMultiplier);
+```
+
+### BlockCountInAWeekUpdated
+Emitted when number of blocks in week is updated
+
+
+```solidity
+event BlockCountInAWeekUpdated(uint256 _blockCountInAWeek);
+```
+
+## Structs
+### StakingData
+Struct used as a storage for the current library
+
+
+```solidity
+struct StakingData {
+ uint256 stakingDiscountMultiplier;
+ uint256 blockCountInAWeek;
+ uint256 accLpRewardPerShare;
+ uint256 lpRewards;
+ uint256 totalLpToMigrate;
+}
+```
+
diff --git a/packages/contracts/docs/src/src/dollar/libraries/LibStakingFormulas.sol/library.LibStakingFormulas.md b/packages/contracts/docs/src/src/dollar/libraries/LibStakingFormulas.sol/library.LibStakingFormulas.md
new file mode 100644
index 000000000..d3fa2eceb
--- /dev/null
+++ b/packages/contracts/docs/src/src/dollar/libraries/LibStakingFormulas.sol/library.LibStakingFormulas.md
@@ -0,0 +1,219 @@
+# LibStakingFormulas
+[Git Source](https://github.com/ubiquity/ubiquity-dollar/blob/565aaa6bed7cb481fd57c9fc6a7b1052ff2aa816/src/dollar/libraries/LibStakingFormulas.sol)
+
+Library for staking formulas
+
+
+## Functions
+### correctedAmountToWithdraw
+
+Formula to calculate the corrected amount to withdraw based on the proportion of
+LP deposited against actual LP tokens in the staking contract
+
+`corrected_amount = amount * (stakingLpBalance / totalLpDeposited)`
+
+If there is more or the same amount of LP than deposited then do nothing
+
+
+```solidity
+function correctedAmountToWithdraw(uint256 _totalLpDeposited, uint256 _stakingLpBalance, uint256 _amount)
+ internal
+ pure
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_totalLpDeposited`|`uint256`|Total amount of LP deposited by users|
+|`_stakingLpBalance`|`uint256`|Actual staking contract LP tokens balance minus LP rewards|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP tokens to redeem|
+
+
+### sharesForLP
+
+Formula of governance rights corresponding to a staking shares LP amount
+
+Used on removing liquidity from staking
+
+`shares = (stake.shares * _amount) / stake.lpAmount`
+
+
+```solidity
+function sharesForLP(StakingShare.Stake memory _stake, uint256[2] memory _shareInfo, uint256 _amount)
+ internal
+ pure
+ returns (uint256 _uLP);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_stake`|`StakingShare.Stake`|Stake info of staking share|
+|`_shareInfo`|`uint256[2]`|Array of share amounts|
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`_uLP`|`uint256`|Amount of shares|
+
+
+### lpRewardsRemoveLiquidityNormalization
+
+Formula may add a decreasing rewards if locking end is near when removing liquidity
+
+`rewards = _amount`
+
+
+```solidity
+function lpRewardsRemoveLiquidityNormalization(StakingShare.Stake memory, uint256[2] memory, uint256 _amount)
+ internal
+ pure
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`StakingShare.Stake`||
+|``|`uint256[2]`||
+|`_amount`|`uint256`|Amount of LP tokens|
+
+**Returns**
+
+|Name|Type|Description|
+|----|----|-----------|
+|``|`uint256`|Amount of LP rewards|
+
+
+### lpRewardsAddLiquidityNormalization
+
+Formula may add a decreasing rewards if locking end is near when adding liquidity
+
+`rewards = _amount`
+
+
+```solidity
+function lpRewardsAddLiquidityNormalization(StakingShare.Stake memory, uint256[2] memory, uint256 _amount)
+ internal
+ pure
+ returns (uint256);
+```
+**Parameters**
+
+|Name|Type|Description|
+|----|----|-----------|
+|`