diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 363e561..816bb63 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -2,7 +2,7 @@ name: test
on:
push:
- branches: [ "main" ]
+ branches: [ "dev-2.0" ]
pull_request:
branches: [ "main" ]
@@ -18,21 +18,23 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- with:
- submodules: recursive
- name: Install Foundry
- uses: foundry-rs/foundry-toolchain@v1.2.0
+ uses: foundry-rs/foundry-toolchain@v1.3.1
with:
- version: nightly
+ version: stable
- name: Run Forge build
run: |
forge --version
+ forge soldeer install
forge build --sizes
id: build
- name: Run Forge tests
run: |
- forge test -vvvv
+ forge test -vvv --gas-report
id: test
+
+ - name: Run snapshot
+ run: forge snapshot
diff --git a/.gitignore b/.gitignore
index 09104af..f158b42 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,5 +19,10 @@ docs/
.env
# IDE
+.deps/
.vscode/
.prettierrc.json
+src/artifacts/
+
+# foundry
+dependencies/
diff --git a/.gitmodules b/.gitmodules
index de8b090..9cebb45 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,3 @@
-[submodule "lib/forge-std"]
- path = lib/forge-std
- url = https://github.com/foundry-rs/forge-std
-[submodule "lib/openzeppelin-contracts"]
- path = lib/openzeppelin-contracts
- url = https://github.com/OpenZeppelin/openzeppelin-contracts
-[submodule "lib/prb-math"]
- path = lib/prb-math
- url = https://github.com/paulRBerg/prb-math
+[submodule "src/L2/Superchain"]
+ path = src/L2/Superchain
+ url = git@github.com:M3tering/SuperchainSolaxy.git
diff --git a/README.md b/README.md
index c8a2327..2604d8e 100644
--- a/README.md
+++ b/README.md
@@ -33,18 +33,23 @@ Read our Contribution Guidelines for details. Join us in making Solaxy better!
### Project Layout
The project is filed in the following directory structure:
```
-├── lib/ # Project dependencies stored as git submodules
+├── dependencies/ # Project dependencies stored
├── script/ # Foundry testing scripts
├── src/ # Contains the Solidity smart contract files
│ ├── Interfaces/ # Contract interfaces for Solaxy
├── test/ # Solidity tests for Foundry
```
+### How to Install Dependencies
+Soldeer is used for managing and installing the dependencies for this repo, rather that the default Foundry approach of using git submodules. Simply run `forge soldeer install` to stepup any missing dependencies. See [Foundry book](https://book.getfoundry.sh/projects/soldeer).
+
### How to Run Tests
1. Ensure you have Foundry installed: See [Foundry book](https://book.getfoundry.sh/getting-started/installation)
1. Download or clone the project repository
1. Navigate to the project directory in your terminal.
-1. Run `forge test -vvv` to execute tests on a fork of IoTeX mainnet,
+1. Install all dependencies: See my section on
+ [How to Install Dependencies](#how-to-install-dependencies)
+1. Run `forge test -vvv` to execute tests on a fork of Ethereum mainnet,
### License
This project is licensed under the [MIT License](README.md).
diff --git a/foundry.toml b/foundry.toml
index 2098c20..6a414b0 100644
--- a/foundry.toml
+++ b/foundry.toml
@@ -1,19 +1,28 @@
[profile.default]
src = "src"
out = "out"
-libs = ["lib"]
optimizer = true
optimizer-runs = 1000
-solc-version = "0.8.24"
+solc-version = "0.8.28"
+libs = ["dependencies"]
remappings = [
- "@prb/math@4.0.2/=lib/prb-math/",
- "@openzeppelin/contracts@5.0.2/=lib/openzeppelin-contracts/contracts/"
+ "solady/=dependencies/solady-0.1.7/",
+ "forge-std/=dependencies/forge-std-1.9.5/src/",
+ "@prb/math@4.1.0/=dependencies/@prb-math-4.1.0/",
]
+[soldeer]
+remappings_generate = false
+remappings_location = "config"
+
+[dependencies]
+forge-std = "1.9.5"
+solady = "0.1.7"
+"@prb-math" = "4.1.0"
+
[rpc_endpoints]
-gnosis-mainnet = "https://gnosis-rpc.publicnode.com"
-chiado-testnet = "https://rpc.chiadochain.net"
+ethereum-mainnet = "https://gateway.tenderly.co/public/mainnet"
[fuzz]
seed = "0x544D"
diff --git a/lib/forge-std/.github/workflows/ci.yml b/lib/forge-std/.github/workflows/ci.yml
deleted file mode 100644
index cb241ae..0000000
--- a/lib/forge-std/.github/workflows/ci.yml
+++ /dev/null
@@ -1,134 +0,0 @@
-name: CI
-
-on:
- workflow_dispatch:
- pull_request:
- push:
- branches:
- - master
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - name: Install Foundry
- uses: onbjerg/foundry-toolchain@v1
- with:
- version: nightly
-
- - name: Print forge version
- run: forge --version
-
- # Backwards compatibility checks:
- # - the oldest and newest version of each supported minor version
- # - versions with specific issues
- - name: Check compatibility with latest
- if: always()
- run: |
- output=$(forge build --skip test)
-
- if echo "$output" | grep -q "Warning"; then
- echo "$output"
- exit 1
- fi
-
- - name: Check compatibility with 0.8.0
- if: always()
- run: |
- output=$(forge build --skip test --use solc:0.8.0)
-
- if echo "$output" | grep -q "Warning"; then
- echo "$output"
- exit 1
- fi
-
- - name: Check compatibility with 0.7.6
- if: always()
- run: |
- output=$(forge build --skip test --use solc:0.7.6)
-
- if echo "$output" | grep -q "Warning"; then
- echo "$output"
- exit 1
- fi
-
- - name: Check compatibility with 0.7.0
- if: always()
- run: |
- output=$(forge build --skip test --use solc:0.7.0)
-
- if echo "$output" | grep -q "Warning"; then
- echo "$output"
- exit 1
- fi
-
- - name: Check compatibility with 0.6.12
- if: always()
- run: |
- output=$(forge build --skip test --use solc:0.6.12)
-
- if echo "$output" | grep -q "Warning"; then
- echo "$output"
- exit 1
- fi
-
- - name: Check compatibility with 0.6.2
- if: always()
- run: |
- output=$(forge build --skip test --use solc:0.6.2)
-
- if echo "$output" | grep -q "Warning"; then
- echo "$output"
- exit 1
- fi
-
- # via-ir compilation time checks.
- - name: Measure compilation time of Test with 0.8.17 --via-ir
- if: always()
- run: forge build --skip test --contracts test/compilation/CompilationTest.sol --use solc:0.8.17 --via-ir
-
- - name: Measure compilation time of TestBase with 0.8.17 --via-ir
- if: always()
- run: forge build --skip test --contracts test/compilation/CompilationTestBase.sol --use solc:0.8.17 --via-ir
-
- - name: Measure compilation time of Script with 0.8.17 --via-ir
- if: always()
- run: forge build --skip test --contracts test/compilation/CompilationScript.sol --use solc:0.8.17 --via-ir
-
- - name: Measure compilation time of ScriptBase with 0.8.17 --via-ir
- if: always()
- run: forge build --skip test --contracts test/compilation/CompilationScriptBase.sol --use solc:0.8.17 --via-ir
-
- test:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - name: Install Foundry
- uses: onbjerg/foundry-toolchain@v1
- with:
- version: nightly
-
- - name: Print forge version
- run: forge --version
-
- - name: Run tests
- run: forge test -vvv
-
- fmt:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - name: Install Foundry
- uses: onbjerg/foundry-toolchain@v1
- with:
- version: nightly
-
- - name: Print forge version
- run: forge --version
-
- - name: Check formatting
- run: forge fmt --check
diff --git a/lib/forge-std/.github/workflows/sync.yml b/lib/forge-std/.github/workflows/sync.yml
deleted file mode 100644
index 5a9e9d5..0000000
--- a/lib/forge-std/.github/workflows/sync.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: Sync Release Branch
-
-on:
- release:
- types:
- - created
-
-jobs:
- sync-release-branch:
- runs-on: ubuntu-latest
- if: startsWith(github.event.release.tag_name, 'v1')
- steps:
- - name: Check out the repo
- uses: actions/checkout@v3
- with:
- fetch-depth: 0
- ref: v1
-
- - name: Configure Git
- run: |
- git config user.name github-actions[bot]
- git config user.email 41898282+github-actions[bot]@users.noreply.github.com
-
- - name: Sync Release Branch
- run: |
- git fetch --tags
- git checkout v1
- git reset --hard ${GITHUB_REF}
- git push --force
diff --git a/lib/forge-std/.gitignore b/lib/forge-std/.gitignore
deleted file mode 100644
index 756106d..0000000
--- a/lib/forge-std/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-cache/
-out/
-.vscode
-.idea
diff --git a/lib/forge-std/.gitmodules b/lib/forge-std/.gitmodules
deleted file mode 100644
index e124719..0000000
--- a/lib/forge-std/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "lib/ds-test"]
- path = lib/ds-test
- url = https://github.com/dapphub/ds-test
diff --git a/lib/forge-std/LICENSE-APACHE b/lib/forge-std/LICENSE-APACHE
deleted file mode 100644
index cf01a49..0000000
--- a/lib/forge-std/LICENSE-APACHE
+++ /dev/null
@@ -1,203 +0,0 @@
-Copyright Contributors to Forge Standard Library
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/lib/forge-std/LICENSE-MIT b/lib/forge-std/LICENSE-MIT
deleted file mode 100644
index 28f9830..0000000
--- a/lib/forge-std/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright Contributors to Forge Standard Library
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE O THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.R
diff --git a/lib/forge-std/README.md b/lib/forge-std/README.md
deleted file mode 100644
index 8494a7d..0000000
--- a/lib/forge-std/README.md
+++ /dev/null
@@ -1,250 +0,0 @@
-# Forge Standard Library • [](https://github.com/foundry-rs/forge-std/actions/workflows/ci.yml)
-
-Forge Standard Library is a collection of helpful contracts and libraries for use with [Forge and Foundry](https://github.com/foundry-rs/foundry). It leverages Forge's cheatcodes to make writing tests easier and faster, while improving the UX of cheatcodes.
-
-**Learn how to use Forge-Std with the [📖 Foundry Book (Forge-Std Guide)](https://book.getfoundry.sh/forge/forge-std.html).**
-
-## Install
-
-```bash
-forge install foundry-rs/forge-std
-```
-
-## Contracts
-### stdError
-
-This is a helper contract for errors and reverts. In Forge, this contract is particularly helpful for the `expectRevert` cheatcode, as it provides all compiler builtin errors.
-
-See the contract itself for all error codes.
-
-#### Example usage
-
-```solidity
-
-import "forge-std/Test.sol";
-
-contract TestContract is Test {
- ErrorsTest test;
-
- function setUp() public {
- test = new ErrorsTest();
- }
-
- function testExpectArithmetic() public {
- vm.expectRevert(stdError.arithmeticError);
- test.arithmeticError(10);
- }
-}
-
-contract ErrorsTest {
- function arithmeticError(uint256 a) public {
- uint256 a = a - 100;
- }
-}
-```
-
-### stdStorage
-
-This is a rather large contract due to all of the overloading to make the UX decent. Primarily, it is a wrapper around the `record` and `accesses` cheatcodes. It can *always* find and write the storage slot(s) associated with a particular variable without knowing the storage layout. The one _major_ caveat to this is while a slot can be found for packed storage variables, we can't write to that variable safely. If a user tries to write to a packed slot, the execution throws an error, unless it is uninitialized (`bytes32(0)`).
-
-This works by recording all `SLOAD`s and `SSTORE`s during a function call. If there is a single slot read or written to, it immediately returns the slot. Otherwise, behind the scenes, we iterate through and check each one (assuming the user passed in a `depth` parameter). If the variable is a struct, you can pass in a `depth` parameter which is basically the field depth.
-
-I.e.:
-```solidity
-struct T {
- // depth 0
- uint256 a;
- // depth 1
- uint256 b;
-}
-```
-
-#### Example usage
-
-```solidity
-import "forge-std/Test.sol";
-
-contract TestContract is Test {
- using stdStorage for StdStorage;
-
- Storage test;
-
- function setUp() public {
- test = new Storage();
- }
-
- function testFindExists() public {
- // Lets say we want to find the slot for the public
- // variable `exists`. We just pass in the function selector
- // to the `find` command
- uint256 slot = stdstore.target(address(test)).sig("exists()").find();
- assertEq(slot, 0);
- }
-
- function testWriteExists() public {
- // Lets say we want to write to the slot for the public
- // variable `exists`. We just pass in the function selector
- // to the `checked_write` command
- stdstore.target(address(test)).sig("exists()").checked_write(100);
- assertEq(test.exists(), 100);
- }
-
- // It supports arbitrary storage layouts, like assembly based storage locations
- function testFindHidden() public {
- // `hidden` is a random hash of a bytes, iteration through slots would
- // not find it. Our mechanism does
- // Also, you can use the selector instead of a string
- uint256 slot = stdstore.target(address(test)).sig(test.hidden.selector).find();
- assertEq(slot, uint256(keccak256("my.random.var")));
- }
-
- // If targeting a mapping, you have to pass in the keys necessary to perform the find
- // i.e.:
- function testFindMapping() public {
- uint256 slot = stdstore
- .target(address(test))
- .sig(test.map_addr.selector)
- .with_key(address(this))
- .find();
- // in the `Storage` constructor, we wrote that this address' value was 1 in the map
- // so when we load the slot, we expect it to be 1
- assertEq(uint(vm.load(address(test), bytes32(slot))), 1);
- }
-
- // If the target is a struct, you can specify the field depth:
- function testFindStruct() public {
- // NOTE: see the depth parameter - 0 means 0th field, 1 means 1st field, etc.
- uint256 slot_for_a_field = stdstore
- .target(address(test))
- .sig(test.basicStruct.selector)
- .depth(0)
- .find();
-
- uint256 slot_for_b_field = stdstore
- .target(address(test))
- .sig(test.basicStruct.selector)
- .depth(1)
- .find();
-
- assertEq(uint(vm.load(address(test), bytes32(slot_for_a_field))), 1);
- assertEq(uint(vm.load(address(test), bytes32(slot_for_b_field))), 2);
- }
-}
-
-// A complex storage contract
-contract Storage {
- struct UnpackedStruct {
- uint256 a;
- uint256 b;
- }
-
- constructor() {
- map_addr[msg.sender] = 1;
- }
-
- uint256 public exists = 1;
- mapping(address => uint256) public map_addr;
- // mapping(address => Packed) public map_packed;
- mapping(address => UnpackedStruct) public map_struct;
- mapping(address => mapping(address => uint256)) public deep_map;
- mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct;
- UnpackedStruct public basicStruct = UnpackedStruct({
- a: 1,
- b: 2
- });
-
- function hidden() public view returns (bytes32 t) {
- // an extremely hidden storage slot
- bytes32 slot = keccak256("my.random.var");
- assembly {
- t := sload(slot)
- }
- }
-}
-```
-
-### stdCheats
-
-This is a wrapper over miscellaneous cheatcodes that need wrappers to be more dev friendly. Currently there are only functions related to `prank`. In general, users may expect ETH to be put into an address on `prank`, but this is not the case for safety reasons. Explicitly this `hoax` function should only be used for address that have expected balances as it will get overwritten. If an address already has ETH, you should just use `prank`. If you want to change that balance explicitly, just use `deal`. If you want to do both, `hoax` is also right for you.
-
-
-#### Example usage:
-```solidity
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.0;
-
-import "forge-std/Test.sol";
-
-// Inherit the stdCheats
-contract StdCheatsTest is Test {
- Bar test;
- function setUp() public {
- test = new Bar();
- }
-
- function testHoax() public {
- // we call `hoax`, which gives the target address
- // eth and then calls `prank`
- hoax(address(1337));
- test.bar{value: 100}(address(1337));
-
- // overloaded to allow you to specify how much eth to
- // initialize the address with
- hoax(address(1337), 1);
- test.bar{value: 1}(address(1337));
- }
-
- function testStartHoax() public {
- // we call `startHoax`, which gives the target address
- // eth and then calls `startPrank`
- //
- // it is also overloaded so that you can specify an eth amount
- startHoax(address(1337));
- test.bar{value: 100}(address(1337));
- test.bar{value: 100}(address(1337));
- vm.stopPrank();
- test.bar(address(this));
- }
-}
-
-contract Bar {
- function bar(address expectedSender) public payable {
- require(msg.sender == expectedSender, "!prank");
- }
-}
-```
-
-### Std Assertions
-
-Expand upon the assertion functions from the `DSTest` library.
-
-### `console.log`
-
-Usage follows the same format as [Hardhat](https://hardhat.org/hardhat-network/reference/#console-log).
-It's recommended to use `console2.sol` as shown below, as this will show the decoded logs in Forge traces.
-
-```solidity
-// import it indirectly via Test.sol
-import "forge-std/Test.sol";
-// or directly import it
-import "forge-std/console2.sol";
-...
-console2.log(someValue);
-```
-
-If you need compatibility with Hardhat, you must use the standard `console.sol` instead.
-Due to a bug in `console.sol`, logs that use `uint256` or `int256` types will not be properly decoded in Forge traces.
-
-```solidity
-// import it indirectly via Test.sol
-import "forge-std/Test.sol";
-// or directly import it
-import "forge-std/console.sol";
-...
-console.log(someValue);
-```
-
-## License
-
-Forge Standard Library is offered under either [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE-APACHE) license.
diff --git a/lib/forge-std/foundry.toml b/lib/forge-std/foundry.toml
deleted file mode 100644
index f9679ee..0000000
--- a/lib/forge-std/foundry.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[profile.default]
-fs_permissions = [{ access = "read-write", path = "./"}]
-
-[rpc_endpoints]
-# The RPC URLs are modified versions of the default for testing initialization.
-mainnet = "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3" # Different API key.
-optimism_goerli = "https://goerli.optimism.io/" # Adds a trailing slash.
-arbitrum_one_goerli = "https://goerli-rollup.arbitrum.io/rpc/" # Adds a trailing slash.
-needs_undefined_env_var = "${UNDEFINED_RPC_URL_PLACEHOLDER}"
-
-[fmt]
-# These are all the `forge fmt` defaults.
-line_length = 120
-tab_width = 4
-bracket_spacing = false
-int_types = 'long'
-multiline_func_header = 'attributes_first'
-quote_style = 'double'
-number_underscore = 'preserve'
-single_line_statement_blocks = 'preserve'
-ignore = ["src/console.sol", "src/console2.sol"]
\ No newline at end of file
diff --git a/lib/forge-std/lib/ds-test/.github/workflows/build.yml b/lib/forge-std/lib/ds-test/.github/workflows/build.yml
deleted file mode 100644
index d2ff97d..0000000
--- a/lib/forge-std/lib/ds-test/.github/workflows/build.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: "Build"
-on:
- pull_request:
- push:
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - uses: cachix/install-nix-action@v20
- with:
- nix_path: nixpkgs=channel:nixos-unstable
- extra_nix_config: |
- access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
-
- - name: setup dapp binary cache
- uses: cachix/cachix-action@v12
- with:
- name: dapp
-
- - name: install dapptools
- run: nix profile install github:dapphub/dapptools#dapp --accept-flake-config
-
- - name: install foundry
- uses: foundry-rs/foundry-toolchain@v1
-
- - name: test with solc-0.5.17
- run: dapp --use solc-0.5.17 test -v
-
- - name: test with solc-0.6.11
- run: dapp --use solc-0.6.11 test -v
-
- - name: test with solc-0.7.6
- run: dapp --use solc-0.7.6 test -v
-
- - name: test with solc-0.8.18
- run: dapp --use solc-0.8.18 test -v
-
- - name: Run tests with foundry
- run: forge test -vvv
-
diff --git a/lib/forge-std/lib/ds-test/.gitignore b/lib/forge-std/lib/ds-test/.gitignore
deleted file mode 100644
index 462a994..0000000
--- a/lib/forge-std/lib/ds-test/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/.dapple
-/build
-/out
-/cache/
diff --git a/lib/forge-std/lib/ds-test/LICENSE b/lib/forge-std/lib/ds-test/LICENSE
deleted file mode 100644
index 94a9ed0..0000000
--- a/lib/forge-std/lib/ds-test/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/lib/forge-std/lib/ds-test/Makefile b/lib/forge-std/lib/ds-test/Makefile
deleted file mode 100644
index 661dac4..0000000
--- a/lib/forge-std/lib/ds-test/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-all:; dapp build
-
-test:
- -dapp --use solc:0.4.23 build
- -dapp --use solc:0.4.26 build
- -dapp --use solc:0.5.17 build
- -dapp --use solc:0.6.12 build
- -dapp --use solc:0.7.5 build
-
-demo:
- DAPP_SRC=demo dapp --use solc:0.7.5 build
- -hevm dapp-test --verbose 3
-
-.PHONY: test demo
diff --git a/lib/forge-std/lib/ds-test/default.nix b/lib/forge-std/lib/ds-test/default.nix
deleted file mode 100644
index cf65419..0000000
--- a/lib/forge-std/lib/ds-test/default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{ solidityPackage, dappsys }: solidityPackage {
- name = "ds-test";
- src = ./src;
-}
diff --git a/lib/forge-std/lib/ds-test/demo/demo.sol b/lib/forge-std/lib/ds-test/demo/demo.sol
deleted file mode 100644
index f3bb48e..0000000
--- a/lib/forge-std/lib/ds-test/demo/demo.sol
+++ /dev/null
@@ -1,222 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-pragma solidity >=0.5.0;
-
-import "../src/test.sol";
-
-contract DemoTest is DSTest {
- function test_this() public pure {
- require(true);
- }
- function test_logs() public {
- emit log("-- log(string)");
- emit log("a string");
-
- emit log("-- log_named_uint(string, uint)");
- emit log_named_uint("uint", 512);
-
- emit log("-- log_named_int(string, int)");
- emit log_named_int("int", -512);
-
- emit log("-- log_named_address(string, address)");
- emit log_named_address("address", address(this));
-
- emit log("-- log_named_bytes32(string, bytes32)");
- emit log_named_bytes32("bytes32", "a string");
-
- emit log("-- log_named_bytes(string, bytes)");
- emit log_named_bytes("bytes", hex"cafefe");
-
- emit log("-- log_named_string(string, string)");
- emit log_named_string("string", "a string");
-
- emit log("-- log_named_decimal_uint(string, uint, uint)");
- emit log_named_decimal_uint("decimal uint", 1.0e18, 18);
-
- emit log("-- log_named_decimal_int(string, int, uint)");
- emit log_named_decimal_int("decimal int", -1.0e18, 18);
- }
- event log_old_named_uint(bytes32,uint);
- function test_old_logs() public {
- emit log_old_named_uint("key", 500);
- emit log_named_bytes32("bkey", "val");
- }
- function test_trace() public view {
- this.echo("string 1", "string 2");
- }
- function test_multiline() public {
- emit log("a multiline\\nstring");
- emit log("a multiline string");
- emit log_bytes("a string");
- emit log_bytes("a multiline\nstring");
- emit log_bytes("a multiline\\nstring");
- emit logs(hex"0000");
- emit log_named_bytes("0x0000", hex"0000");
- emit logs(hex"ff");
- }
- function echo(string memory s1, string memory s2) public pure
- returns (string memory, string memory)
- {
- return (s1, s2);
- }
-
- function prove_this(uint x) public {
- emit log_named_uint("sym x", x);
- assertGt(x + 1, 0);
- }
-
- function test_logn() public {
- assembly {
- log0(0x01, 0x02)
- log1(0x01, 0x02, 0x03)
- log2(0x01, 0x02, 0x03, 0x04)
- log3(0x01, 0x02, 0x03, 0x04, 0x05)
- }
- }
-
- event MyEvent(uint, uint indexed, uint, uint indexed);
- function test_events() public {
- emit MyEvent(1, 2, 3, 4);
- }
-
- function test_asserts() public {
- string memory err = "this test has failed!";
- emit log("## assertTrue(bool)\n");
- assertTrue(false);
- emit log("\n");
- assertTrue(false, err);
-
- emit log("\n## assertEq(address,address)\n");
- assertEq(address(this), msg.sender);
- emit log("\n");
- assertEq(address(this), msg.sender, err);
-
- emit log("\n## assertEq32(bytes32,bytes32)\n");
- assertEq32("bytes 1", "bytes 2");
- emit log("\n");
- assertEq32("bytes 1", "bytes 2", err);
-
- emit log("\n## assertEq(bytes32,bytes32)\n");
- assertEq32("bytes 1", "bytes 2");
- emit log("\n");
- assertEq32("bytes 1", "bytes 2", err);
-
- emit log("\n## assertEq(uint,uint)\n");
- assertEq(uint(0), 1);
- emit log("\n");
- assertEq(uint(0), 1, err);
-
- emit log("\n## assertEq(int,int)\n");
- assertEq(-1, -2);
- emit log("\n");
- assertEq(-1, -2, err);
-
- emit log("\n## assertEqDecimal(int,int,uint)\n");
- assertEqDecimal(-1.0e18, -1.1e18, 18);
- emit log("\n");
- assertEqDecimal(-1.0e18, -1.1e18, 18, err);
-
- emit log("\n## assertEqDecimal(uint,uint,uint)\n");
- assertEqDecimal(uint(1.0e18), 1.1e18, 18);
- emit log("\n");
- assertEqDecimal(uint(1.0e18), 1.1e18, 18, err);
-
- emit log("\n## assertGt(uint,uint)\n");
- assertGt(uint(0), 0);
- emit log("\n");
- assertGt(uint(0), 0, err);
-
- emit log("\n## assertGt(int,int)\n");
- assertGt(-1, -1);
- emit log("\n");
- assertGt(-1, -1, err);
-
- emit log("\n## assertGtDecimal(int,int,uint)\n");
- assertGtDecimal(-2.0e18, -1.1e18, 18);
- emit log("\n");
- assertGtDecimal(-2.0e18, -1.1e18, 18, err);
-
- emit log("\n## assertGtDecimal(uint,uint,uint)\n");
- assertGtDecimal(uint(1.0e18), 1.1e18, 18);
- emit log("\n");
- assertGtDecimal(uint(1.0e18), 1.1e18, 18, err);
-
- emit log("\n## assertGe(uint,uint)\n");
- assertGe(uint(0), 1);
- emit log("\n");
- assertGe(uint(0), 1, err);
-
- emit log("\n## assertGe(int,int)\n");
- assertGe(-1, 0);
- emit log("\n");
- assertGe(-1, 0, err);
-
- emit log("\n## assertGeDecimal(int,int,uint)\n");
- assertGeDecimal(-2.0e18, -1.1e18, 18);
- emit log("\n");
- assertGeDecimal(-2.0e18, -1.1e18, 18, err);
-
- emit log("\n## assertGeDecimal(uint,uint,uint)\n");
- assertGeDecimal(uint(1.0e18), 1.1e18, 18);
- emit log("\n");
- assertGeDecimal(uint(1.0e18), 1.1e18, 18, err);
-
- emit log("\n## assertLt(uint,uint)\n");
- assertLt(uint(0), 0);
- emit log("\n");
- assertLt(uint(0), 0, err);
-
- emit log("\n## assertLt(int,int)\n");
- assertLt(-1, -1);
- emit log("\n");
- assertLt(-1, -1, err);
-
- emit log("\n## assertLtDecimal(int,int,uint)\n");
- assertLtDecimal(-1.0e18, -1.1e18, 18);
- emit log("\n");
- assertLtDecimal(-1.0e18, -1.1e18, 18, err);
-
- emit log("\n## assertLtDecimal(uint,uint,uint)\n");
- assertLtDecimal(uint(2.0e18), 1.1e18, 18);
- emit log("\n");
- assertLtDecimal(uint(2.0e18), 1.1e18, 18, err);
-
- emit log("\n## assertLe(uint,uint)\n");
- assertLe(uint(1), 0);
- emit log("\n");
- assertLe(uint(1), 0, err);
-
- emit log("\n## assertLe(int,int)\n");
- assertLe(0, -1);
- emit log("\n");
- assertLe(0, -1, err);
-
- emit log("\n## assertLeDecimal(int,int,uint)\n");
- assertLeDecimal(-1.0e18, -1.1e18, 18);
- emit log("\n");
- assertLeDecimal(-1.0e18, -1.1e18, 18, err);
-
- emit log("\n## assertLeDecimal(uint,uint,uint)\n");
- assertLeDecimal(uint(2.0e18), 1.1e18, 18);
- emit log("\n");
- assertLeDecimal(uint(2.0e18), 1.1e18, 18, err);
-
- emit log("\n## assertEq(string,string)\n");
- string memory s1 = "string 1";
- string memory s2 = "string 2";
- assertEq(s1, s2);
- emit log("\n");
- assertEq(s1, s2, err);
-
- emit log("\n## assertEq0(bytes,bytes)\n");
- assertEq0(hex"abcdef01", hex"abcdef02");
- emit log("\n");
- assertEq0(hex"abcdef01", hex"abcdef02", err);
- }
-}
-
-contract DemoTestWithSetUp {
- function setUp() public {
- }
- function test_pass() public pure {
- }
-}
diff --git a/lib/forge-std/lib/ds-test/package.json b/lib/forge-std/lib/ds-test/package.json
deleted file mode 100644
index 4802ada..0000000
--- a/lib/forge-std/lib/ds-test/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "ds-test",
- "version": "1.0.0",
- "description": "Assertions, equality checks and other test helpers ",
- "bugs": "https://github.com/dapphub/ds-test/issues",
- "license": "GPL-3.0",
- "author": "Contributors to ds-test",
- "files": [
- "src/*"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/dapphub/ds-test.git"
- }
-}
diff --git a/lib/forge-std/lib/ds-test/src/test.sol b/lib/forge-std/lib/ds-test/src/test.sol
deleted file mode 100644
index 2bf3375..0000000
--- a/lib/forge-std/lib/ds-test/src/test.sol
+++ /dev/null
@@ -1,592 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see .
-
-pragma solidity >=0.5.0;
-
-contract DSTest {
- event log (string);
- event logs (bytes);
-
- event log_address (address);
- event log_bytes32 (bytes32);
- event log_int (int);
- event log_uint (uint);
- event log_bytes (bytes);
- event log_string (string);
-
- event log_named_address (string key, address val);
- event log_named_bytes32 (string key, bytes32 val);
- event log_named_decimal_int (string key, int val, uint decimals);
- event log_named_decimal_uint (string key, uint val, uint decimals);
- event log_named_int (string key, int val);
- event log_named_uint (string key, uint val);
- event log_named_bytes (string key, bytes val);
- event log_named_string (string key, string val);
-
- bool public IS_TEST = true;
- bool private _failed;
-
- address constant HEVM_ADDRESS =
- address(bytes20(uint160(uint256(keccak256('hevm cheat code')))));
-
- modifier mayRevert() { _; }
- modifier testopts(string memory) { _; }
-
- function failed() public returns (bool) {
- if (_failed) {
- return _failed;
- } else {
- bool globalFailed = false;
- if (hasHEVMContext()) {
- (, bytes memory retdata) = HEVM_ADDRESS.call(
- abi.encodePacked(
- bytes4(keccak256("load(address,bytes32)")),
- abi.encode(HEVM_ADDRESS, bytes32("failed"))
- )
- );
- globalFailed = abi.decode(retdata, (bool));
- }
- return globalFailed;
- }
- }
-
- function fail() internal virtual {
- if (hasHEVMContext()) {
- (bool status, ) = HEVM_ADDRESS.call(
- abi.encodePacked(
- bytes4(keccak256("store(address,bytes32,bytes32)")),
- abi.encode(HEVM_ADDRESS, bytes32("failed"), bytes32(uint256(0x01)))
- )
- );
- status; // Silence compiler warnings
- }
- _failed = true;
- }
-
- function hasHEVMContext() internal view returns (bool) {
- uint256 hevmCodeSize = 0;
- assembly {
- hevmCodeSize := extcodesize(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D)
- }
- return hevmCodeSize > 0;
- }
-
- modifier logs_gas() {
- uint startGas = gasleft();
- _;
- uint endGas = gasleft();
- emit log_named_uint("gas", startGas - endGas);
- }
-
- function assertTrue(bool condition) internal {
- if (!condition) {
- emit log("Error: Assertion Failed");
- fail();
- }
- }
-
- function assertTrue(bool condition, string memory err) internal {
- if (!condition) {
- emit log_named_string("Error", err);
- assertTrue(condition);
- }
- }
-
- function assertEq(address a, address b) internal {
- if (a != b) {
- emit log("Error: a == b not satisfied [address]");
- emit log_named_address(" Left", a);
- emit log_named_address(" Right", b);
- fail();
- }
- }
- function assertEq(address a, address b, string memory err) internal {
- if (a != b) {
- emit log_named_string ("Error", err);
- assertEq(a, b);
- }
- }
-
- function assertEq(bytes32 a, bytes32 b) internal {
- if (a != b) {
- emit log("Error: a == b not satisfied [bytes32]");
- emit log_named_bytes32(" Left", a);
- emit log_named_bytes32(" Right", b);
- fail();
- }
- }
- function assertEq(bytes32 a, bytes32 b, string memory err) internal {
- if (a != b) {
- emit log_named_string ("Error", err);
- assertEq(a, b);
- }
- }
- function assertEq32(bytes32 a, bytes32 b) internal {
- assertEq(a, b);
- }
- function assertEq32(bytes32 a, bytes32 b, string memory err) internal {
- assertEq(a, b, err);
- }
-
- function assertEq(int a, int b) internal {
- if (a != b) {
- emit log("Error: a == b not satisfied [int]");
- emit log_named_int(" Left", a);
- emit log_named_int(" Right", b);
- fail();
- }
- }
- function assertEq(int a, int b, string memory err) internal {
- if (a != b) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
- function assertEq(uint a, uint b) internal {
- if (a != b) {
- emit log("Error: a == b not satisfied [uint]");
- emit log_named_uint(" Left", a);
- emit log_named_uint(" Right", b);
- fail();
- }
- }
- function assertEq(uint a, uint b, string memory err) internal {
- if (a != b) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
- function assertEqDecimal(int a, int b, uint decimals) internal {
- if (a != b) {
- emit log("Error: a == b not satisfied [decimal int]");
- emit log_named_decimal_int(" Left", a, decimals);
- emit log_named_decimal_int(" Right", b, decimals);
- fail();
- }
- }
- function assertEqDecimal(int a, int b, uint decimals, string memory err) internal {
- if (a != b) {
- emit log_named_string("Error", err);
- assertEqDecimal(a, b, decimals);
- }
- }
- function assertEqDecimal(uint a, uint b, uint decimals) internal {
- if (a != b) {
- emit log("Error: a == b not satisfied [decimal uint]");
- emit log_named_decimal_uint(" Left", a, decimals);
- emit log_named_decimal_uint(" Right", b, decimals);
- fail();
- }
- }
- function assertEqDecimal(uint a, uint b, uint decimals, string memory err) internal {
- if (a != b) {
- emit log_named_string("Error", err);
- assertEqDecimal(a, b, decimals);
- }
- }
-
- function assertNotEq(address a, address b) internal {
- if (a == b) {
- emit log("Error: a != b not satisfied [address]");
- emit log_named_address(" Left", a);
- emit log_named_address(" Right", b);
- fail();
- }
- }
- function assertNotEq(address a, address b, string memory err) internal {
- if (a == b) {
- emit log_named_string ("Error", err);
- assertNotEq(a, b);
- }
- }
-
- function assertNotEq(bytes32 a, bytes32 b) internal {
- if (a == b) {
- emit log("Error: a != b not satisfied [bytes32]");
- emit log_named_bytes32(" Left", a);
- emit log_named_bytes32(" Right", b);
- fail();
- }
- }
- function assertNotEq(bytes32 a, bytes32 b, string memory err) internal {
- if (a == b) {
- emit log_named_string ("Error", err);
- assertNotEq(a, b);
- }
- }
- function assertNotEq32(bytes32 a, bytes32 b) internal {
- assertNotEq(a, b);
- }
- function assertNotEq32(bytes32 a, bytes32 b, string memory err) internal {
- assertNotEq(a, b, err);
- }
-
- function assertNotEq(int a, int b) internal {
- if (a == b) {
- emit log("Error: a != b not satisfied [int]");
- emit log_named_int(" Left", a);
- emit log_named_int(" Right", b);
- fail();
- }
- }
- function assertNotEq(int a, int b, string memory err) internal {
- if (a == b) {
- emit log_named_string("Error", err);
- assertNotEq(a, b);
- }
- }
- function assertNotEq(uint a, uint b) internal {
- if (a == b) {
- emit log("Error: a != b not satisfied [uint]");
- emit log_named_uint(" Left", a);
- emit log_named_uint(" Right", b);
- fail();
- }
- }
- function assertNotEq(uint a, uint b, string memory err) internal {
- if (a == b) {
- emit log_named_string("Error", err);
- assertNotEq(a, b);
- }
- }
- function assertNotEqDecimal(int a, int b, uint decimals) internal {
- if (a == b) {
- emit log("Error: a != b not satisfied [decimal int]");
- emit log_named_decimal_int(" Left", a, decimals);
- emit log_named_decimal_int(" Right", b, decimals);
- fail();
- }
- }
- function assertNotEqDecimal(int a, int b, uint decimals, string memory err) internal {
- if (a == b) {
- emit log_named_string("Error", err);
- assertNotEqDecimal(a, b, decimals);
- }
- }
- function assertNotEqDecimal(uint a, uint b, uint decimals) internal {
- if (a == b) {
- emit log("Error: a != b not satisfied [decimal uint]");
- emit log_named_decimal_uint(" Left", a, decimals);
- emit log_named_decimal_uint(" Right", b, decimals);
- fail();
- }
- }
- function assertNotEqDecimal(uint a, uint b, uint decimals, string memory err) internal {
- if (a == b) {
- emit log_named_string("Error", err);
- assertNotEqDecimal(a, b, decimals);
- }
- }
-
- function assertGt(uint a, uint b) internal {
- if (a <= b) {
- emit log("Error: a > b not satisfied [uint]");
- emit log_named_uint(" Value a", a);
- emit log_named_uint(" Value b", b);
- fail();
- }
- }
- function assertGt(uint a, uint b, string memory err) internal {
- if (a <= b) {
- emit log_named_string("Error", err);
- assertGt(a, b);
- }
- }
- function assertGt(int a, int b) internal {
- if (a <= b) {
- emit log("Error: a > b not satisfied [int]");
- emit log_named_int(" Value a", a);
- emit log_named_int(" Value b", b);
- fail();
- }
- }
- function assertGt(int a, int b, string memory err) internal {
- if (a <= b) {
- emit log_named_string("Error", err);
- assertGt(a, b);
- }
- }
- function assertGtDecimal(int a, int b, uint decimals) internal {
- if (a <= b) {
- emit log("Error: a > b not satisfied [decimal int]");
- emit log_named_decimal_int(" Value a", a, decimals);
- emit log_named_decimal_int(" Value b", b, decimals);
- fail();
- }
- }
- function assertGtDecimal(int a, int b, uint decimals, string memory err) internal {
- if (a <= b) {
- emit log_named_string("Error", err);
- assertGtDecimal(a, b, decimals);
- }
- }
- function assertGtDecimal(uint a, uint b, uint decimals) internal {
- if (a <= b) {
- emit log("Error: a > b not satisfied [decimal uint]");
- emit log_named_decimal_uint(" Value a", a, decimals);
- emit log_named_decimal_uint(" Value b", b, decimals);
- fail();
- }
- }
- function assertGtDecimal(uint a, uint b, uint decimals, string memory err) internal {
- if (a <= b) {
- emit log_named_string("Error", err);
- assertGtDecimal(a, b, decimals);
- }
- }
-
- function assertGe(uint a, uint b) internal {
- if (a < b) {
- emit log("Error: a >= b not satisfied [uint]");
- emit log_named_uint(" Value a", a);
- emit log_named_uint(" Value b", b);
- fail();
- }
- }
- function assertGe(uint a, uint b, string memory err) internal {
- if (a < b) {
- emit log_named_string("Error", err);
- assertGe(a, b);
- }
- }
- function assertGe(int a, int b) internal {
- if (a < b) {
- emit log("Error: a >= b not satisfied [int]");
- emit log_named_int(" Value a", a);
- emit log_named_int(" Value b", b);
- fail();
- }
- }
- function assertGe(int a, int b, string memory err) internal {
- if (a < b) {
- emit log_named_string("Error", err);
- assertGe(a, b);
- }
- }
- function assertGeDecimal(int a, int b, uint decimals) internal {
- if (a < b) {
- emit log("Error: a >= b not satisfied [decimal int]");
- emit log_named_decimal_int(" Value a", a, decimals);
- emit log_named_decimal_int(" Value b", b, decimals);
- fail();
- }
- }
- function assertGeDecimal(int a, int b, uint decimals, string memory err) internal {
- if (a < b) {
- emit log_named_string("Error", err);
- assertGeDecimal(a, b, decimals);
- }
- }
- function assertGeDecimal(uint a, uint b, uint decimals) internal {
- if (a < b) {
- emit log("Error: a >= b not satisfied [decimal uint]");
- emit log_named_decimal_uint(" Value a", a, decimals);
- emit log_named_decimal_uint(" Value b", b, decimals);
- fail();
- }
- }
- function assertGeDecimal(uint a, uint b, uint decimals, string memory err) internal {
- if (a < b) {
- emit log_named_string("Error", err);
- assertGeDecimal(a, b, decimals);
- }
- }
-
- function assertLt(uint a, uint b) internal {
- if (a >= b) {
- emit log("Error: a < b not satisfied [uint]");
- emit log_named_uint(" Value a", a);
- emit log_named_uint(" Value b", b);
- fail();
- }
- }
- function assertLt(uint a, uint b, string memory err) internal {
- if (a >= b) {
- emit log_named_string("Error", err);
- assertLt(a, b);
- }
- }
- function assertLt(int a, int b) internal {
- if (a >= b) {
- emit log("Error: a < b not satisfied [int]");
- emit log_named_int(" Value a", a);
- emit log_named_int(" Value b", b);
- fail();
- }
- }
- function assertLt(int a, int b, string memory err) internal {
- if (a >= b) {
- emit log_named_string("Error", err);
- assertLt(a, b);
- }
- }
- function assertLtDecimal(int a, int b, uint decimals) internal {
- if (a >= b) {
- emit log("Error: a < b not satisfied [decimal int]");
- emit log_named_decimal_int(" Value a", a, decimals);
- emit log_named_decimal_int(" Value b", b, decimals);
- fail();
- }
- }
- function assertLtDecimal(int a, int b, uint decimals, string memory err) internal {
- if (a >= b) {
- emit log_named_string("Error", err);
- assertLtDecimal(a, b, decimals);
- }
- }
- function assertLtDecimal(uint a, uint b, uint decimals) internal {
- if (a >= b) {
- emit log("Error: a < b not satisfied [decimal uint]");
- emit log_named_decimal_uint(" Value a", a, decimals);
- emit log_named_decimal_uint(" Value b", b, decimals);
- fail();
- }
- }
- function assertLtDecimal(uint a, uint b, uint decimals, string memory err) internal {
- if (a >= b) {
- emit log_named_string("Error", err);
- assertLtDecimal(a, b, decimals);
- }
- }
-
- function assertLe(uint a, uint b) internal {
- if (a > b) {
- emit log("Error: a <= b not satisfied [uint]");
- emit log_named_uint(" Value a", a);
- emit log_named_uint(" Value b", b);
- fail();
- }
- }
- function assertLe(uint a, uint b, string memory err) internal {
- if (a > b) {
- emit log_named_string("Error", err);
- assertLe(a, b);
- }
- }
- function assertLe(int a, int b) internal {
- if (a > b) {
- emit log("Error: a <= b not satisfied [int]");
- emit log_named_int(" Value a", a);
- emit log_named_int(" Value b", b);
- fail();
- }
- }
- function assertLe(int a, int b, string memory err) internal {
- if (a > b) {
- emit log_named_string("Error", err);
- assertLe(a, b);
- }
- }
- function assertLeDecimal(int a, int b, uint decimals) internal {
- if (a > b) {
- emit log("Error: a <= b not satisfied [decimal int]");
- emit log_named_decimal_int(" Value a", a, decimals);
- emit log_named_decimal_int(" Value b", b, decimals);
- fail();
- }
- }
- function assertLeDecimal(int a, int b, uint decimals, string memory err) internal {
- if (a > b) {
- emit log_named_string("Error", err);
- assertLeDecimal(a, b, decimals);
- }
- }
- function assertLeDecimal(uint a, uint b, uint decimals) internal {
- if (a > b) {
- emit log("Error: a <= b not satisfied [decimal uint]");
- emit log_named_decimal_uint(" Value a", a, decimals);
- emit log_named_decimal_uint(" Value b", b, decimals);
- fail();
- }
- }
- function assertLeDecimal(uint a, uint b, uint decimals, string memory err) internal {
- if (a > b) {
- emit log_named_string("Error", err);
- assertLeDecimal(a, b, decimals);
- }
- }
-
- function assertEq(string memory a, string memory b) internal {
- if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) {
- emit log("Error: a == b not satisfied [string]");
- emit log_named_string(" Left", a);
- emit log_named_string(" Right", b);
- fail();
- }
- }
- function assertEq(string memory a, string memory b, string memory err) internal {
- if (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b))) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
-
- function assertNotEq(string memory a, string memory b) internal {
- if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) {
- emit log("Error: a != b not satisfied [string]");
- emit log_named_string(" Left", a);
- emit log_named_string(" Right", b);
- fail();
- }
- }
- function assertNotEq(string memory a, string memory b, string memory err) internal {
- if (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))) {
- emit log_named_string("Error", err);
- assertNotEq(a, b);
- }
- }
-
- function checkEq0(bytes memory a, bytes memory b) internal pure returns (bool ok) {
- ok = true;
- if (a.length == b.length) {
- for (uint i = 0; i < a.length; i++) {
- if (a[i] != b[i]) {
- ok = false;
- }
- }
- } else {
- ok = false;
- }
- }
- function assertEq0(bytes memory a, bytes memory b) internal {
- if (!checkEq0(a, b)) {
- emit log("Error: a == b not satisfied [bytes]");
- emit log_named_bytes(" Left", a);
- emit log_named_bytes(" Right", b);
- fail();
- }
- }
- function assertEq0(bytes memory a, bytes memory b, string memory err) internal {
- if (!checkEq0(a, b)) {
- emit log_named_string("Error", err);
- assertEq0(a, b);
- }
- }
-
- function assertNotEq0(bytes memory a, bytes memory b) internal {
- if (checkEq0(a, b)) {
- emit log("Error: a != b not satisfied [bytes]");
- emit log_named_bytes(" Left", a);
- emit log_named_bytes(" Right", b);
- fail();
- }
- }
- function assertNotEq0(bytes memory a, bytes memory b, string memory err) internal {
- if (checkEq0(a, b)) {
- emit log_named_string("Error", err);
- assertNotEq0(a, b);
- }
- }
-}
diff --git a/lib/forge-std/lib/ds-test/src/test.t.sol b/lib/forge-std/lib/ds-test/src/test.t.sol
deleted file mode 100644
index d277a30..0000000
--- a/lib/forge-std/lib/ds-test/src/test.t.sol
+++ /dev/null
@@ -1,417 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-pragma solidity >=0.5.0;
-
-import {DSTest} from "./test.sol";
-
-contract DemoTest is DSTest {
-
- // --- assertTrue ---
-
- function testAssertTrue() public {
- assertTrue(true, "msg");
- assertTrue(true);
- }
- function testFailAssertTrue() public {
- assertTrue(false);
- }
- function testFailAssertTrueWithMsg() public {
- assertTrue(false, "msg");
- }
-
- // --- assertEq (Addr) ---
-
- function testAssertEqAddr() public {
- assertEq(address(0x0), address(0x0), "msg");
- assertEq(address(0x0), address(0x0));
- }
- function testFailAssertEqAddr() public {
- assertEq(address(0x0), address(0x1));
- }
- function testFailAssertEqAddrWithMsg() public {
- assertEq(address(0x0), address(0x1), "msg");
- }
-
- // --- assertEq (Bytes32) ---
-
- function testAssertEqBytes32() public {
- assertEq(bytes32("hi"), bytes32("hi"), "msg");
- assertEq(bytes32("hi"), bytes32("hi"));
- }
- function testFailAssertEqBytes32() public {
- assertEq(bytes32("hi"), bytes32("ho"));
- }
- function testFailAssertEqBytes32WithMsg() public {
- assertEq(bytes32("hi"), bytes32("ho"), "msg");
- }
-
- // --- assertEq (Int) ---
-
- function testAssertEqInt() public {
- assertEq(-1, -1, "msg");
- assertEq(-1, -1);
- }
- function testFailAssertEqInt() public {
- assertEq(-1, -2);
- }
- function testFailAssertEqIntWithMsg() public {
- assertEq(-1, -2, "msg");
- }
-
- // --- assertEq (UInt) ---
-
- function testAssertEqUInt() public {
- assertEq(uint(1), uint(1), "msg");
- assertEq(uint(1), uint(1));
- }
- function testFailAssertEqUInt() public {
- assertEq(uint(1), uint(2));
- }
- function testFailAssertEqUIntWithMsg() public {
- assertEq(uint(1), uint(2), "msg");
- }
-
- // --- assertEqDecimal (Int) ---
-
- function testAssertEqDecimalInt() public {
- assertEqDecimal(-1, -1, 18, "msg");
- assertEqDecimal(-1, -1, 18);
- }
- function testFailAssertEqDecimalInt() public {
- assertEqDecimal(-1, -2, 18);
- }
- function testFailAssertEqDecimalIntWithMsg() public {
- assertEqDecimal(-1, -2, 18, "msg");
- }
-
- // --- assertEqDecimal (UInt) ---
-
- function testAssertEqDecimalUInt() public {
- assertEqDecimal(uint(1), uint(1), 18, "msg");
- assertEqDecimal(uint(1), uint(1), 18);
- }
- function testFailAssertEqDecimalUInt() public {
- assertEqDecimal(uint(1), uint(2), 18);
- }
- function testFailAssertEqDecimalUIntWithMsg() public {
- assertEqDecimal(uint(1), uint(2), 18, "msg");
- }
-
- // --- assertNotEq (Addr) ---
-
- function testAssertNotEqAddr() public {
- assertNotEq(address(0x0), address(0x1), "msg");
- assertNotEq(address(0x0), address(0x1));
- }
- function testFailAssertNotEqAddr() public {
- assertNotEq(address(0x0), address(0x0));
- }
- function testFailAssertNotEqAddrWithMsg() public {
- assertNotEq(address(0x0), address(0x0), "msg");
- }
-
- // --- assertNotEq (Bytes32) ---
-
- function testAssertNotEqBytes32() public {
- assertNotEq(bytes32("hi"), bytes32("ho"), "msg");
- assertNotEq(bytes32("hi"), bytes32("ho"));
- }
- function testFailAssertNotEqBytes32() public {
- assertNotEq(bytes32("hi"), bytes32("hi"));
- }
- function testFailAssertNotEqBytes32WithMsg() public {
- assertNotEq(bytes32("hi"), bytes32("hi"), "msg");
- }
-
- // --- assertNotEq (Int) ---
-
- function testAssertNotEqInt() public {
- assertNotEq(-1, -2, "msg");
- assertNotEq(-1, -2);
- }
- function testFailAssertNotEqInt() public {
- assertNotEq(-1, -1);
- }
- function testFailAssertNotEqIntWithMsg() public {
- assertNotEq(-1, -1, "msg");
- }
-
- // --- assertNotEq (UInt) ---
-
- function testAssertNotEqUInt() public {
- assertNotEq(uint(1), uint(2), "msg");
- assertNotEq(uint(1), uint(2));
- }
- function testFailAssertNotEqUInt() public {
- assertNotEq(uint(1), uint(1));
- }
- function testFailAssertNotEqUIntWithMsg() public {
- assertNotEq(uint(1), uint(1), "msg");
- }
-
- // --- assertNotEqDecimal (Int) ---
-
- function testAssertNotEqDecimalInt() public {
- assertNotEqDecimal(-1, -2, 18, "msg");
- assertNotEqDecimal(-1, -2, 18);
- }
- function testFailAssertNotEqDecimalInt() public {
- assertNotEqDecimal(-1, -1, 18);
- }
- function testFailAssertNotEqDecimalIntWithMsg() public {
- assertNotEqDecimal(-1, -1, 18, "msg");
- }
-
- // --- assertNotEqDecimal (UInt) ---
-
- function testAssertNotEqDecimalUInt() public {
- assertNotEqDecimal(uint(1), uint(2), 18, "msg");
- assertNotEqDecimal(uint(1), uint(2), 18);
- }
- function testFailAssertNotEqDecimalUInt() public {
- assertNotEqDecimal(uint(1), uint(1), 18);
- }
- function testFailAssertNotEqDecimalUIntWithMsg() public {
- assertNotEqDecimal(uint(1), uint(1), 18, "msg");
- }
-
- // --- assertGt (UInt) ---
-
- function testAssertGtUInt() public {
- assertGt(uint(2), uint(1), "msg");
- assertGt(uint(3), uint(2));
- }
- function testFailAssertGtUInt() public {
- assertGt(uint(1), uint(2));
- }
- function testFailAssertGtUIntWithMsg() public {
- assertGt(uint(1), uint(2), "msg");
- }
-
- // --- assertGt (Int) ---
-
- function testAssertGtInt() public {
- assertGt(-1, -2, "msg");
- assertGt(-1, -3);
- }
- function testFailAssertGtInt() public {
- assertGt(-2, -1);
- }
- function testFailAssertGtIntWithMsg() public {
- assertGt(-2, -1, "msg");
- }
-
- // --- assertGtDecimal (UInt) ---
-
- function testAssertGtDecimalUInt() public {
- assertGtDecimal(uint(2), uint(1), 18, "msg");
- assertGtDecimal(uint(3), uint(2), 18);
- }
- function testFailAssertGtDecimalUInt() public {
- assertGtDecimal(uint(1), uint(2), 18);
- }
- function testFailAssertGtDecimalUIntWithMsg() public {
- assertGtDecimal(uint(1), uint(2), 18, "msg");
- }
-
- // --- assertGtDecimal (Int) ---
-
- function testAssertGtDecimalInt() public {
- assertGtDecimal(-1, -2, 18, "msg");
- assertGtDecimal(-1, -3, 18);
- }
- function testFailAssertGtDecimalInt() public {
- assertGtDecimal(-2, -1, 18);
- }
- function testFailAssertGtDecimalIntWithMsg() public {
- assertGtDecimal(-2, -1, 18, "msg");
- }
-
- // --- assertGe (UInt) ---
-
- function testAssertGeUInt() public {
- assertGe(uint(2), uint(1), "msg");
- assertGe(uint(2), uint(2));
- }
- function testFailAssertGeUInt() public {
- assertGe(uint(1), uint(2));
- }
- function testFailAssertGeUIntWithMsg() public {
- assertGe(uint(1), uint(2), "msg");
- }
-
- // --- assertGe (Int) ---
-
- function testAssertGeInt() public {
- assertGe(-1, -2, "msg");
- assertGe(-1, -1);
- }
- function testFailAssertGeInt() public {
- assertGe(-2, -1);
- }
- function testFailAssertGeIntWithMsg() public {
- assertGe(-2, -1, "msg");
- }
-
- // --- assertGeDecimal (UInt) ---
-
- function testAssertGeDecimalUInt() public {
- assertGeDecimal(uint(2), uint(1), 18, "msg");
- assertGeDecimal(uint(2), uint(2), 18);
- }
- function testFailAssertGeDecimalUInt() public {
- assertGeDecimal(uint(1), uint(2), 18);
- }
- function testFailAssertGeDecimalUIntWithMsg() public {
- assertGeDecimal(uint(1), uint(2), 18, "msg");
- }
-
- // --- assertGeDecimal (Int) ---
-
- function testAssertGeDecimalInt() public {
- assertGeDecimal(-1, -2, 18, "msg");
- assertGeDecimal(-1, -2, 18);
- }
- function testFailAssertGeDecimalInt() public {
- assertGeDecimal(-2, -1, 18);
- }
- function testFailAssertGeDecimalIntWithMsg() public {
- assertGeDecimal(-2, -1, 18, "msg");
- }
-
- // --- assertLt (UInt) ---
-
- function testAssertLtUInt() public {
- assertLt(uint(1), uint(2), "msg");
- assertLt(uint(1), uint(3));
- }
- function testFailAssertLtUInt() public {
- assertLt(uint(2), uint(2));
- }
- function testFailAssertLtUIntWithMsg() public {
- assertLt(uint(3), uint(2), "msg");
- }
-
- // --- assertLt (Int) ---
-
- function testAssertLtInt() public {
- assertLt(-2, -1, "msg");
- assertLt(-1, 0);
- }
- function testFailAssertLtInt() public {
- assertLt(-1, -2);
- }
- function testFailAssertLtIntWithMsg() public {
- assertLt(-1, -1, "msg");
- }
-
- // --- assertLtDecimal (UInt) ---
-
- function testAssertLtDecimalUInt() public {
- assertLtDecimal(uint(1), uint(2), 18, "msg");
- assertLtDecimal(uint(2), uint(3), 18);
- }
- function testFailAssertLtDecimalUInt() public {
- assertLtDecimal(uint(1), uint(1), 18);
- }
- function testFailAssertLtDecimalUIntWithMsg() public {
- assertLtDecimal(uint(2), uint(1), 18, "msg");
- }
-
- // --- assertLtDecimal (Int) ---
-
- function testAssertLtDecimalInt() public {
- assertLtDecimal(-2, -1, 18, "msg");
- assertLtDecimal(-2, -1, 18);
- }
- function testFailAssertLtDecimalInt() public {
- assertLtDecimal(-2, -2, 18);
- }
- function testFailAssertLtDecimalIntWithMsg() public {
- assertLtDecimal(-1, -2, 18, "msg");
- }
-
- // --- assertLe (UInt) ---
-
- function testAssertLeUInt() public {
- assertLe(uint(1), uint(2), "msg");
- assertLe(uint(1), uint(1));
- }
- function testFailAssertLeUInt() public {
- assertLe(uint(4), uint(2));
- }
- function testFailAssertLeUIntWithMsg() public {
- assertLe(uint(3), uint(2), "msg");
- }
-
- // --- assertLe (Int) ---
-
- function testAssertLeInt() public {
- assertLe(-2, -1, "msg");
- assertLe(-1, -1);
- }
- function testFailAssertLeInt() public {
- assertLe(-1, -2);
- }
- function testFailAssertLeIntWithMsg() public {
- assertLe(-1, -3, "msg");
- }
-
- // --- assertLeDecimal (UInt) ---
-
- function testAssertLeDecimalUInt() public {
- assertLeDecimal(uint(1), uint(2), 18, "msg");
- assertLeDecimal(uint(2), uint(2), 18);
- }
- function testFailAssertLeDecimalUInt() public {
- assertLeDecimal(uint(1), uint(0), 18);
- }
- function testFailAssertLeDecimalUIntWithMsg() public {
- assertLeDecimal(uint(1), uint(0), 18, "msg");
- }
-
- // --- assertLeDecimal (Int) ---
-
- function testAssertLeDecimalInt() public {
- assertLeDecimal(-2, -1, 18, "msg");
- assertLeDecimal(-2, -2, 18);
- }
- function testFailAssertLeDecimalInt() public {
- assertLeDecimal(-2, -3, 18);
- }
- function testFailAssertLeDecimalIntWithMsg() public {
- assertLeDecimal(-1, -2, 18, "msg");
- }
-
- // --- assertNotEq (String) ---
-
- function testAssertNotEqString() public {
- assertNotEq(new string(1), new string(2), "msg");
- assertNotEq(new string(1), new string(2));
- }
- function testFailAssertNotEqString() public {
- assertNotEq(new string(1), new string(1));
- }
- function testFailAssertNotEqStringWithMsg() public {
- assertNotEq(new string(1), new string(1), "msg");
- }
-
- // --- assertNotEq0 (Bytes) ---
-
- function testAssertNotEq0Bytes() public {
- assertNotEq0(bytes("hi"), bytes("ho"), "msg");
- assertNotEq0(bytes("hi"), bytes("ho"));
- }
- function testFailAssertNotEq0Bytes() public {
- assertNotEq0(bytes("hi"), bytes("hi"));
- }
- function testFailAssertNotEq0BytesWithMsg() public {
- assertNotEq0(bytes("hi"), bytes("hi"), "msg");
- }
-
- // --- fail override ---
-
- // ensure that fail can be overridden
- function fail() internal override {
- super.fail();
- }
-}
diff --git a/lib/forge-std/package.json b/lib/forge-std/package.json
deleted file mode 100644
index 67bb85a..0000000
--- a/lib/forge-std/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "forge-std",
- "version": "1.7.1",
- "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.",
- "homepage": "https://book.getfoundry.sh/forge/forge-std",
- "bugs": "https://github.com/foundry-rs/forge-std/issues",
- "license": "(Apache-2.0 OR MIT)",
- "author": "Contributors to Forge Standard Library",
- "files": [
- "src/**/*"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/foundry-rs/forge-std.git"
- }
-}
diff --git a/lib/forge-std/src/Base.sol b/lib/forge-std/src/Base.sol
deleted file mode 100644
index 851ac0c..0000000
--- a/lib/forge-std/src/Base.sol
+++ /dev/null
@@ -1,35 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-import {StdStorage} from "./StdStorage.sol";
-import {Vm, VmSafe} from "./Vm.sol";
-
-abstract contract CommonBase {
- // Cheat code address, 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D.
- address internal constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code"))));
- // console.sol and console2.sol work by executing a staticcall to this address.
- address internal constant CONSOLE = 0x000000000000000000636F6e736F6c652e6c6f67;
- // Used when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy.
- address internal constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C;
- // Default address for tx.origin and msg.sender, 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38.
- address internal constant DEFAULT_SENDER = address(uint160(uint256(keccak256("foundry default caller"))));
- // Address of the test contract, deployed by the DEFAULT_SENDER.
- address internal constant DEFAULT_TEST_CONTRACT = 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f;
- // Deterministic deployment address of the Multicall3 contract.
- address internal constant MULTICALL3_ADDRESS = 0xcA11bde05977b3631167028862bE2a173976CA11;
- // The order of the secp256k1 curve.
- uint256 internal constant SECP256K1_ORDER =
- 115792089237316195423570985008687907852837564279074904382605163141518161494337;
-
- uint256 internal constant UINT256_MAX =
- 115792089237316195423570985008687907853269984665640564039457584007913129639935;
-
- Vm internal constant vm = Vm(VM_ADDRESS);
- StdStorage internal stdstore;
-}
-
-abstract contract TestBase is CommonBase {}
-
-abstract contract ScriptBase is CommonBase {
- VmSafe internal constant vmSafe = VmSafe(VM_ADDRESS);
-}
diff --git a/lib/forge-std/src/Script.sol b/lib/forge-std/src/Script.sol
deleted file mode 100644
index 94e75f6..0000000
--- a/lib/forge-std/src/Script.sol
+++ /dev/null
@@ -1,27 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-// 💬 ABOUT
-// Forge Std's default Script.
-
-// 🧩 MODULES
-import {console} from "./console.sol";
-import {console2} from "./console2.sol";
-import {safeconsole} from "./safeconsole.sol";
-import {StdChains} from "./StdChains.sol";
-import {StdCheatsSafe} from "./StdCheats.sol";
-import {stdJson} from "./StdJson.sol";
-import {stdMath} from "./StdMath.sol";
-import {StdStorage, stdStorageSafe} from "./StdStorage.sol";
-import {StdStyle} from "./StdStyle.sol";
-import {StdUtils} from "./StdUtils.sol";
-import {VmSafe} from "./Vm.sol";
-
-// 📦 BOILERPLATE
-import {ScriptBase} from "./Base.sol";
-
-// ⭐️ SCRIPT
-abstract contract Script is ScriptBase, StdChains, StdCheatsSafe, StdUtils {
- // Note: IS_SCRIPT() must return true.
- bool public IS_SCRIPT = true;
-}
diff --git a/lib/forge-std/src/StdAssertions.sol b/lib/forge-std/src/StdAssertions.sol
deleted file mode 100644
index 2778b3a..0000000
--- a/lib/forge-std/src/StdAssertions.sol
+++ /dev/null
@@ -1,376 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-import {DSTest} from "ds-test/test.sol";
-import {stdMath} from "./StdMath.sol";
-
-abstract contract StdAssertions is DSTest {
- event log_array(uint256[] val);
- event log_array(int256[] val);
- event log_array(address[] val);
- event log_named_array(string key, uint256[] val);
- event log_named_array(string key, int256[] val);
- event log_named_array(string key, address[] val);
-
- function fail(string memory err) internal virtual {
- emit log_named_string("Error", err);
- fail();
- }
-
- function assertFalse(bool data) internal virtual {
- assertTrue(!data);
- }
-
- function assertFalse(bool data, string memory err) internal virtual {
- assertTrue(!data, err);
- }
-
- function assertEq(bool a, bool b) internal virtual {
- if (a != b) {
- emit log("Error: a == b not satisfied [bool]");
- emit log_named_string(" Left", a ? "true" : "false");
- emit log_named_string(" Right", b ? "true" : "false");
- fail();
- }
- }
-
- function assertEq(bool a, bool b, string memory err) internal virtual {
- if (a != b) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
-
- function assertEq(bytes memory a, bytes memory b) internal virtual {
- assertEq0(a, b);
- }
-
- function assertEq(bytes memory a, bytes memory b, string memory err) internal virtual {
- assertEq0(a, b, err);
- }
-
- function assertEq(uint256[] memory a, uint256[] memory b) internal virtual {
- if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) {
- emit log("Error: a == b not satisfied [uint[]]");
- emit log_named_array(" Left", a);
- emit log_named_array(" Right", b);
- fail();
- }
- }
-
- function assertEq(int256[] memory a, int256[] memory b) internal virtual {
- if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) {
- emit log("Error: a == b not satisfied [int[]]");
- emit log_named_array(" Left", a);
- emit log_named_array(" Right", b);
- fail();
- }
- }
-
- function assertEq(address[] memory a, address[] memory b) internal virtual {
- if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) {
- emit log("Error: a == b not satisfied [address[]]");
- emit log_named_array(" Left", a);
- emit log_named_array(" Right", b);
- fail();
- }
- }
-
- function assertEq(uint256[] memory a, uint256[] memory b, string memory err) internal virtual {
- if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
-
- function assertEq(int256[] memory a, int256[] memory b, string memory err) internal virtual {
- if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
-
- function assertEq(address[] memory a, address[] memory b, string memory err) internal virtual {
- if (keccak256(abi.encode(a)) != keccak256(abi.encode(b))) {
- emit log_named_string("Error", err);
- assertEq(a, b);
- }
- }
-
- // Legacy helper
- function assertEqUint(uint256 a, uint256 b) internal virtual {
- assertEq(uint256(a), uint256(b));
- }
-
- function assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta) internal virtual {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log("Error: a ~= b not satisfied [uint]");
- emit log_named_uint(" Left", a);
- emit log_named_uint(" Right", b);
- emit log_named_uint(" Max Delta", maxDelta);
- emit log_named_uint(" Delta", delta);
- fail();
- }
- }
-
- function assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, string memory err) internal virtual {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log_named_string("Error", err);
- assertApproxEqAbs(a, b, maxDelta);
- }
- }
-
- function assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals) internal virtual {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log("Error: a ~= b not satisfied [uint]");
- emit log_named_decimal_uint(" Left", a, decimals);
- emit log_named_decimal_uint(" Right", b, decimals);
- emit log_named_decimal_uint(" Max Delta", maxDelta, decimals);
- emit log_named_decimal_uint(" Delta", delta, decimals);
- fail();
- }
- }
-
- function assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals, string memory err)
- internal
- virtual
- {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log_named_string("Error", err);
- assertApproxEqAbsDecimal(a, b, maxDelta, decimals);
- }
- }
-
- function assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta) internal virtual {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log("Error: a ~= b not satisfied [int]");
- emit log_named_int(" Left", a);
- emit log_named_int(" Right", b);
- emit log_named_uint(" Max Delta", maxDelta);
- emit log_named_uint(" Delta", delta);
- fail();
- }
- }
-
- function assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, string memory err) internal virtual {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log_named_string("Error", err);
- assertApproxEqAbs(a, b, maxDelta);
- }
- }
-
- function assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals) internal virtual {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log("Error: a ~= b not satisfied [int]");
- emit log_named_decimal_int(" Left", a, decimals);
- emit log_named_decimal_int(" Right", b, decimals);
- emit log_named_decimal_uint(" Max Delta", maxDelta, decimals);
- emit log_named_decimal_uint(" Delta", delta, decimals);
- fail();
- }
- }
-
- function assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals, string memory err)
- internal
- virtual
- {
- uint256 delta = stdMath.delta(a, b);
-
- if (delta > maxDelta) {
- emit log_named_string("Error", err);
- assertApproxEqAbsDecimal(a, b, maxDelta, decimals);
- }
- }
-
- function assertApproxEqRel(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100%
- ) internal virtual {
- if (b == 0) return assertEq(a, b); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log("Error: a ~= b not satisfied [uint]");
- emit log_named_uint(" Left", a);
- emit log_named_uint(" Right", b);
- emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18);
- emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18);
- fail();
- }
- }
-
- function assertApproxEqRel(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100%
- string memory err
- ) internal virtual {
- if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log_named_string("Error", err);
- assertApproxEqRel(a, b, maxPercentDelta);
- }
- }
-
- function assertApproxEqRelDecimal(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100%
- uint256 decimals
- ) internal virtual {
- if (b == 0) return assertEq(a, b); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log("Error: a ~= b not satisfied [uint]");
- emit log_named_decimal_uint(" Left", a, decimals);
- emit log_named_decimal_uint(" Right", b, decimals);
- emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18);
- emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18);
- fail();
- }
- }
-
- function assertApproxEqRelDecimal(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100%
- uint256 decimals,
- string memory err
- ) internal virtual {
- if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log_named_string("Error", err);
- assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals);
- }
- }
-
- function assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta) internal virtual {
- if (b == 0) return assertEq(a, b); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log("Error: a ~= b not satisfied [int]");
- emit log_named_int(" Left", a);
- emit log_named_int(" Right", b);
- emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18);
- emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18);
- fail();
- }
- }
-
- function assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, string memory err) internal virtual {
- if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log_named_string("Error", err);
- assertApproxEqRel(a, b, maxPercentDelta);
- }
- }
-
- function assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals) internal virtual {
- if (b == 0) return assertEq(a, b); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log("Error: a ~= b not satisfied [int]");
- emit log_named_decimal_int(" Left", a, decimals);
- emit log_named_decimal_int(" Right", b, decimals);
- emit log_named_decimal_uint(" Max % Delta", maxPercentDelta * 100, 18);
- emit log_named_decimal_uint(" % Delta", percentDelta * 100, 18);
- fail();
- }
- }
-
- function assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals, string memory err)
- internal
- virtual
- {
- if (b == 0) return assertEq(a, b, err); // If the left is 0, right must be too.
-
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- if (percentDelta > maxPercentDelta) {
- emit log_named_string("Error", err);
- assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals);
- }
- }
-
- function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual {
- assertEqCall(target, callDataA, target, callDataB, true);
- }
-
- function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB)
- internal
- virtual
- {
- assertEqCall(targetA, callDataA, targetB, callDataB, true);
- }
-
- function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData)
- internal
- virtual
- {
- assertEqCall(target, callDataA, target, callDataB, strictRevertData);
- }
-
- function assertEqCall(
- address targetA,
- bytes memory callDataA,
- address targetB,
- bytes memory callDataB,
- bool strictRevertData
- ) internal virtual {
- (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA);
- (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB);
-
- if (successA && successB) {
- assertEq(returnDataA, returnDataB, "Call return data does not match");
- }
-
- if (!successA && !successB && strictRevertData) {
- assertEq(returnDataA, returnDataB, "Call revert data does not match");
- }
-
- if (!successA && successB) {
- emit log("Error: Calls were not equal");
- emit log_named_bytes(" Left call revert data", returnDataA);
- emit log_named_bytes(" Right call return data", returnDataB);
- fail();
- }
-
- if (successA && !successB) {
- emit log("Error: Calls were not equal");
- emit log_named_bytes(" Left call return data", returnDataA);
- emit log_named_bytes(" Right call revert data", returnDataB);
- fail();
- }
- }
-}
diff --git a/lib/forge-std/src/StdChains.sol b/lib/forge-std/src/StdChains.sol
deleted file mode 100644
index 87e620a..0000000
--- a/lib/forge-std/src/StdChains.sol
+++ /dev/null
@@ -1,236 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-import {VmSafe} from "./Vm.sol";
-
-/**
- * StdChains provides information about EVM compatible chains that can be used in scripts/tests.
- * For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are
- * identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of
- * the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the
- * alias used in this contract, which can be found as the first argument to the
- * `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function.
- *
- * There are two main ways to use this contract:
- * 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or
- * `setChain(string memory chainAlias, Chain memory chain)`
- * 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`.
- *
- * The first time either of those are used, chains are initialized with the default set of RPC URLs.
- * This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in
- * `defaultRpcUrls`.
- *
- * The `setChain` function is straightforward, and it simply saves off the given chain data.
- *
- * The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say
- * we want to retrieve the RPC URL for `mainnet`:
- * - If you have specified data with `setChain`, it will return that.
- * - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it
- * is valid (e.g. a URL is specified, or an environment variable is given and exists).
- * - If neither of the above conditions is met, the default data is returned.
- *
- * Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.
- */
-abstract contract StdChains {
- VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code")))));
-
- bool private stdChainsInitialized;
-
- struct ChainData {
- string name;
- uint256 chainId;
- string rpcUrl;
- }
-
- struct Chain {
- // The chain name.
- string name;
- // The chain's Chain ID.
- uint256 chainId;
- // The chain's alias. (i.e. what gets specified in `foundry.toml`).
- string chainAlias;
- // A default RPC endpoint for this chain.
- // NOTE: This default RPC URL is included for convenience to facilitate quick tests and
- // experimentation. Do not use this RPC URL for production test suites, CI, or other heavy
- // usage as you will be throttled and this is a disservice to others who need this endpoint.
- string rpcUrl;
- }
-
- // Maps from the chain's alias (matching the alias in the `foundry.toml` file) to chain data.
- mapping(string => Chain) private chains;
- // Maps from the chain's alias to it's default RPC URL.
- mapping(string => string) private defaultRpcUrls;
- // Maps from a chain ID to it's alias.
- mapping(uint256 => string) private idToAlias;
-
- bool private fallbackToDefaultRpcUrls = true;
-
- // The RPC URL will be fetched from config or defaultRpcUrls if possible.
- function getChain(string memory chainAlias) internal virtual returns (Chain memory chain) {
- require(bytes(chainAlias).length != 0, "StdChains getChain(string): Chain alias cannot be the empty string.");
-
- initializeStdChains();
- chain = chains[chainAlias];
- require(
- chain.chainId != 0,
- string(abi.encodePacked("StdChains getChain(string): Chain with alias \"", chainAlias, "\" not found."))
- );
-
- chain = getChainWithUpdatedRpcUrl(chainAlias, chain);
- }
-
- function getChain(uint256 chainId) internal virtual returns (Chain memory chain) {
- require(chainId != 0, "StdChains getChain(uint256): Chain ID cannot be 0.");
- initializeStdChains();
- string memory chainAlias = idToAlias[chainId];
-
- chain = chains[chainAlias];
-
- require(
- chain.chainId != 0,
- string(abi.encodePacked("StdChains getChain(uint256): Chain with ID ", vm.toString(chainId), " not found."))
- );
-
- chain = getChainWithUpdatedRpcUrl(chainAlias, chain);
- }
-
- // set chain info, with priority to argument's rpcUrl field.
- function setChain(string memory chainAlias, ChainData memory chain) internal virtual {
- require(
- bytes(chainAlias).length != 0,
- "StdChains setChain(string,ChainData): Chain alias cannot be the empty string."
- );
-
- require(chain.chainId != 0, "StdChains setChain(string,ChainData): Chain ID cannot be 0.");
-
- initializeStdChains();
- string memory foundAlias = idToAlias[chain.chainId];
-
- require(
- bytes(foundAlias).length == 0 || keccak256(bytes(foundAlias)) == keccak256(bytes(chainAlias)),
- string(
- abi.encodePacked(
- "StdChains setChain(string,ChainData): Chain ID ",
- vm.toString(chain.chainId),
- " already used by \"",
- foundAlias,
- "\"."
- )
- )
- );
-
- uint256 oldChainId = chains[chainAlias].chainId;
- delete idToAlias[oldChainId];
-
- chains[chainAlias] =
- Chain({name: chain.name, chainId: chain.chainId, chainAlias: chainAlias, rpcUrl: chain.rpcUrl});
- idToAlias[chain.chainId] = chainAlias;
- }
-
- // set chain info, with priority to argument's rpcUrl field.
- function setChain(string memory chainAlias, Chain memory chain) internal virtual {
- setChain(chainAlias, ChainData({name: chain.name, chainId: chain.chainId, rpcUrl: chain.rpcUrl}));
- }
-
- function _toUpper(string memory str) private pure returns (string memory) {
- bytes memory strb = bytes(str);
- bytes memory copy = new bytes(strb.length);
- for (uint256 i = 0; i < strb.length; i++) {
- bytes1 b = strb[i];
- if (b >= 0x61 && b <= 0x7A) {
- copy[i] = bytes1(uint8(b) - 32);
- } else {
- copy[i] = b;
- }
- }
- return string(copy);
- }
-
- // lookup rpcUrl, in descending order of priority:
- // current -> config (foundry.toml) -> environment variable -> default
- function getChainWithUpdatedRpcUrl(string memory chainAlias, Chain memory chain) private returns (Chain memory) {
- if (bytes(chain.rpcUrl).length == 0) {
- try vm.rpcUrl(chainAlias) returns (string memory configRpcUrl) {
- chain.rpcUrl = configRpcUrl;
- } catch (bytes memory err) {
- string memory envName = string(abi.encodePacked(_toUpper(chainAlias), "_RPC_URL"));
- if (fallbackToDefaultRpcUrls) {
- chain.rpcUrl = vm.envOr(envName, defaultRpcUrls[chainAlias]);
- } else {
- chain.rpcUrl = vm.envString(envName);
- }
- // distinguish 'not found' from 'cannot read'
- bytes memory notFoundError =
- abi.encodeWithSignature("CheatCodeError", string(abi.encodePacked("invalid rpc url ", chainAlias)));
- if (keccak256(notFoundError) != keccak256(err) || bytes(chain.rpcUrl).length == 0) {
- /// @solidity memory-safe-assembly
- assembly {
- revert(add(32, err), mload(err))
- }
- }
- }
- }
- return chain;
- }
-
- function setFallbackToDefaultRpcUrls(bool useDefault) internal {
- fallbackToDefaultRpcUrls = useDefault;
- }
-
- function initializeStdChains() private {
- if (stdChainsInitialized) return;
-
- stdChainsInitialized = true;
-
- // If adding an RPC here, make sure to test the default RPC URL in `testRpcs`
- setChainWithDefaultRpcUrl("anvil", ChainData("Anvil", 31337, "http://127.0.0.1:8545"));
- setChainWithDefaultRpcUrl(
- "mainnet", ChainData("Mainnet", 1, "https://mainnet.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001")
- );
- setChainWithDefaultRpcUrl(
- "goerli", ChainData("Goerli", 5, "https://goerli.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001")
- );
- setChainWithDefaultRpcUrl(
- "sepolia", ChainData("Sepolia", 11155111, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001")
- );
- setChainWithDefaultRpcUrl("optimism", ChainData("Optimism", 10, "https://mainnet.optimism.io"));
- setChainWithDefaultRpcUrl("optimism_goerli", ChainData("Optimism Goerli", 420, "https://goerli.optimism.io"));
- setChainWithDefaultRpcUrl("arbitrum_one", ChainData("Arbitrum One", 42161, "https://arb1.arbitrum.io/rpc"));
- setChainWithDefaultRpcUrl(
- "arbitrum_one_goerli", ChainData("Arbitrum One Goerli", 421613, "https://goerli-rollup.arbitrum.io/rpc")
- );
- setChainWithDefaultRpcUrl("arbitrum_nova", ChainData("Arbitrum Nova", 42170, "https://nova.arbitrum.io/rpc"));
- setChainWithDefaultRpcUrl("polygon", ChainData("Polygon", 137, "https://polygon-rpc.com"));
- setChainWithDefaultRpcUrl(
- "polygon_mumbai", ChainData("Polygon Mumbai", 80001, "https://rpc-mumbai.maticvigil.com")
- );
- setChainWithDefaultRpcUrl("avalanche", ChainData("Avalanche", 43114, "https://api.avax.network/ext/bc/C/rpc"));
- setChainWithDefaultRpcUrl(
- "avalanche_fuji", ChainData("Avalanche Fuji", 43113, "https://api.avax-test.network/ext/bc/C/rpc")
- );
- setChainWithDefaultRpcUrl(
- "bnb_smart_chain", ChainData("BNB Smart Chain", 56, "https://bsc-dataseed1.binance.org")
- );
- setChainWithDefaultRpcUrl(
- "bnb_smart_chain_testnet",
- ChainData("BNB Smart Chain Testnet", 97, "https://rpc.ankr.com/bsc_testnet_chapel")
- );
- setChainWithDefaultRpcUrl("gnosis_chain", ChainData("Gnosis Chain", 100, "https://rpc.gnosischain.com"));
- setChainWithDefaultRpcUrl("moonbeam", ChainData("Moonbeam", 1284, "https://rpc.api.moonbeam.network"));
- setChainWithDefaultRpcUrl(
- "moonriver", ChainData("Moonriver", 1285, "https://rpc.api.moonriver.moonbeam.network")
- );
- setChainWithDefaultRpcUrl("moonbase", ChainData("Moonbase", 1287, "https://rpc.testnet.moonbeam.network"));
- setChainWithDefaultRpcUrl("base_goerli", ChainData("Base Goerli", 84531, "https://goerli.base.org"));
- setChainWithDefaultRpcUrl("base", ChainData("Base", 8453, "https://mainnet.base.org"));
- }
-
- // set chain info, with priority to chainAlias' rpc url in foundry.toml
- function setChainWithDefaultRpcUrl(string memory chainAlias, ChainData memory chain) private {
- string memory rpcUrl = chain.rpcUrl;
- defaultRpcUrls[chainAlias] = rpcUrl;
- chain.rpcUrl = "";
- setChain(chainAlias, chain);
- chain.rpcUrl = rpcUrl; // restore argument
- }
-}
diff --git a/lib/forge-std/src/StdCheats.sol b/lib/forge-std/src/StdCheats.sol
deleted file mode 100644
index 008b743..0000000
--- a/lib/forge-std/src/StdCheats.sol
+++ /dev/null
@@ -1,817 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import {StdStorage, stdStorage} from "./StdStorage.sol";
-import {console2} from "./console2.sol";
-import {Vm} from "./Vm.sol";
-
-abstract contract StdCheatsSafe {
- Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code")))));
-
- uint256 private constant UINT256_MAX =
- 115792089237316195423570985008687907853269984665640564039457584007913129639935;
-
- bool private gasMeteringOff;
-
- // Data structures to parse Transaction objects from the broadcast artifact
- // that conform to EIP1559. The Raw structs is what is parsed from the JSON
- // and then converted to the one that is used by the user for better UX.
-
- struct RawTx1559 {
- string[] arguments;
- address contractAddress;
- string contractName;
- // json value name = function
- string functionSig;
- bytes32 hash;
- // json value name = tx
- RawTx1559Detail txDetail;
- // json value name = type
- string opcode;
- }
-
- struct RawTx1559Detail {
- AccessList[] accessList;
- bytes data;
- address from;
- bytes gas;
- bytes nonce;
- address to;
- bytes txType;
- bytes value;
- }
-
- struct Tx1559 {
- string[] arguments;
- address contractAddress;
- string contractName;
- string functionSig;
- bytes32 hash;
- Tx1559Detail txDetail;
- string opcode;
- }
-
- struct Tx1559Detail {
- AccessList[] accessList;
- bytes data;
- address from;
- uint256 gas;
- uint256 nonce;
- address to;
- uint256 txType;
- uint256 value;
- }
-
- // Data structures to parse Transaction objects from the broadcast artifact
- // that DO NOT conform to EIP1559. The Raw structs is what is parsed from the JSON
- // and then converted to the one that is used by the user for better UX.
-
- struct TxLegacy {
- string[] arguments;
- address contractAddress;
- string contractName;
- string functionSig;
- string hash;
- string opcode;
- TxDetailLegacy transaction;
- }
-
- struct TxDetailLegacy {
- AccessList[] accessList;
- uint256 chainId;
- bytes data;
- address from;
- uint256 gas;
- uint256 gasPrice;
- bytes32 hash;
- uint256 nonce;
- bytes1 opcode;
- bytes32 r;
- bytes32 s;
- uint256 txType;
- address to;
- uint8 v;
- uint256 value;
- }
-
- struct AccessList {
- address accessAddress;
- bytes32[] storageKeys;
- }
-
- // Data structures to parse Receipt objects from the broadcast artifact.
- // The Raw structs is what is parsed from the JSON
- // and then converted to the one that is used by the user for better UX.
-
- struct RawReceipt {
- bytes32 blockHash;
- bytes blockNumber;
- address contractAddress;
- bytes cumulativeGasUsed;
- bytes effectiveGasPrice;
- address from;
- bytes gasUsed;
- RawReceiptLog[] logs;
- bytes logsBloom;
- bytes status;
- address to;
- bytes32 transactionHash;
- bytes transactionIndex;
- }
-
- struct Receipt {
- bytes32 blockHash;
- uint256 blockNumber;
- address contractAddress;
- uint256 cumulativeGasUsed;
- uint256 effectiveGasPrice;
- address from;
- uint256 gasUsed;
- ReceiptLog[] logs;
- bytes logsBloom;
- uint256 status;
- address to;
- bytes32 transactionHash;
- uint256 transactionIndex;
- }
-
- // Data structures to parse the entire broadcast artifact, assuming the
- // transactions conform to EIP1559.
-
- struct EIP1559ScriptArtifact {
- string[] libraries;
- string path;
- string[] pending;
- Receipt[] receipts;
- uint256 timestamp;
- Tx1559[] transactions;
- TxReturn[] txReturns;
- }
-
- struct RawEIP1559ScriptArtifact {
- string[] libraries;
- string path;
- string[] pending;
- RawReceipt[] receipts;
- TxReturn[] txReturns;
- uint256 timestamp;
- RawTx1559[] transactions;
- }
-
- struct RawReceiptLog {
- // json value = address
- address logAddress;
- bytes32 blockHash;
- bytes blockNumber;
- bytes data;
- bytes logIndex;
- bool removed;
- bytes32[] topics;
- bytes32 transactionHash;
- bytes transactionIndex;
- bytes transactionLogIndex;
- }
-
- struct ReceiptLog {
- // json value = address
- address logAddress;
- bytes32 blockHash;
- uint256 blockNumber;
- bytes data;
- uint256 logIndex;
- bytes32[] topics;
- uint256 transactionIndex;
- uint256 transactionLogIndex;
- bool removed;
- }
-
- struct TxReturn {
- string internalType;
- string value;
- }
-
- struct Account {
- address addr;
- uint256 key;
- }
-
- enum AddressType {
- Payable,
- NonPayable,
- ZeroAddress,
- Precompile,
- ForgeAddress
- }
-
- // Checks that `addr` is not blacklisted by token contracts that have a blacklist.
- function assumeNotBlacklisted(address token, address addr) internal view virtual {
- // Nothing to check if `token` is not a contract.
- uint256 tokenCodeSize;
- assembly {
- tokenCodeSize := extcodesize(token)
- }
- require(tokenCodeSize > 0, "StdCheats assumeNotBlacklisted(address,address): Token address is not a contract.");
-
- bool success;
- bytes memory returnData;
-
- // 4-byte selector for `isBlacklisted(address)`, used by USDC.
- (success, returnData) = token.staticcall(abi.encodeWithSelector(0xfe575a87, addr));
- vm.assume(!success || abi.decode(returnData, (bool)) == false);
-
- // 4-byte selector for `isBlackListed(address)`, used by USDT.
- (success, returnData) = token.staticcall(abi.encodeWithSelector(0xe47d6060, addr));
- vm.assume(!success || abi.decode(returnData, (bool)) == false);
- }
-
- // Checks that `addr` is not blacklisted by token contracts that have a blacklist.
- // This is identical to `assumeNotBlacklisted(address,address)` but with a different name, for
- // backwards compatibility, since this name was used in the original PR which has already has
- // a release. This function can be removed in a future release once we want a breaking change.
- function assumeNoBlacklisted(address token, address addr) internal view virtual {
- assumeNotBlacklisted(token, addr);
- }
-
- function assumeAddressIsNot(address addr, AddressType addressType) internal virtual {
- if (addressType == AddressType.Payable) {
- assumeNotPayable(addr);
- } else if (addressType == AddressType.NonPayable) {
- assumePayable(addr);
- } else if (addressType == AddressType.ZeroAddress) {
- assumeNotZeroAddress(addr);
- } else if (addressType == AddressType.Precompile) {
- assumeNotPrecompile(addr);
- } else if (addressType == AddressType.ForgeAddress) {
- assumeNotForgeAddress(addr);
- }
- }
-
- function assumeAddressIsNot(address addr, AddressType addressType1, AddressType addressType2) internal virtual {
- assumeAddressIsNot(addr, addressType1);
- assumeAddressIsNot(addr, addressType2);
- }
-
- function assumeAddressIsNot(
- address addr,
- AddressType addressType1,
- AddressType addressType2,
- AddressType addressType3
- ) internal virtual {
- assumeAddressIsNot(addr, addressType1);
- assumeAddressIsNot(addr, addressType2);
- assumeAddressIsNot(addr, addressType3);
- }
-
- function assumeAddressIsNot(
- address addr,
- AddressType addressType1,
- AddressType addressType2,
- AddressType addressType3,
- AddressType addressType4
- ) internal virtual {
- assumeAddressIsNot(addr, addressType1);
- assumeAddressIsNot(addr, addressType2);
- assumeAddressIsNot(addr, addressType3);
- assumeAddressIsNot(addr, addressType4);
- }
-
- // This function checks whether an address, `addr`, is payable. It works by sending 1 wei to
- // `addr` and checking the `success` return value.
- // NOTE: This function may result in state changes depending on the fallback/receive logic
- // implemented by `addr`, which should be taken into account when this function is used.
- function _isPayable(address addr) private returns (bool) {
- require(
- addr.balance < UINT256_MAX,
- "StdCheats _isPayable(address): Balance equals max uint256, so it cannot receive any more funds"
- );
- uint256 origBalanceTest = address(this).balance;
- uint256 origBalanceAddr = address(addr).balance;
-
- vm.deal(address(this), 1);
- (bool success,) = payable(addr).call{value: 1}("");
-
- // reset balances
- vm.deal(address(this), origBalanceTest);
- vm.deal(addr, origBalanceAddr);
-
- return success;
- }
-
- // NOTE: This function may result in state changes depending on the fallback/receive logic
- // implemented by `addr`, which should be taken into account when this function is used. See the
- // `_isPayable` method for more information.
- function assumePayable(address addr) internal virtual {
- vm.assume(_isPayable(addr));
- }
-
- function assumeNotPayable(address addr) internal virtual {
- vm.assume(!_isPayable(addr));
- }
-
- function assumeNotZeroAddress(address addr) internal pure virtual {
- vm.assume(addr != address(0));
- }
-
- function assumeNotPrecompile(address addr) internal pure virtual {
- assumeNotPrecompile(addr, _pureChainId());
- }
-
- function assumeNotPrecompile(address addr, uint256 chainId) internal pure virtual {
- // Note: For some chains like Optimism these are technically predeploys (i.e. bytecode placed at a specific
- // address), but the same rationale for excluding them applies so we include those too.
-
- // These should be present on all EVM-compatible chains.
- vm.assume(addr < address(0x1) || addr > address(0x9));
-
- // forgefmt: disable-start
- if (chainId == 10 || chainId == 420) {
- // https://github.com/ethereum-optimism/optimism/blob/eaa371a0184b56b7ca6d9eb9cb0a2b78b2ccd864/op-bindings/predeploys/addresses.go#L6-L21
- vm.assume(addr < address(0x4200000000000000000000000000000000000000) || addr > address(0x4200000000000000000000000000000000000800));
- } else if (chainId == 42161 || chainId == 421613) {
- // https://developer.arbitrum.io/useful-addresses#arbitrum-precompiles-l2-same-on-all-arb-chains
- vm.assume(addr < address(0x0000000000000000000000000000000000000064) || addr > address(0x0000000000000000000000000000000000000068));
- } else if (chainId == 43114 || chainId == 43113) {
- // https://github.com/ava-labs/subnet-evm/blob/47c03fd007ecaa6de2c52ea081596e0a88401f58/precompile/params.go#L18-L59
- vm.assume(addr < address(0x0100000000000000000000000000000000000000) || addr > address(0x01000000000000000000000000000000000000ff));
- vm.assume(addr < address(0x0200000000000000000000000000000000000000) || addr > address(0x02000000000000000000000000000000000000FF));
- vm.assume(addr < address(0x0300000000000000000000000000000000000000) || addr > address(0x03000000000000000000000000000000000000Ff));
- }
- // forgefmt: disable-end
- }
-
- function assumeNotForgeAddress(address addr) internal pure virtual {
- // vm, console, and Create2Deployer addresses
- vm.assume(
- addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67
- && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C
- );
- }
-
- function readEIP1559ScriptArtifact(string memory path)
- internal
- view
- virtual
- returns (EIP1559ScriptArtifact memory)
- {
- string memory data = vm.readFile(path);
- bytes memory parsedData = vm.parseJson(data);
- RawEIP1559ScriptArtifact memory rawArtifact = abi.decode(parsedData, (RawEIP1559ScriptArtifact));
- EIP1559ScriptArtifact memory artifact;
- artifact.libraries = rawArtifact.libraries;
- artifact.path = rawArtifact.path;
- artifact.timestamp = rawArtifact.timestamp;
- artifact.pending = rawArtifact.pending;
- artifact.txReturns = rawArtifact.txReturns;
- artifact.receipts = rawToConvertedReceipts(rawArtifact.receipts);
- artifact.transactions = rawToConvertedEIPTx1559s(rawArtifact.transactions);
- return artifact;
- }
-
- function rawToConvertedEIPTx1559s(RawTx1559[] memory rawTxs) internal pure virtual returns (Tx1559[] memory) {
- Tx1559[] memory txs = new Tx1559[](rawTxs.length);
- for (uint256 i; i < rawTxs.length; i++) {
- txs[i] = rawToConvertedEIPTx1559(rawTxs[i]);
- }
- return txs;
- }
-
- function rawToConvertedEIPTx1559(RawTx1559 memory rawTx) internal pure virtual returns (Tx1559 memory) {
- Tx1559 memory transaction;
- transaction.arguments = rawTx.arguments;
- transaction.contractName = rawTx.contractName;
- transaction.functionSig = rawTx.functionSig;
- transaction.hash = rawTx.hash;
- transaction.txDetail = rawToConvertedEIP1559Detail(rawTx.txDetail);
- transaction.opcode = rawTx.opcode;
- return transaction;
- }
-
- function rawToConvertedEIP1559Detail(RawTx1559Detail memory rawDetail)
- internal
- pure
- virtual
- returns (Tx1559Detail memory)
- {
- Tx1559Detail memory txDetail;
- txDetail.data = rawDetail.data;
- txDetail.from = rawDetail.from;
- txDetail.to = rawDetail.to;
- txDetail.nonce = _bytesToUint(rawDetail.nonce);
- txDetail.txType = _bytesToUint(rawDetail.txType);
- txDetail.value = _bytesToUint(rawDetail.value);
- txDetail.gas = _bytesToUint(rawDetail.gas);
- txDetail.accessList = rawDetail.accessList;
- return txDetail;
- }
-
- function readTx1559s(string memory path) internal view virtual returns (Tx1559[] memory) {
- string memory deployData = vm.readFile(path);
- bytes memory parsedDeployData = vm.parseJson(deployData, ".transactions");
- RawTx1559[] memory rawTxs = abi.decode(parsedDeployData, (RawTx1559[]));
- return rawToConvertedEIPTx1559s(rawTxs);
- }
-
- function readTx1559(string memory path, uint256 index) internal view virtual returns (Tx1559 memory) {
- string memory deployData = vm.readFile(path);
- string memory key = string(abi.encodePacked(".transactions[", vm.toString(index), "]"));
- bytes memory parsedDeployData = vm.parseJson(deployData, key);
- RawTx1559 memory rawTx = abi.decode(parsedDeployData, (RawTx1559));
- return rawToConvertedEIPTx1559(rawTx);
- }
-
- // Analogous to readTransactions, but for receipts.
- function readReceipts(string memory path) internal view virtual returns (Receipt[] memory) {
- string memory deployData = vm.readFile(path);
- bytes memory parsedDeployData = vm.parseJson(deployData, ".receipts");
- RawReceipt[] memory rawReceipts = abi.decode(parsedDeployData, (RawReceipt[]));
- return rawToConvertedReceipts(rawReceipts);
- }
-
- function readReceipt(string memory path, uint256 index) internal view virtual returns (Receipt memory) {
- string memory deployData = vm.readFile(path);
- string memory key = string(abi.encodePacked(".receipts[", vm.toString(index), "]"));
- bytes memory parsedDeployData = vm.parseJson(deployData, key);
- RawReceipt memory rawReceipt = abi.decode(parsedDeployData, (RawReceipt));
- return rawToConvertedReceipt(rawReceipt);
- }
-
- function rawToConvertedReceipts(RawReceipt[] memory rawReceipts) internal pure virtual returns (Receipt[] memory) {
- Receipt[] memory receipts = new Receipt[](rawReceipts.length);
- for (uint256 i; i < rawReceipts.length; i++) {
- receipts[i] = rawToConvertedReceipt(rawReceipts[i]);
- }
- return receipts;
- }
-
- function rawToConvertedReceipt(RawReceipt memory rawReceipt) internal pure virtual returns (Receipt memory) {
- Receipt memory receipt;
- receipt.blockHash = rawReceipt.blockHash;
- receipt.to = rawReceipt.to;
- receipt.from = rawReceipt.from;
- receipt.contractAddress = rawReceipt.contractAddress;
- receipt.effectiveGasPrice = _bytesToUint(rawReceipt.effectiveGasPrice);
- receipt.cumulativeGasUsed = _bytesToUint(rawReceipt.cumulativeGasUsed);
- receipt.gasUsed = _bytesToUint(rawReceipt.gasUsed);
- receipt.status = _bytesToUint(rawReceipt.status);
- receipt.transactionIndex = _bytesToUint(rawReceipt.transactionIndex);
- receipt.blockNumber = _bytesToUint(rawReceipt.blockNumber);
- receipt.logs = rawToConvertedReceiptLogs(rawReceipt.logs);
- receipt.logsBloom = rawReceipt.logsBloom;
- receipt.transactionHash = rawReceipt.transactionHash;
- return receipt;
- }
-
- function rawToConvertedReceiptLogs(RawReceiptLog[] memory rawLogs)
- internal
- pure
- virtual
- returns (ReceiptLog[] memory)
- {
- ReceiptLog[] memory logs = new ReceiptLog[](rawLogs.length);
- for (uint256 i; i < rawLogs.length; i++) {
- logs[i].logAddress = rawLogs[i].logAddress;
- logs[i].blockHash = rawLogs[i].blockHash;
- logs[i].blockNumber = _bytesToUint(rawLogs[i].blockNumber);
- logs[i].data = rawLogs[i].data;
- logs[i].logIndex = _bytesToUint(rawLogs[i].logIndex);
- logs[i].topics = rawLogs[i].topics;
- logs[i].transactionIndex = _bytesToUint(rawLogs[i].transactionIndex);
- logs[i].transactionLogIndex = _bytesToUint(rawLogs[i].transactionLogIndex);
- logs[i].removed = rawLogs[i].removed;
- }
- return logs;
- }
-
- // Deploy a contract by fetching the contract bytecode from
- // the artifacts directory
- // e.g. `deployCode(code, abi.encode(arg1,arg2,arg3))`
- function deployCode(string memory what, bytes memory args) internal virtual returns (address addr) {
- bytes memory bytecode = abi.encodePacked(vm.getCode(what), args);
- /// @solidity memory-safe-assembly
- assembly {
- addr := create(0, add(bytecode, 0x20), mload(bytecode))
- }
-
- require(addr != address(0), "StdCheats deployCode(string,bytes): Deployment failed.");
- }
-
- function deployCode(string memory what) internal virtual returns (address addr) {
- bytes memory bytecode = vm.getCode(what);
- /// @solidity memory-safe-assembly
- assembly {
- addr := create(0, add(bytecode, 0x20), mload(bytecode))
- }
-
- require(addr != address(0), "StdCheats deployCode(string): Deployment failed.");
- }
-
- /// @dev deploy contract with value on construction
- function deployCode(string memory what, bytes memory args, uint256 val) internal virtual returns (address addr) {
- bytes memory bytecode = abi.encodePacked(vm.getCode(what), args);
- /// @solidity memory-safe-assembly
- assembly {
- addr := create(val, add(bytecode, 0x20), mload(bytecode))
- }
-
- require(addr != address(0), "StdCheats deployCode(string,bytes,uint256): Deployment failed.");
- }
-
- function deployCode(string memory what, uint256 val) internal virtual returns (address addr) {
- bytes memory bytecode = vm.getCode(what);
- /// @solidity memory-safe-assembly
- assembly {
- addr := create(val, add(bytecode, 0x20), mload(bytecode))
- }
-
- require(addr != address(0), "StdCheats deployCode(string,uint256): Deployment failed.");
- }
-
- // creates a labeled address and the corresponding private key
- function makeAddrAndKey(string memory name) internal virtual returns (address addr, uint256 privateKey) {
- privateKey = uint256(keccak256(abi.encodePacked(name)));
- addr = vm.addr(privateKey);
- vm.label(addr, name);
- }
-
- // creates a labeled address
- function makeAddr(string memory name) internal virtual returns (address addr) {
- (addr,) = makeAddrAndKey(name);
- }
-
- // Destroys an account immediately, sending the balance to beneficiary.
- // Destroying means: balance will be zero, code will be empty, and nonce will be 0
- // This is similar to selfdestruct but not identical: selfdestruct destroys code and nonce
- // only after tx ends, this will run immediately.
- function destroyAccount(address who, address beneficiary) internal virtual {
- uint256 currBalance = who.balance;
- vm.etch(who, abi.encode());
- vm.deal(who, 0);
- vm.resetNonce(who);
-
- uint256 beneficiaryBalance = beneficiary.balance;
- vm.deal(beneficiary, currBalance + beneficiaryBalance);
- }
-
- // creates a struct containing both a labeled address and the corresponding private key
- function makeAccount(string memory name) internal virtual returns (Account memory account) {
- (account.addr, account.key) = makeAddrAndKey(name);
- }
-
- function deriveRememberKey(string memory mnemonic, uint32 index)
- internal
- virtual
- returns (address who, uint256 privateKey)
- {
- privateKey = vm.deriveKey(mnemonic, index);
- who = vm.rememberKey(privateKey);
- }
-
- function _bytesToUint(bytes memory b) private pure returns (uint256) {
- require(b.length <= 32, "StdCheats _bytesToUint(bytes): Bytes length exceeds 32.");
- return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256));
- }
-
- function isFork() internal view virtual returns (bool status) {
- try vm.activeFork() {
- status = true;
- } catch (bytes memory) {}
- }
-
- modifier skipWhenForking() {
- if (!isFork()) {
- _;
- }
- }
-
- modifier skipWhenNotForking() {
- if (isFork()) {
- _;
- }
- }
-
- modifier noGasMetering() {
- vm.pauseGasMetering();
- // To prevent turning gas monitoring back on with nested functions that use this modifier,
- // we check if gasMetering started in the off position. If it did, we don't want to turn
- // it back on until we exit the top level function that used the modifier
- //
- // i.e. funcA() noGasMetering { funcB() }, where funcB has noGasMetering as well.
- // funcA will have `gasStartedOff` as false, funcB will have it as true,
- // so we only turn metering back on at the end of the funcA
- bool gasStartedOff = gasMeteringOff;
- gasMeteringOff = true;
-
- _;
-
- // if gas metering was on when this modifier was called, turn it back on at the end
- if (!gasStartedOff) {
- gasMeteringOff = false;
- vm.resumeGasMetering();
- }
- }
-
- // We use this complex approach of `_viewChainId` and `_pureChainId` to ensure there are no
- // compiler warnings when accessing chain ID in any solidity version supported by forge-std. We
- // can't simply access the chain ID in a normal view or pure function because the solc View Pure
- // Checker changed `chainid` from pure to view in 0.8.0.
- function _viewChainId() private view returns (uint256 chainId) {
- // Assembly required since `block.chainid` was introduced in 0.8.0.
- assembly {
- chainId := chainid()
- }
-
- address(this); // Silence warnings in older Solc versions.
- }
-
- function _pureChainId() private pure returns (uint256 chainId) {
- function() internal view returns (uint256) fnIn = _viewChainId;
- function() internal pure returns (uint256) pureChainId;
- assembly {
- pureChainId := fnIn
- }
- chainId = pureChainId();
- }
-}
-
-// Wrappers around cheatcodes to avoid footguns
-abstract contract StdCheats is StdCheatsSafe {
- using stdStorage for StdStorage;
-
- StdStorage private stdstore;
- Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code")))));
- address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67;
-
- // Skip forward or rewind time by the specified number of seconds
- function skip(uint256 time) internal virtual {
- vm.warp(block.timestamp + time);
- }
-
- function rewind(uint256 time) internal virtual {
- vm.warp(block.timestamp - time);
- }
-
- // Setup a prank from an address that has some ether
- function hoax(address msgSender) internal virtual {
- vm.deal(msgSender, 1 << 128);
- vm.prank(msgSender);
- }
-
- function hoax(address msgSender, uint256 give) internal virtual {
- vm.deal(msgSender, give);
- vm.prank(msgSender);
- }
-
- function hoax(address msgSender, address origin) internal virtual {
- vm.deal(msgSender, 1 << 128);
- vm.prank(msgSender, origin);
- }
-
- function hoax(address msgSender, address origin, uint256 give) internal virtual {
- vm.deal(msgSender, give);
- vm.prank(msgSender, origin);
- }
-
- // Start perpetual prank from an address that has some ether
- function startHoax(address msgSender) internal virtual {
- vm.deal(msgSender, 1 << 128);
- vm.startPrank(msgSender);
- }
-
- function startHoax(address msgSender, uint256 give) internal virtual {
- vm.deal(msgSender, give);
- vm.startPrank(msgSender);
- }
-
- // Start perpetual prank from an address that has some ether
- // tx.origin is set to the origin parameter
- function startHoax(address msgSender, address origin) internal virtual {
- vm.deal(msgSender, 1 << 128);
- vm.startPrank(msgSender, origin);
- }
-
- function startHoax(address msgSender, address origin, uint256 give) internal virtual {
- vm.deal(msgSender, give);
- vm.startPrank(msgSender, origin);
- }
-
- function changePrank(address msgSender) internal virtual {
- console2_log("changePrank is deprecated. Please use vm.startPrank instead.");
- vm.stopPrank();
- vm.startPrank(msgSender);
- }
-
- function changePrank(address msgSender, address txOrigin) internal virtual {
- vm.stopPrank();
- vm.startPrank(msgSender, txOrigin);
- }
-
- // The same as Vm's `deal`
- // Use the alternative signature for ERC20 tokens
- function deal(address to, uint256 give) internal virtual {
- vm.deal(to, give);
- }
-
- // Set the balance of an account for any ERC20 token
- // Use the alternative signature to update `totalSupply`
- function deal(address token, address to, uint256 give) internal virtual {
- deal(token, to, give, false);
- }
-
- // Set the balance of an account for any ERC1155 token
- // Use the alternative signature to update `totalSupply`
- function dealERC1155(address token, address to, uint256 id, uint256 give) internal virtual {
- dealERC1155(token, to, id, give, false);
- }
-
- function deal(address token, address to, uint256 give, bool adjust) internal virtual {
- // get current balance
- (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to));
- uint256 prevBal = abi.decode(balData, (uint256));
-
- // update balance
- stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(give);
-
- // update total supply
- if (adjust) {
- (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0x18160ddd));
- uint256 totSup = abi.decode(totSupData, (uint256));
- if (give < prevBal) {
- totSup -= (prevBal - give);
- } else {
- totSup += (give - prevBal);
- }
- stdstore.target(token).sig(0x18160ddd).checked_write(totSup);
- }
- }
-
- function dealERC1155(address token, address to, uint256 id, uint256 give, bool adjust) internal virtual {
- // get current balance
- (, bytes memory balData) = token.staticcall(abi.encodeWithSelector(0x00fdd58e, to, id));
- uint256 prevBal = abi.decode(balData, (uint256));
-
- // update balance
- stdstore.target(token).sig(0x00fdd58e).with_key(to).with_key(id).checked_write(give);
-
- // update total supply
- if (adjust) {
- (, bytes memory totSupData) = token.staticcall(abi.encodeWithSelector(0xbd85b039, id));
- require(
- totSupData.length != 0,
- "StdCheats deal(address,address,uint,uint,bool): target contract is not ERC1155Supply."
- );
- uint256 totSup = abi.decode(totSupData, (uint256));
- if (give < prevBal) {
- totSup -= (prevBal - give);
- } else {
- totSup += (give - prevBal);
- }
- stdstore.target(token).sig(0xbd85b039).with_key(id).checked_write(totSup);
- }
- }
-
- function dealERC721(address token, address to, uint256 id) internal virtual {
- // check if token id is already minted and the actual owner.
- (bool successMinted, bytes memory ownerData) = token.staticcall(abi.encodeWithSelector(0x6352211e, id));
- require(successMinted, "StdCheats deal(address,address,uint,bool): id not minted.");
-
- // get owner current balance
- (, bytes memory fromBalData) =
- token.staticcall(abi.encodeWithSelector(0x70a08231, abi.decode(ownerData, (address))));
- uint256 fromPrevBal = abi.decode(fromBalData, (uint256));
-
- // get new user current balance
- (, bytes memory toBalData) = token.staticcall(abi.encodeWithSelector(0x70a08231, to));
- uint256 toPrevBal = abi.decode(toBalData, (uint256));
-
- // update balances
- stdstore.target(token).sig(0x70a08231).with_key(abi.decode(ownerData, (address))).checked_write(--fromPrevBal);
- stdstore.target(token).sig(0x70a08231).with_key(to).checked_write(++toPrevBal);
-
- // update owner
- stdstore.target(token).sig(0x6352211e).with_key(id).checked_write(to);
- }
-
- function deployCodeTo(string memory what, address where) internal virtual {
- deployCodeTo(what, "", 0, where);
- }
-
- function deployCodeTo(string memory what, bytes memory args, address where) internal virtual {
- deployCodeTo(what, args, 0, where);
- }
-
- function deployCodeTo(string memory what, bytes memory args, uint256 value, address where) internal virtual {
- bytes memory creationCode = vm.getCode(what);
- vm.etch(where, abi.encodePacked(creationCode, args));
- (bool success, bytes memory runtimeBytecode) = where.call{value: value}("");
- require(success, "StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode.");
- vm.etch(where, runtimeBytecode);
- }
-
- // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere.
- function console2_log(string memory p0) private view {
- (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string)", p0));
- status;
- }
-}
diff --git a/lib/forge-std/src/StdError.sol b/lib/forge-std/src/StdError.sol
deleted file mode 100644
index a302191..0000000
--- a/lib/forge-std/src/StdError.sol
+++ /dev/null
@@ -1,15 +0,0 @@
-// SPDX-License-Identifier: MIT
-// Panics work for versions >=0.8.0, but we lowered the pragma to make this compatible with Test
-pragma solidity >=0.6.2 <0.9.0;
-
-library stdError {
- bytes public constant assertionError = abi.encodeWithSignature("Panic(uint256)", 0x01);
- bytes public constant arithmeticError = abi.encodeWithSignature("Panic(uint256)", 0x11);
- bytes public constant divisionError = abi.encodeWithSignature("Panic(uint256)", 0x12);
- bytes public constant enumConversionError = abi.encodeWithSignature("Panic(uint256)", 0x21);
- bytes public constant encodeStorageError = abi.encodeWithSignature("Panic(uint256)", 0x22);
- bytes public constant popError = abi.encodeWithSignature("Panic(uint256)", 0x31);
- bytes public constant indexOOBError = abi.encodeWithSignature("Panic(uint256)", 0x32);
- bytes public constant memOverflowError = abi.encodeWithSignature("Panic(uint256)", 0x41);
- bytes public constant zeroVarError = abi.encodeWithSignature("Panic(uint256)", 0x51);
-}
diff --git a/lib/forge-std/src/StdInvariant.sol b/lib/forge-std/src/StdInvariant.sol
deleted file mode 100644
index bcd9ac0..0000000
--- a/lib/forge-std/src/StdInvariant.sol
+++ /dev/null
@@ -1,107 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-abstract contract StdInvariant {
- struct FuzzSelector {
- address addr;
- bytes4[] selectors;
- }
-
- struct FuzzInterface {
- address addr;
- string[] artifacts;
- }
-
- address[] private _excludedContracts;
- address[] private _excludedSenders;
- address[] private _targetedContracts;
- address[] private _targetedSenders;
-
- string[] private _excludedArtifacts;
- string[] private _targetedArtifacts;
-
- FuzzSelector[] private _targetedArtifactSelectors;
- FuzzSelector[] private _targetedSelectors;
-
- FuzzInterface[] private _targetedInterfaces;
-
- // Functions for users:
- // These are intended to be called in tests.
-
- function excludeContract(address newExcludedContract_) internal {
- _excludedContracts.push(newExcludedContract_);
- }
-
- function excludeSender(address newExcludedSender_) internal {
- _excludedSenders.push(newExcludedSender_);
- }
-
- function excludeArtifact(string memory newExcludedArtifact_) internal {
- _excludedArtifacts.push(newExcludedArtifact_);
- }
-
- function targetArtifact(string memory newTargetedArtifact_) internal {
- _targetedArtifacts.push(newTargetedArtifact_);
- }
-
- function targetArtifactSelector(FuzzSelector memory newTargetedArtifactSelector_) internal {
- _targetedArtifactSelectors.push(newTargetedArtifactSelector_);
- }
-
- function targetContract(address newTargetedContract_) internal {
- _targetedContracts.push(newTargetedContract_);
- }
-
- function targetSelector(FuzzSelector memory newTargetedSelector_) internal {
- _targetedSelectors.push(newTargetedSelector_);
- }
-
- function targetSender(address newTargetedSender_) internal {
- _targetedSenders.push(newTargetedSender_);
- }
-
- function targetInterface(FuzzInterface memory newTargetedInterface_) internal {
- _targetedInterfaces.push(newTargetedInterface_);
- }
-
- // Functions for forge:
- // These are called by forge to run invariant tests and don't need to be called in tests.
-
- function excludeArtifacts() public view returns (string[] memory excludedArtifacts_) {
- excludedArtifacts_ = _excludedArtifacts;
- }
-
- function excludeContracts() public view returns (address[] memory excludedContracts_) {
- excludedContracts_ = _excludedContracts;
- }
-
- function excludeSenders() public view returns (address[] memory excludedSenders_) {
- excludedSenders_ = _excludedSenders;
- }
-
- function targetArtifacts() public view returns (string[] memory targetedArtifacts_) {
- targetedArtifacts_ = _targetedArtifacts;
- }
-
- function targetArtifactSelectors() public view returns (FuzzSelector[] memory targetedArtifactSelectors_) {
- targetedArtifactSelectors_ = _targetedArtifactSelectors;
- }
-
- function targetContracts() public view returns (address[] memory targetedContracts_) {
- targetedContracts_ = _targetedContracts;
- }
-
- function targetSelectors() public view returns (FuzzSelector[] memory targetedSelectors_) {
- targetedSelectors_ = _targetedSelectors;
- }
-
- function targetSenders() public view returns (address[] memory targetedSenders_) {
- targetedSenders_ = _targetedSenders;
- }
-
- function targetInterfaces() public view returns (FuzzInterface[] memory targetedInterfaces_) {
- targetedInterfaces_ = _targetedInterfaces;
- }
-}
diff --git a/lib/forge-std/src/StdJson.sol b/lib/forge-std/src/StdJson.sol
deleted file mode 100644
index 42d9bb7..0000000
--- a/lib/forge-std/src/StdJson.sol
+++ /dev/null
@@ -1,183 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.0 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import {VmSafe} from "./Vm.sol";
-
-// Helpers for parsing and writing JSON files
-// To parse:
-// ```
-// using stdJson for string;
-// string memory json = vm.readFile("some_peth");
-// json.parseUint("");
-// ```
-// To write:
-// ```
-// using stdJson for string;
-// string memory json = "deploymentArtifact";
-// Contract contract = new Contract();
-// json.serialize("contractAddress", address(contract));
-// json = json.serialize("deploymentTimes", uint(1));
-// // store the stringified JSON to the 'json' variable we have been using as a key
-// // as we won't need it any longer
-// string memory json2 = "finalArtifact";
-// string memory final = json2.serialize("depArtifact", json);
-// final.write("");
-// ```
-
-library stdJson {
- VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code")))));
-
- function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) {
- return vm.parseJson(json, key);
- }
-
- function readUint(string memory json, string memory key) internal pure returns (uint256) {
- return vm.parseJsonUint(json, key);
- }
-
- function readUintArray(string memory json, string memory key) internal pure returns (uint256[] memory) {
- return vm.parseJsonUintArray(json, key);
- }
-
- function readInt(string memory json, string memory key) internal pure returns (int256) {
- return vm.parseJsonInt(json, key);
- }
-
- function readIntArray(string memory json, string memory key) internal pure returns (int256[] memory) {
- return vm.parseJsonIntArray(json, key);
- }
-
- function readBytes32(string memory json, string memory key) internal pure returns (bytes32) {
- return vm.parseJsonBytes32(json, key);
- }
-
- function readBytes32Array(string memory json, string memory key) internal pure returns (bytes32[] memory) {
- return vm.parseJsonBytes32Array(json, key);
- }
-
- function readString(string memory json, string memory key) internal pure returns (string memory) {
- return vm.parseJsonString(json, key);
- }
-
- function readStringArray(string memory json, string memory key) internal pure returns (string[] memory) {
- return vm.parseJsonStringArray(json, key);
- }
-
- function readAddress(string memory json, string memory key) internal pure returns (address) {
- return vm.parseJsonAddress(json, key);
- }
-
- function readAddressArray(string memory json, string memory key) internal pure returns (address[] memory) {
- return vm.parseJsonAddressArray(json, key);
- }
-
- function readBool(string memory json, string memory key) internal pure returns (bool) {
- return vm.parseJsonBool(json, key);
- }
-
- function readBoolArray(string memory json, string memory key) internal pure returns (bool[] memory) {
- return vm.parseJsonBoolArray(json, key);
- }
-
- function readBytes(string memory json, string memory key) internal pure returns (bytes memory) {
- return vm.parseJsonBytes(json, key);
- }
-
- function readBytesArray(string memory json, string memory key) internal pure returns (bytes[] memory) {
- return vm.parseJsonBytesArray(json, key);
- }
-
- function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) {
- return vm.serializeJson(jsonKey, rootObject);
- }
-
- function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) {
- return vm.serializeBool(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, bool[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeBool(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) {
- return vm.serializeUint(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, uint256[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeUint(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) {
- return vm.serializeInt(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, int256[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeInt(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) {
- return vm.serializeAddress(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, address[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeAddress(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) {
- return vm.serializeBytes32(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, bytes32[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeBytes32(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) {
- return vm.serializeBytes(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, bytes[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeBytes(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, string memory value)
- internal
- returns (string memory)
- {
- return vm.serializeString(jsonKey, key, value);
- }
-
- function serialize(string memory jsonKey, string memory key, string[] memory value)
- internal
- returns (string memory)
- {
- return vm.serializeString(jsonKey, key, value);
- }
-
- function write(string memory jsonKey, string memory path) internal {
- vm.writeJson(jsonKey, path);
- }
-
- function write(string memory jsonKey, string memory path, string memory valueKey) internal {
- vm.writeJson(jsonKey, path, valueKey);
- }
-}
diff --git a/lib/forge-std/src/StdMath.sol b/lib/forge-std/src/StdMath.sol
deleted file mode 100644
index 459523b..0000000
--- a/lib/forge-std/src/StdMath.sol
+++ /dev/null
@@ -1,43 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-library stdMath {
- int256 private constant INT256_MIN = -57896044618658097711785492504343953926634992332820282019728792003956564819968;
-
- function abs(int256 a) internal pure returns (uint256) {
- // Required or it will fail when `a = type(int256).min`
- if (a == INT256_MIN) {
- return 57896044618658097711785492504343953926634992332820282019728792003956564819968;
- }
-
- return uint256(a > 0 ? a : -a);
- }
-
- function delta(uint256 a, uint256 b) internal pure returns (uint256) {
- return a > b ? a - b : b - a;
- }
-
- function delta(int256 a, int256 b) internal pure returns (uint256) {
- // a and b are of the same sign
- // this works thanks to two's complement, the left-most bit is the sign bit
- if ((a ^ b) > -1) {
- return delta(abs(a), abs(b));
- }
-
- // a and b are of opposite signs
- return abs(a) + abs(b);
- }
-
- function percentDelta(uint256 a, uint256 b) internal pure returns (uint256) {
- uint256 absDelta = delta(a, b);
-
- return absDelta * 1e18 / b;
- }
-
- function percentDelta(int256 a, int256 b) internal pure returns (uint256) {
- uint256 absDelta = delta(a, b);
- uint256 absB = abs(b);
-
- return absDelta * 1e18 / absB;
- }
-}
diff --git a/lib/forge-std/src/StdStorage.sol b/lib/forge-std/src/StdStorage.sol
deleted file mode 100644
index e5ded70..0000000
--- a/lib/forge-std/src/StdStorage.sol
+++ /dev/null
@@ -1,378 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-import {Vm} from "./Vm.sol";
-
-struct StdStorage {
- mapping(address => mapping(bytes4 => mapping(bytes32 => uint256))) slots;
- mapping(address => mapping(bytes4 => mapping(bytes32 => bool))) finds;
- bytes32[] _keys;
- bytes4 _sig;
- uint256 _depth;
- address _target;
- bytes32 _set;
-}
-
-library stdStorageSafe {
- event SlotFound(address who, bytes4 fsig, bytes32 keysHash, uint256 slot);
- event WARNING_UninitedSlot(address who, uint256 slot);
-
- Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code")))));
-
- function sigs(string memory sigStr) internal pure returns (bytes4) {
- return bytes4(keccak256(bytes(sigStr)));
- }
-
- /// @notice find an arbitrary storage slot given a function sig, input data, address of the contract and a value to check against
- // slot complexity:
- // if flat, will be bytes32(uint256(uint));
- // if map, will be keccak256(abi.encode(key, uint(slot)));
- // if deep map, will be keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))));
- // if map struct, will be bytes32(uint256(keccak256(abi.encode(key1, keccak256(abi.encode(key0, uint(slot)))))) + structFieldDepth);
- function find(StdStorage storage self) internal returns (uint256) {
- address who = self._target;
- bytes4 fsig = self._sig;
- uint256 field_depth = self._depth;
- bytes32[] memory ins = self._keys;
-
- // calldata to test against
- if (self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]) {
- return self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))];
- }
- bytes memory cald = abi.encodePacked(fsig, flatten(ins));
- vm.record();
- bytes32 fdat;
- {
- (, bytes memory rdat) = who.staticcall(cald);
- fdat = bytesToBytes32(rdat, 32 * field_depth);
- }
-
- (bytes32[] memory reads,) = vm.accesses(address(who));
- if (reads.length == 1) {
- bytes32 curr = vm.load(who, reads[0]);
- if (curr == bytes32(0)) {
- emit WARNING_UninitedSlot(who, uint256(reads[0]));
- }
- if (fdat != curr) {
- require(
- false,
- "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported."
- );
- }
- emit SlotFound(who, fsig, keccak256(abi.encodePacked(ins, field_depth)), uint256(reads[0]));
- self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = uint256(reads[0]);
- self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = true;
- } else if (reads.length > 1) {
- for (uint256 i = 0; i < reads.length; i++) {
- bytes32 prev = vm.load(who, reads[i]);
- if (prev == bytes32(0)) {
- emit WARNING_UninitedSlot(who, uint256(reads[i]));
- }
- if (prev != fdat) {
- continue;
- }
- bytes32 new_val = ~prev;
- // store
- vm.store(who, reads[i], new_val);
- bool success;
- {
- bytes memory rdat;
- (success, rdat) = who.staticcall(cald);
- fdat = bytesToBytes32(rdat, 32 * field_depth);
- }
-
- if (success && fdat == new_val) {
- // we found which of the slots is the actual one
- emit SlotFound(who, fsig, keccak256(abi.encodePacked(ins, field_depth)), uint256(reads[i]));
- self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = uint256(reads[i]);
- self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))] = true;
- vm.store(who, reads[i], prev);
- break;
- }
- vm.store(who, reads[i], prev);
- }
- } else {
- revert("stdStorage find(StdStorage): No storage use detected for target.");
- }
-
- require(
- self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))],
- "stdStorage find(StdStorage): Slot(s) not found."
- );
-
- delete self._target;
- delete self._sig;
- delete self._keys;
- delete self._depth;
-
- return self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))];
- }
-
- function target(StdStorage storage self, address _target) internal returns (StdStorage storage) {
- self._target = _target;
- return self;
- }
-
- function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) {
- self._sig = _sig;
- return self;
- }
-
- function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) {
- self._sig = sigs(_sig);
- return self;
- }
-
- function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) {
- self._keys.push(bytes32(uint256(uint160(who))));
- return self;
- }
-
- function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) {
- self._keys.push(bytes32(amt));
- return self;
- }
-
- function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) {
- self._keys.push(key);
- return self;
- }
-
- function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) {
- self._depth = _depth;
- return self;
- }
-
- function read(StdStorage storage self) private returns (bytes memory) {
- address t = self._target;
- uint256 s = find(self);
- return abi.encode(vm.load(t, bytes32(s)));
- }
-
- function read_bytes32(StdStorage storage self) internal returns (bytes32) {
- return abi.decode(read(self), (bytes32));
- }
-
- function read_bool(StdStorage storage self) internal returns (bool) {
- int256 v = read_int(self);
- if (v == 0) return false;
- if (v == 1) return true;
- revert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool.");
- }
-
- function read_address(StdStorage storage self) internal returns (address) {
- return abi.decode(read(self), (address));
- }
-
- function read_uint(StdStorage storage self) internal returns (uint256) {
- return abi.decode(read(self), (uint256));
- }
-
- function read_int(StdStorage storage self) internal returns (int256) {
- return abi.decode(read(self), (int256));
- }
-
- function parent(StdStorage storage self) internal returns (uint256, bytes32) {
- address who = self._target;
- uint256 field_depth = self._depth;
- vm.startMappingRecording();
- uint256 child = find(self) - field_depth;
- (bool found, bytes32 key, bytes32 parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child));
- if (!found) {
- revert(
- "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called."
- );
- }
- return (uint256(parent_slot), key);
- }
-
- function root(StdStorage storage self) internal returns (uint256) {
- address who = self._target;
- uint256 field_depth = self._depth;
- vm.startMappingRecording();
- uint256 child = find(self) - field_depth;
- bool found;
- bytes32 root_slot;
- bytes32 parent_slot;
- (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(child));
- if (!found) {
- revert(
- "stdStorage read_bool(StdStorage): Cannot find parent. Make sure you give a slot and startMappingRecording() has been called."
- );
- }
- while (found) {
- root_slot = parent_slot;
- (found,, parent_slot) = vm.getMappingKeyAndParentOf(who, bytes32(root_slot));
- }
- return uint256(root_slot);
- }
-
- function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) {
- bytes32 out;
-
- uint256 max = b.length > 32 ? 32 : b.length;
- for (uint256 i = 0; i < max; i++) {
- out |= bytes32(b[offset + i] & 0xFF) >> (i * 8);
- }
- return out;
- }
-
- function flatten(bytes32[] memory b) private pure returns (bytes memory) {
- bytes memory result = new bytes(b.length * 32);
- for (uint256 i = 0; i < b.length; i++) {
- bytes32 k = b[i];
- /// @solidity memory-safe-assembly
- assembly {
- mstore(add(result, add(32, mul(32, i))), k)
- }
- }
-
- return result;
- }
-}
-
-library stdStorage {
- Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code")))));
-
- function sigs(string memory sigStr) internal pure returns (bytes4) {
- return stdStorageSafe.sigs(sigStr);
- }
-
- function find(StdStorage storage self) internal returns (uint256) {
- return stdStorageSafe.find(self);
- }
-
- function target(StdStorage storage self, address _target) internal returns (StdStorage storage) {
- return stdStorageSafe.target(self, _target);
- }
-
- function sig(StdStorage storage self, bytes4 _sig) internal returns (StdStorage storage) {
- return stdStorageSafe.sig(self, _sig);
- }
-
- function sig(StdStorage storage self, string memory _sig) internal returns (StdStorage storage) {
- return stdStorageSafe.sig(self, _sig);
- }
-
- function with_key(StdStorage storage self, address who) internal returns (StdStorage storage) {
- return stdStorageSafe.with_key(self, who);
- }
-
- function with_key(StdStorage storage self, uint256 amt) internal returns (StdStorage storage) {
- return stdStorageSafe.with_key(self, amt);
- }
-
- function with_key(StdStorage storage self, bytes32 key) internal returns (StdStorage storage) {
- return stdStorageSafe.with_key(self, key);
- }
-
- function depth(StdStorage storage self, uint256 _depth) internal returns (StdStorage storage) {
- return stdStorageSafe.depth(self, _depth);
- }
-
- function checked_write(StdStorage storage self, address who) internal {
- checked_write(self, bytes32(uint256(uint160(who))));
- }
-
- function checked_write(StdStorage storage self, uint256 amt) internal {
- checked_write(self, bytes32(amt));
- }
-
- function checked_write_int(StdStorage storage self, int256 val) internal {
- checked_write(self, bytes32(uint256(val)));
- }
-
- function checked_write(StdStorage storage self, bool write) internal {
- bytes32 t;
- /// @solidity memory-safe-assembly
- assembly {
- t := write
- }
- checked_write(self, t);
- }
-
- function checked_write(StdStorage storage self, bytes32 set) internal {
- address who = self._target;
- bytes4 fsig = self._sig;
- uint256 field_depth = self._depth;
- bytes32[] memory ins = self._keys;
-
- bytes memory cald = abi.encodePacked(fsig, flatten(ins));
- if (!self.finds[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]) {
- find(self);
- }
- bytes32 slot = bytes32(self.slots[who][fsig][keccak256(abi.encodePacked(ins, field_depth))]);
-
- bytes32 fdat;
- {
- (, bytes memory rdat) = who.staticcall(cald);
- fdat = bytesToBytes32(rdat, 32 * field_depth);
- }
- bytes32 curr = vm.load(who, slot);
-
- if (fdat != curr) {
- require(
- false,
- "stdStorage find(StdStorage): Packed slot. This would cause dangerous overwriting and currently isn't supported."
- );
- }
- vm.store(who, slot, set);
- delete self._target;
- delete self._sig;
- delete self._keys;
- delete self._depth;
- }
-
- function read_bytes32(StdStorage storage self) internal returns (bytes32) {
- return stdStorageSafe.read_bytes32(self);
- }
-
- function read_bool(StdStorage storage self) internal returns (bool) {
- return stdStorageSafe.read_bool(self);
- }
-
- function read_address(StdStorage storage self) internal returns (address) {
- return stdStorageSafe.read_address(self);
- }
-
- function read_uint(StdStorage storage self) internal returns (uint256) {
- return stdStorageSafe.read_uint(self);
- }
-
- function read_int(StdStorage storage self) internal returns (int256) {
- return stdStorageSafe.read_int(self);
- }
-
- function parent(StdStorage storage self) internal returns (uint256, bytes32) {
- return stdStorageSafe.parent(self);
- }
-
- function root(StdStorage storage self) internal returns (uint256) {
- return stdStorageSafe.root(self);
- }
-
- // Private function so needs to be copied over
- function bytesToBytes32(bytes memory b, uint256 offset) private pure returns (bytes32) {
- bytes32 out;
-
- uint256 max = b.length > 32 ? 32 : b.length;
- for (uint256 i = 0; i < max; i++) {
- out |= bytes32(b[offset + i] & 0xFF) >> (i * 8);
- }
- return out;
- }
-
- // Private function so needs to be copied over
- function flatten(bytes32[] memory b) private pure returns (bytes memory) {
- bytes memory result = new bytes(b.length * 32);
- for (uint256 i = 0; i < b.length; i++) {
- bytes32 k = b[i];
- /// @solidity memory-safe-assembly
- assembly {
- mstore(add(result, add(32, mul(32, i))), k)
- }
- }
-
- return result;
- }
-}
diff --git a/lib/forge-std/src/StdStyle.sol b/lib/forge-std/src/StdStyle.sol
deleted file mode 100644
index d371e0c..0000000
--- a/lib/forge-std/src/StdStyle.sol
+++ /dev/null
@@ -1,333 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.4.22 <0.9.0;
-
-import {VmSafe} from "./Vm.sol";
-
-library StdStyle {
- VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code")))));
-
- string constant RED = "\u001b[91m";
- string constant GREEN = "\u001b[92m";
- string constant YELLOW = "\u001b[93m";
- string constant BLUE = "\u001b[94m";
- string constant MAGENTA = "\u001b[95m";
- string constant CYAN = "\u001b[96m";
- string constant BOLD = "\u001b[1m";
- string constant DIM = "\u001b[2m";
- string constant ITALIC = "\u001b[3m";
- string constant UNDERLINE = "\u001b[4m";
- string constant INVERSE = "\u001b[7m";
- string constant RESET = "\u001b[0m";
-
- function styleConcat(string memory style, string memory self) private pure returns (string memory) {
- return string(abi.encodePacked(style, self, RESET));
- }
-
- function red(string memory self) internal pure returns (string memory) {
- return styleConcat(RED, self);
- }
-
- function red(uint256 self) internal pure returns (string memory) {
- return red(vm.toString(self));
- }
-
- function red(int256 self) internal pure returns (string memory) {
- return red(vm.toString(self));
- }
-
- function red(address self) internal pure returns (string memory) {
- return red(vm.toString(self));
- }
-
- function red(bool self) internal pure returns (string memory) {
- return red(vm.toString(self));
- }
-
- function redBytes(bytes memory self) internal pure returns (string memory) {
- return red(vm.toString(self));
- }
-
- function redBytes32(bytes32 self) internal pure returns (string memory) {
- return red(vm.toString(self));
- }
-
- function green(string memory self) internal pure returns (string memory) {
- return styleConcat(GREEN, self);
- }
-
- function green(uint256 self) internal pure returns (string memory) {
- return green(vm.toString(self));
- }
-
- function green(int256 self) internal pure returns (string memory) {
- return green(vm.toString(self));
- }
-
- function green(address self) internal pure returns (string memory) {
- return green(vm.toString(self));
- }
-
- function green(bool self) internal pure returns (string memory) {
- return green(vm.toString(self));
- }
-
- function greenBytes(bytes memory self) internal pure returns (string memory) {
- return green(vm.toString(self));
- }
-
- function greenBytes32(bytes32 self) internal pure returns (string memory) {
- return green(vm.toString(self));
- }
-
- function yellow(string memory self) internal pure returns (string memory) {
- return styleConcat(YELLOW, self);
- }
-
- function yellow(uint256 self) internal pure returns (string memory) {
- return yellow(vm.toString(self));
- }
-
- function yellow(int256 self) internal pure returns (string memory) {
- return yellow(vm.toString(self));
- }
-
- function yellow(address self) internal pure returns (string memory) {
- return yellow(vm.toString(self));
- }
-
- function yellow(bool self) internal pure returns (string memory) {
- return yellow(vm.toString(self));
- }
-
- function yellowBytes(bytes memory self) internal pure returns (string memory) {
- return yellow(vm.toString(self));
- }
-
- function yellowBytes32(bytes32 self) internal pure returns (string memory) {
- return yellow(vm.toString(self));
- }
-
- function blue(string memory self) internal pure returns (string memory) {
- return styleConcat(BLUE, self);
- }
-
- function blue(uint256 self) internal pure returns (string memory) {
- return blue(vm.toString(self));
- }
-
- function blue(int256 self) internal pure returns (string memory) {
- return blue(vm.toString(self));
- }
-
- function blue(address self) internal pure returns (string memory) {
- return blue(vm.toString(self));
- }
-
- function blue(bool self) internal pure returns (string memory) {
- return blue(vm.toString(self));
- }
-
- function blueBytes(bytes memory self) internal pure returns (string memory) {
- return blue(vm.toString(self));
- }
-
- function blueBytes32(bytes32 self) internal pure returns (string memory) {
- return blue(vm.toString(self));
- }
-
- function magenta(string memory self) internal pure returns (string memory) {
- return styleConcat(MAGENTA, self);
- }
-
- function magenta(uint256 self) internal pure returns (string memory) {
- return magenta(vm.toString(self));
- }
-
- function magenta(int256 self) internal pure returns (string memory) {
- return magenta(vm.toString(self));
- }
-
- function magenta(address self) internal pure returns (string memory) {
- return magenta(vm.toString(self));
- }
-
- function magenta(bool self) internal pure returns (string memory) {
- return magenta(vm.toString(self));
- }
-
- function magentaBytes(bytes memory self) internal pure returns (string memory) {
- return magenta(vm.toString(self));
- }
-
- function magentaBytes32(bytes32 self) internal pure returns (string memory) {
- return magenta(vm.toString(self));
- }
-
- function cyan(string memory self) internal pure returns (string memory) {
- return styleConcat(CYAN, self);
- }
-
- function cyan(uint256 self) internal pure returns (string memory) {
- return cyan(vm.toString(self));
- }
-
- function cyan(int256 self) internal pure returns (string memory) {
- return cyan(vm.toString(self));
- }
-
- function cyan(address self) internal pure returns (string memory) {
- return cyan(vm.toString(self));
- }
-
- function cyan(bool self) internal pure returns (string memory) {
- return cyan(vm.toString(self));
- }
-
- function cyanBytes(bytes memory self) internal pure returns (string memory) {
- return cyan(vm.toString(self));
- }
-
- function cyanBytes32(bytes32 self) internal pure returns (string memory) {
- return cyan(vm.toString(self));
- }
-
- function bold(string memory self) internal pure returns (string memory) {
- return styleConcat(BOLD, self);
- }
-
- function bold(uint256 self) internal pure returns (string memory) {
- return bold(vm.toString(self));
- }
-
- function bold(int256 self) internal pure returns (string memory) {
- return bold(vm.toString(self));
- }
-
- function bold(address self) internal pure returns (string memory) {
- return bold(vm.toString(self));
- }
-
- function bold(bool self) internal pure returns (string memory) {
- return bold(vm.toString(self));
- }
-
- function boldBytes(bytes memory self) internal pure returns (string memory) {
- return bold(vm.toString(self));
- }
-
- function boldBytes32(bytes32 self) internal pure returns (string memory) {
- return bold(vm.toString(self));
- }
-
- function dim(string memory self) internal pure returns (string memory) {
- return styleConcat(DIM, self);
- }
-
- function dim(uint256 self) internal pure returns (string memory) {
- return dim(vm.toString(self));
- }
-
- function dim(int256 self) internal pure returns (string memory) {
- return dim(vm.toString(self));
- }
-
- function dim(address self) internal pure returns (string memory) {
- return dim(vm.toString(self));
- }
-
- function dim(bool self) internal pure returns (string memory) {
- return dim(vm.toString(self));
- }
-
- function dimBytes(bytes memory self) internal pure returns (string memory) {
- return dim(vm.toString(self));
- }
-
- function dimBytes32(bytes32 self) internal pure returns (string memory) {
- return dim(vm.toString(self));
- }
-
- function italic(string memory self) internal pure returns (string memory) {
- return styleConcat(ITALIC, self);
- }
-
- function italic(uint256 self) internal pure returns (string memory) {
- return italic(vm.toString(self));
- }
-
- function italic(int256 self) internal pure returns (string memory) {
- return italic(vm.toString(self));
- }
-
- function italic(address self) internal pure returns (string memory) {
- return italic(vm.toString(self));
- }
-
- function italic(bool self) internal pure returns (string memory) {
- return italic(vm.toString(self));
- }
-
- function italicBytes(bytes memory self) internal pure returns (string memory) {
- return italic(vm.toString(self));
- }
-
- function italicBytes32(bytes32 self) internal pure returns (string memory) {
- return italic(vm.toString(self));
- }
-
- function underline(string memory self) internal pure returns (string memory) {
- return styleConcat(UNDERLINE, self);
- }
-
- function underline(uint256 self) internal pure returns (string memory) {
- return underline(vm.toString(self));
- }
-
- function underline(int256 self) internal pure returns (string memory) {
- return underline(vm.toString(self));
- }
-
- function underline(address self) internal pure returns (string memory) {
- return underline(vm.toString(self));
- }
-
- function underline(bool self) internal pure returns (string memory) {
- return underline(vm.toString(self));
- }
-
- function underlineBytes(bytes memory self) internal pure returns (string memory) {
- return underline(vm.toString(self));
- }
-
- function underlineBytes32(bytes32 self) internal pure returns (string memory) {
- return underline(vm.toString(self));
- }
-
- function inverse(string memory self) internal pure returns (string memory) {
- return styleConcat(INVERSE, self);
- }
-
- function inverse(uint256 self) internal pure returns (string memory) {
- return inverse(vm.toString(self));
- }
-
- function inverse(int256 self) internal pure returns (string memory) {
- return inverse(vm.toString(self));
- }
-
- function inverse(address self) internal pure returns (string memory) {
- return inverse(vm.toString(self));
- }
-
- function inverse(bool self) internal pure returns (string memory) {
- return inverse(vm.toString(self));
- }
-
- function inverseBytes(bytes memory self) internal pure returns (string memory) {
- return inverse(vm.toString(self));
- }
-
- function inverseBytes32(bytes32 self) internal pure returns (string memory) {
- return inverse(vm.toString(self));
- }
-}
diff --git a/lib/forge-std/src/StdUtils.sol b/lib/forge-std/src/StdUtils.sol
deleted file mode 100644
index ad9566e..0000000
--- a/lib/forge-std/src/StdUtils.sol
+++ /dev/null
@@ -1,198 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import {IMulticall3} from "./interfaces/IMulticall3.sol";
-import {VmSafe} from "./Vm.sol";
-
-abstract contract StdUtils {
- /*//////////////////////////////////////////////////////////////////////////
- CONSTANTS
- //////////////////////////////////////////////////////////////////////////*/
-
- IMulticall3 private constant multicall = IMulticall3(0xcA11bde05977b3631167028862bE2a173976CA11);
- VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code")))));
- address private constant CONSOLE2_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67;
- uint256 private constant INT256_MIN_ABS =
- 57896044618658097711785492504343953926634992332820282019728792003956564819968;
- uint256 private constant SECP256K1_ORDER =
- 115792089237316195423570985008687907852837564279074904382605163141518161494337;
- uint256 private constant UINT256_MAX =
- 115792089237316195423570985008687907853269984665640564039457584007913129639935;
-
- // Used by default when deploying with create2, https://github.com/Arachnid/deterministic-deployment-proxy.
- address private constant CREATE2_FACTORY = 0x4e59b44847b379578588920cA78FbF26c0B4956C;
-
- /*//////////////////////////////////////////////////////////////////////////
- INTERNAL FUNCTIONS
- //////////////////////////////////////////////////////////////////////////*/
-
- function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256 result) {
- require(min <= max, "StdUtils bound(uint256,uint256,uint256): Max is less than min.");
- // If x is between min and max, return x directly. This is to ensure that dictionary values
- // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188
- if (x >= min && x <= max) return x;
-
- uint256 size = max - min + 1;
-
- // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side.
- // This helps ensure coverage of the min/max values.
- if (x <= 3 && size > x) return min + x;
- if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) return max - (UINT256_MAX - x);
-
- // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive.
- if (x > max) {
- uint256 diff = x - max;
- uint256 rem = diff % size;
- if (rem == 0) return max;
- result = min + rem - 1;
- } else if (x < min) {
- uint256 diff = min - x;
- uint256 rem = diff % size;
- if (rem == 0) return min;
- result = max - rem + 1;
- }
- }
-
- function bound(uint256 x, uint256 min, uint256 max) internal view virtual returns (uint256 result) {
- result = _bound(x, min, max);
- console2_log("Bound Result", result);
- }
-
- function _bound(int256 x, int256 min, int256 max) internal pure virtual returns (int256 result) {
- require(min <= max, "StdUtils bound(int256,int256,int256): Max is less than min.");
-
- // Shifting all int256 values to uint256 to use _bound function. The range of two types are:
- // int256 : -(2**255) ~ (2**255 - 1)
- // uint256: 0 ~ (2**256 - 1)
- // So, add 2**255, INT256_MIN_ABS to the integer values.
- //
- // If the given integer value is -2**255, we cannot use `-uint256(-x)` because of the overflow.
- // So, use `~uint256(x) + 1` instead.
- uint256 _x = x < 0 ? (INT256_MIN_ABS - ~uint256(x) - 1) : (uint256(x) + INT256_MIN_ABS);
- uint256 _min = min < 0 ? (INT256_MIN_ABS - ~uint256(min) - 1) : (uint256(min) + INT256_MIN_ABS);
- uint256 _max = max < 0 ? (INT256_MIN_ABS - ~uint256(max) - 1) : (uint256(max) + INT256_MIN_ABS);
-
- uint256 y = _bound(_x, _min, _max);
-
- // To move it back to int256 value, subtract INT256_MIN_ABS at here.
- result = y < INT256_MIN_ABS ? int256(~(INT256_MIN_ABS - y) + 1) : int256(y - INT256_MIN_ABS);
- }
-
- function bound(int256 x, int256 min, int256 max) internal view virtual returns (int256 result) {
- result = _bound(x, min, max);
- console2_log("Bound result", vm.toString(result));
- }
-
- function boundPrivateKey(uint256 privateKey) internal pure virtual returns (uint256 result) {
- result = _bound(privateKey, 1, SECP256K1_ORDER - 1);
- }
-
- function bytesToUint(bytes memory b) internal pure virtual returns (uint256) {
- require(b.length <= 32, "StdUtils bytesToUint(bytes): Bytes length exceeds 32.");
- return abi.decode(abi.encodePacked(new bytes(32 - b.length), b), (uint256));
- }
-
- /// @dev Compute the address a contract will be deployed at for a given deployer address and nonce
- /// @notice adapted from Solmate implementation (https://github.com/Rari-Capital/solmate/blob/main/src/utils/LibRLP.sol)
- function computeCreateAddress(address deployer, uint256 nonce) internal pure virtual returns (address) {
- // forgefmt: disable-start
- // The integer zero is treated as an empty byte string, and as a result it only has a length prefix, 0x80, computed via 0x80 + 0.
- // A one byte integer uses its own value as its length prefix, there is no additional "0x80 + length" prefix that comes before it.
- if (nonce == 0x00) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, bytes1(0x80))));
- if (nonce <= 0x7f) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), deployer, uint8(nonce))));
-
- // Nonces greater than 1 byte all follow a consistent encoding scheme, where each value is preceded by a prefix of 0x80 + length.
- if (nonce <= 2**8 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd7), bytes1(0x94), deployer, bytes1(0x81), uint8(nonce))));
- if (nonce <= 2**16 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd8), bytes1(0x94), deployer, bytes1(0x82), uint16(nonce))));
- if (nonce <= 2**24 - 1) return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xd9), bytes1(0x94), deployer, bytes1(0x83), uint24(nonce))));
- // forgefmt: disable-end
-
- // More details about RLP encoding can be found here: https://eth.wiki/fundamentals/rlp
- // 0xda = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x84 ++ nonce)
- // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)
- // 0x84 = 0x80 + 0x04 (0x04 = the bytes length of the nonce, 4 bytes, in hex)
- // We assume nobody can have a nonce large enough to require more than 32 bytes.
- return addressFromLast20Bytes(
- keccak256(abi.encodePacked(bytes1(0xda), bytes1(0x94), deployer, bytes1(0x84), uint32(nonce)))
- );
- }
-
- function computeCreate2Address(bytes32 salt, bytes32 initcodeHash, address deployer)
- internal
- pure
- virtual
- returns (address)
- {
- return addressFromLast20Bytes(keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, initcodeHash)));
- }
-
- /// @dev returns the address of a contract created with CREATE2 using the default CREATE2 deployer
- function computeCreate2Address(bytes32 salt, bytes32 initCodeHash) internal pure returns (address) {
- return computeCreate2Address(salt, initCodeHash, CREATE2_FACTORY);
- }
-
- /// @dev returns the hash of the init code (creation code + no args) used in CREATE2 with no constructor arguments
- /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode
- function hashInitCode(bytes memory creationCode) internal pure returns (bytes32) {
- return hashInitCode(creationCode, "");
- }
-
- /// @dev returns the hash of the init code (creation code + ABI-encoded args) used in CREATE2
- /// @param creationCode the creation code of a contract C, as returned by type(C).creationCode
- /// @param args the ABI-encoded arguments to the constructor of C
- function hashInitCode(bytes memory creationCode, bytes memory args) internal pure returns (bytes32) {
- return keccak256(abi.encodePacked(creationCode, args));
- }
-
- // Performs a single call with Multicall3 to query the ERC-20 token balances of the given addresses.
- function getTokenBalances(address token, address[] memory addresses)
- internal
- virtual
- returns (uint256[] memory balances)
- {
- uint256 tokenCodeSize;
- assembly {
- tokenCodeSize := extcodesize(token)
- }
- require(tokenCodeSize > 0, "StdUtils getTokenBalances(address,address[]): Token address is not a contract.");
-
- // ABI encode the aggregate call to Multicall3.
- uint256 length = addresses.length;
- IMulticall3.Call[] memory calls = new IMulticall3.Call[](length);
- for (uint256 i = 0; i < length; ++i) {
- // 0x70a08231 = bytes4("balanceOf(address)"))
- calls[i] = IMulticall3.Call({target: token, callData: abi.encodeWithSelector(0x70a08231, (addresses[i]))});
- }
-
- // Make the aggregate call.
- (, bytes[] memory returnData) = multicall.aggregate(calls);
-
- // ABI decode the return data and return the balances.
- balances = new uint256[](length);
- for (uint256 i = 0; i < length; ++i) {
- balances[i] = abi.decode(returnData[i], (uint256));
- }
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- PRIVATE FUNCTIONS
- //////////////////////////////////////////////////////////////////////////*/
-
- function addressFromLast20Bytes(bytes32 bytesValue) private pure returns (address) {
- return address(uint160(uint256(bytesValue)));
- }
-
- // Used to prevent the compilation of console, which shortens the compilation time when console is not used elsewhere.
-
- function console2_log(string memory p0, uint256 p1) private view {
- (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string,uint256)", p0, p1));
- status;
- }
-
- function console2_log(string memory p0, string memory p1) private view {
- (bool status,) = address(CONSOLE2_ADDRESS).staticcall(abi.encodeWithSignature("log(string,string)", p0, p1));
- status;
- }
-}
diff --git a/lib/forge-std/src/Test.sol b/lib/forge-std/src/Test.sol
deleted file mode 100644
index 743c183..0000000
--- a/lib/forge-std/src/Test.sol
+++ /dev/null
@@ -1,33 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-// 💬 ABOUT
-// Forge Std's default Test.
-
-// 🧩 MODULES
-import {console} from "./console.sol";
-import {console2} from "./console2.sol";
-import {safeconsole} from "./safeconsole.sol";
-import {StdAssertions} from "./StdAssertions.sol";
-import {StdChains} from "./StdChains.sol";
-import {StdCheats} from "./StdCheats.sol";
-import {stdError} from "./StdError.sol";
-import {StdInvariant} from "./StdInvariant.sol";
-import {stdJson} from "./StdJson.sol";
-import {stdMath} from "./StdMath.sol";
-import {StdStorage, stdStorage} from "./StdStorage.sol";
-import {StdStyle} from "./StdStyle.sol";
-import {StdUtils} from "./StdUtils.sol";
-import {Vm} from "./Vm.sol";
-
-// 📦 BOILERPLATE
-import {TestBase} from "./Base.sol";
-import {DSTest} from "ds-test/test.sol";
-
-// ⭐️ TEST
-abstract contract Test is TestBase, DSTest, StdAssertions, StdChains, StdCheats, StdInvariant, StdUtils {
-// Note: IS_TEST() must return true.
-// Note: Must have failure system, https://github.com/dapphub/ds-test/blob/cd98eff28324bfac652e63a239a60632a761790b/src/test.sol#L39-L76.
-}
diff --git a/lib/forge-std/src/Vm.sol b/lib/forge-std/src/Vm.sol
deleted file mode 100644
index c6aed00..0000000
--- a/lib/forge-std/src/Vm.sol
+++ /dev/null
@@ -1,743 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-// Cheatcodes are marked as view/pure/none using the following rules:
-// 0. A call's observable behaviour includes its return value, logs, reverts and state writes,
-// 1. If you can influence a later call's observable behaviour, you're neither `view` nor `pure (you are modifying some state be it the EVM, interpreter, filesystem, etc),
-// 2. Otherwise if you can be influenced by an earlier call, or if reading some state, you're `view`,
-// 3. Otherwise you're `pure`.
-
-// The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may
-// result in Script simulations differing from on-chain execution. It is recommended to only use
-// these cheats in scripts.
-interface VmSafe {
- // ======== Types ========
- enum CallerMode {
- None,
- Broadcast,
- RecurrentBroadcast,
- Prank,
- RecurrentPrank
- }
-
- struct Log {
- bytes32[] topics;
- bytes data;
- address emitter;
- }
-
- struct Rpc {
- string key;
- string url;
- }
-
- struct DirEntry {
- string errorMessage;
- string path;
- uint64 depth;
- bool isDir;
- bool isSymlink;
- }
-
- struct FsMetadata {
- bool isDir;
- bool isSymlink;
- uint256 length;
- bool readOnly;
- uint256 modified;
- uint256 accessed;
- uint256 created;
- }
-
- struct Wallet {
- address addr;
- uint256 publicKeyX;
- uint256 publicKeyY;
- uint256 privateKey;
- }
-
- struct FfiResult {
- int32 exitCode;
- bytes stdout;
- bytes stderr;
- }
-
- // ======== EVM ========
-
- // Gets the address for a given private key
- function addr(uint256 privateKey) external pure returns (address keyAddr);
-
- // Gets the nonce of an account.
- // See `getNonce(Wallet memory wallet)` for an alternative way to manage users and get their nonces.
- function getNonce(address account) external view returns (uint64 nonce);
-
- // Loads a storage slot from an address
- function load(address target, bytes32 slot) external view returns (bytes32 data);
-
- // Signs data
- function sign(uint256 privateKey, bytes32 digest) external pure returns (uint8 v, bytes32 r, bytes32 s);
-
- // -------- Record Storage --------
- // Records all storage reads and writes
- function record() external;
-
- // Gets all accessed reads and write slot from a `vm.record` session, for a given address
- function accesses(address target) external returns (bytes32[] memory readSlots, bytes32[] memory writeSlots);
-
- // -------- Recording Map Writes --------
-
- // Starts recording all map SSTOREs for later retrieval.
- function startMappingRecording() external;
-
- // Stops recording all map SSTOREs for later retrieval and clears the recorded data.
- function stopMappingRecording() external;
-
- // Gets the number of elements in the mapping at the given slot, for a given address.
- function getMappingLength(address target, bytes32 mappingSlot) external returns (uint256 length);
-
- // Gets the elements at index idx of the mapping at the given slot, for a given address. The
- // index must be less than the length of the mapping (i.e. the number of keys in the mapping).
- function getMappingSlotAt(address target, bytes32 mappingSlot, uint256 idx) external returns (bytes32 value);
-
- // Gets the map key and parent of a mapping at a given slot, for a given address.
- function getMappingKeyAndParentOf(address target, bytes32 elementSlot)
- external
- returns (bool found, bytes32 key, bytes32 parent);
-
- // -------- Record Logs --------
- // Record all the transaction logs
- function recordLogs() external;
-
- // Gets all the recorded logs
- function getRecordedLogs() external returns (Log[] memory logs);
-
- // -------- Gas Metering --------
- // It's recommend to use the `noGasMetering` modifier included with forge-std, instead of
- // using these functions directly.
-
- // Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.
- function pauseGasMetering() external;
-
- // Resumes gas metering (i.e. gas usage is counted again). Noop if already on.
- function resumeGasMetering() external;
-
- // ======== Test Configuration ========
-
- // If the condition is false, discard this run's fuzz inputs and generate new ones.
- function assume(bool condition) external pure;
-
- // Writes a breakpoint to jump to in the debugger
- function breakpoint(string calldata char) external;
-
- // Writes a conditional breakpoint to jump to in the debugger
- function breakpoint(string calldata char, bool value) external;
-
- // Returns the RPC url for the given alias
- function rpcUrl(string calldata rpcAlias) external view returns (string memory json);
-
- // Returns all rpc urls and their aliases `[alias, url][]`
- function rpcUrls() external view returns (string[2][] memory urls);
-
- // Returns all rpc urls and their aliases as structs.
- function rpcUrlStructs() external view returns (Rpc[] memory urls);
-
- // Suspends execution of the main thread for `duration` milliseconds
- function sleep(uint256 duration) external;
-
- // ======== OS and Filesystem ========
-
- // -------- Metadata --------
-
- // Returns true if the given path points to an existing entity, else returns false
- function exists(string calldata path) external returns (bool result);
-
- // Given a path, query the file system to get information about a file, directory, etc.
- function fsMetadata(string calldata path) external view returns (FsMetadata memory metadata);
-
- // Returns true if the path exists on disk and is pointing at a directory, else returns false
- function isDir(string calldata path) external returns (bool result);
-
- // Returns true if the path exists on disk and is pointing at a regular file, else returns false
- function isFile(string calldata path) external returns (bool result);
-
- // Get the path of the current project root.
- function projectRoot() external view returns (string memory path);
-
- // Returns the time since unix epoch in milliseconds
- function unixTime() external returns (uint256 milliseconds);
-
- // -------- Reading and writing --------
-
- // Closes file for reading, resetting the offset and allowing to read it from beginning with readLine.
- // `path` is relative to the project root.
- function closeFile(string calldata path) external;
-
- // Copies the contents of one file to another. This function will **overwrite** the contents of `to`.
- // On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`.
- // Both `from` and `to` are relative to the project root.
- function copyFile(string calldata from, string calldata to) external returns (uint64 copied);
-
- // Creates a new, empty directory at the provided path.
- // This cheatcode will revert in the following situations, but is not limited to just these cases:
- // - User lacks permissions to modify `path`.
- // - A parent of the given path doesn't exist and `recursive` is false.
- // - `path` already exists and `recursive` is false.
- // `path` is relative to the project root.
- function createDir(string calldata path, bool recursive) external;
-
- // Reads the directory at the given path recursively, up to `max_depth`.
- // `max_depth` defaults to 1, meaning only the direct children of the given directory will be returned.
- // Follows symbolic links if `follow_links` is true.
- function readDir(string calldata path) external view returns (DirEntry[] memory entries);
- function readDir(string calldata path, uint64 maxDepth) external view returns (DirEntry[] memory entries);
- function readDir(string calldata path, uint64 maxDepth, bool followLinks)
- external
- view
- returns (DirEntry[] memory entries);
-
- // Reads the entire content of file to string. `path` is relative to the project root.
- function readFile(string calldata path) external view returns (string memory data);
-
- // Reads the entire content of file as binary. `path` is relative to the project root.
- function readFileBinary(string calldata path) external view returns (bytes memory data);
-
- // Reads next line of file to string.
- function readLine(string calldata path) external view returns (string memory line);
-
- // Reads a symbolic link, returning the path that the link points to.
- // This cheatcode will revert in the following situations, but is not limited to just these cases:
- // - `path` is not a symbolic link.
- // - `path` does not exist.
- function readLink(string calldata linkPath) external view returns (string memory targetPath);
-
- // Removes a directory at the provided path.
- // This cheatcode will revert in the following situations, but is not limited to just these cases:
- // - `path` doesn't exist.
- // - `path` isn't a directory.
- // - User lacks permissions to modify `path`.
- // - The directory is not empty and `recursive` is false.
- // `path` is relative to the project root.
- function removeDir(string calldata path, bool recursive) external;
-
- // Removes a file from the filesystem.
- // This cheatcode will revert in the following situations, but is not limited to just these cases:
- // - `path` points to a directory.
- // - The file doesn't exist.
- // - The user lacks permissions to remove the file.
- // `path` is relative to the project root.
- function removeFile(string calldata path) external;
-
- // Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does.
- // `path` is relative to the project root.
- function writeFile(string calldata path, string calldata data) external;
-
- // Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does.
- // `path` is relative to the project root.
- function writeFileBinary(string calldata path, bytes calldata data) external;
-
- // Writes line to file, creating a file if it does not exist.
- // `path` is relative to the project root.
- function writeLine(string calldata path, string calldata data) external;
-
- // -------- Foreign Function Interface --------
-
- // Performs a foreign function call via the terminal
- function ffi(string[] calldata commandInput) external returns (bytes memory result);
-
- // Performs a foreign function call via terminal and returns the exit code, stdout, and stderr
- function tryFfi(string[] calldata commandInput) external returns (FfiResult memory result);
-
- // ======== Environment Variables ========
-
- // Sets environment variables
- function setEnv(string calldata name, string calldata value) external;
-
- // Reads environment variables, (name) => (value)
- function envBool(string calldata name) external view returns (bool value);
- function envUint(string calldata name) external view returns (uint256 value);
- function envInt(string calldata name) external view returns (int256 value);
- function envAddress(string calldata name) external view returns (address value);
- function envBytes32(string calldata name) external view returns (bytes32 value);
- function envString(string calldata name) external view returns (string memory value);
- function envBytes(string calldata name) external view returns (bytes memory value);
-
- // Reads environment variables as arrays
- function envBool(string calldata name, string calldata delim) external view returns (bool[] memory value);
- function envUint(string calldata name, string calldata delim) external view returns (uint256[] memory value);
- function envInt(string calldata name, string calldata delim) external view returns (int256[] memory value);
- function envAddress(string calldata name, string calldata delim) external view returns (address[] memory value);
- function envBytes32(string calldata name, string calldata delim) external view returns (bytes32[] memory value);
- function envString(string calldata name, string calldata delim) external view returns (string[] memory value);
- function envBytes(string calldata name, string calldata delim) external view returns (bytes[] memory value);
-
- // Read environment variables with default value
- function envOr(string calldata name, bool defaultValue) external returns (bool value);
- function envOr(string calldata name, uint256 defaultValue) external returns (uint256 value);
- function envOr(string calldata name, int256 defaultValue) external returns (int256 value);
- function envOr(string calldata name, address defaultValue) external returns (address value);
- function envOr(string calldata name, bytes32 defaultValue) external returns (bytes32 value);
- function envOr(string calldata name, string calldata defaultValue) external returns (string memory value);
- function envOr(string calldata name, bytes calldata defaultValue) external returns (bytes memory value);
-
- // Read environment variables as arrays with default value
- function envOr(string calldata name, string calldata delim, bool[] calldata defaultValue)
- external
- returns (bool[] memory value);
- function envOr(string calldata name, string calldata delim, uint256[] calldata defaultValue)
- external
- returns (uint256[] memory value);
- function envOr(string calldata name, string calldata delim, int256[] calldata defaultValue)
- external
- returns (int256[] memory value);
- function envOr(string calldata name, string calldata delim, address[] calldata defaultValue)
- external
- returns (address[] memory value);
- function envOr(string calldata name, string calldata delim, bytes32[] calldata defaultValue)
- external
- returns (bytes32[] memory value);
- function envOr(string calldata name, string calldata delim, string[] calldata defaultValue)
- external
- returns (string[] memory value);
- function envOr(string calldata name, string calldata delim, bytes[] calldata defaultValue)
- external
- returns (bytes[] memory value);
-
- // ======== User Management ========
-
- // Derives a private key from the name, labels the account with that name, and returns the wallet
- function createWallet(string calldata walletLabel) external returns (Wallet memory wallet);
-
- // Generates a wallet from the private key and returns the wallet
- function createWallet(uint256 privateKey) external returns (Wallet memory wallet);
-
- // Generates a wallet from the private key, labels the account with that name, and returns the wallet
- function createWallet(uint256 privateKey, string calldata walletLabel) external returns (Wallet memory wallet);
-
- // Gets the label for the specified address
- function getLabel(address account) external returns (string memory currentLabel);
-
- // Get nonce for a Wallet.
- // See `getNonce(address account)` for an alternative way to get a nonce.
- function getNonce(Wallet calldata wallet) external returns (uint64 nonce);
-
- // Labels an address in call traces
- function label(address account, string calldata newLabel) external;
-
- // Signs data, (Wallet, digest) => (v, r, s)
- function sign(Wallet calldata wallet, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s);
-
- // ======== Scripts ========
-
- // -------- Broadcasting Transactions --------
-
- // Using the address that calls the test contract, has the next call (at this call depth only) create a transaction that can later be signed and sent onchain
- function broadcast() external;
-
- // Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain
- function broadcast(address signer) external;
-
- // Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain
- function broadcast(uint256 privateKey) external;
-
- // Using the address that calls the test contract, has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain
- function startBroadcast() external;
-
- // Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain
- function startBroadcast(address signer) external;
-
- // Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain
- function startBroadcast(uint256 privateKey) external;
-
- // Stops collecting onchain transactions
- function stopBroadcast() external;
-
- // -------- Key Management --------
-
- // Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path m/44'/60'/0'/0/{index}
- function deriveKey(string calldata mnemonic, uint32 index) external pure returns (uint256 privateKey);
-
- // Derive a private key from a provided mnenomic string (or mnenomic file path) at {derivationPath}{index}
- function deriveKey(string calldata mnemonic, string calldata derivationPath, uint32 index)
- external
- pure
- returns (uint256 privateKey);
-
- // Adds a private key to the local forge wallet and returns the address
- function rememberKey(uint256 privateKey) external returns (address keyAddr);
-
- // ======== Utilities ========
-
- // Convert values to a string
- function toString(address value) external pure returns (string memory stringifiedValue);
- function toString(bytes calldata value) external pure returns (string memory stringifiedValue);
- function toString(bytes32 value) external pure returns (string memory stringifiedValue);
- function toString(bool value) external pure returns (string memory stringifiedValue);
- function toString(uint256 value) external pure returns (string memory stringifiedValue);
- function toString(int256 value) external pure returns (string memory stringifiedValue);
-
- // Convert values from a string
- function parseBytes(string calldata stringifiedValue) external pure returns (bytes memory parsedValue);
- function parseAddress(string calldata stringifiedValue) external pure returns (address parsedValue);
- function parseUint(string calldata stringifiedValue) external pure returns (uint256 parsedValue);
- function parseInt(string calldata stringifiedValue) external pure returns (int256 parsedValue);
- function parseBytes32(string calldata stringifiedValue) external pure returns (bytes32 parsedValue);
- function parseBool(string calldata stringifiedValue) external pure returns (bool parsedValue);
-
- // Gets the creation bytecode from an artifact file. Takes in the relative path to the json file
- function getCode(string calldata artifactPath) external view returns (bytes memory creationBytecode);
-
- // Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file
- function getDeployedCode(string calldata artifactPath) external view returns (bytes memory runtimeBytecode);
-
- // ======== JSON Parsing and Manipulation ========
-
- // -------- Reading --------
-
- // NOTE: Please read https://book.getfoundry.sh/cheatcodes/parse-json to understand the
- // limitations and caveats of the JSON parsing cheats.
-
- // Checks if a key exists in a JSON object.
- function keyExists(string calldata json, string calldata key) external view returns (bool);
-
- // Given a string of JSON, return it as ABI-encoded
- function parseJson(string calldata json, string calldata key) external pure returns (bytes memory abiEncodedData);
- function parseJson(string calldata json) external pure returns (bytes memory abiEncodedData);
-
- // The following parseJson cheatcodes will do type coercion, for the type that they indicate.
- // For example, parseJsonUint will coerce all values to a uint256. That includes stringified numbers '12'
- // and hex numbers '0xEF'.
- // Type coercion works ONLY for discrete values or arrays. That means that the key must return a value or array, not
- // a JSON object.
- function parseJsonUint(string calldata json, string calldata key) external pure returns (uint256);
- function parseJsonUintArray(string calldata json, string calldata key) external pure returns (uint256[] memory);
- function parseJsonInt(string calldata json, string calldata key) external pure returns (int256);
- function parseJsonIntArray(string calldata json, string calldata key) external pure returns (int256[] memory);
- function parseJsonBool(string calldata json, string calldata key) external pure returns (bool);
- function parseJsonBoolArray(string calldata json, string calldata key) external pure returns (bool[] memory);
- function parseJsonAddress(string calldata json, string calldata key) external pure returns (address);
- function parseJsonAddressArray(string calldata json, string calldata key)
- external
- pure
- returns (address[] memory);
- function parseJsonString(string calldata json, string calldata key) external pure returns (string memory);
- function parseJsonStringArray(string calldata json, string calldata key) external pure returns (string[] memory);
- function parseJsonBytes(string calldata json, string calldata key) external pure returns (bytes memory);
- function parseJsonBytesArray(string calldata json, string calldata key) external pure returns (bytes[] memory);
- function parseJsonBytes32(string calldata json, string calldata key) external pure returns (bytes32);
- function parseJsonBytes32Array(string calldata json, string calldata key)
- external
- pure
- returns (bytes32[] memory);
-
- // Returns array of keys for a JSON object
- function parseJsonKeys(string calldata json, string calldata key) external pure returns (string[] memory keys);
-
- // -------- Writing --------
-
- // NOTE: Please read https://book.getfoundry.sh/cheatcodes/serialize-json to understand how
- // to use the serialization cheats.
-
- // Serialize a key and value to a JSON object stored in-memory that can be later written to a file
- // It returns the stringified version of the specific JSON file up to that moment.
- function serializeJson(string calldata objectKey, string calldata value) external returns (string memory json);
- function serializeBool(string calldata objectKey, string calldata valueKey, bool value)
- external
- returns (string memory json);
- function serializeUint(string calldata objectKey, string calldata valueKey, uint256 value)
- external
- returns (string memory json);
- function serializeInt(string calldata objectKey, string calldata valueKey, int256 value)
- external
- returns (string memory json);
- function serializeAddress(string calldata objectKey, string calldata valueKey, address value)
- external
- returns (string memory json);
- function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32 value)
- external
- returns (string memory json);
- function serializeString(string calldata objectKey, string calldata valueKey, string calldata value)
- external
- returns (string memory json);
- function serializeBytes(string calldata objectKey, string calldata valueKey, bytes calldata value)
- external
- returns (string memory json);
-
- function serializeBool(string calldata objectKey, string calldata valueKey, bool[] calldata values)
- external
- returns (string memory json);
- function serializeUint(string calldata objectKey, string calldata valueKey, uint256[] calldata values)
- external
- returns (string memory json);
- function serializeInt(string calldata objectKey, string calldata valueKey, int256[] calldata values)
- external
- returns (string memory json);
- function serializeAddress(string calldata objectKey, string calldata valueKey, address[] calldata values)
- external
- returns (string memory json);
- function serializeBytes32(string calldata objectKey, string calldata valueKey, bytes32[] calldata values)
- external
- returns (string memory json);
- function serializeString(string calldata objectKey, string calldata valueKey, string[] calldata values)
- external
- returns (string memory json);
- function serializeBytes(string calldata objectKey, string calldata valueKey, bytes[] calldata values)
- external
- returns (string memory json);
-
- // NOTE: Please read https://book.getfoundry.sh/cheatcodes/write-json to understand how
- // to use the JSON writing cheats.
-
- // Write a serialized JSON object to a file. If the file exists, it will be overwritten.
- function writeJson(string calldata json, string calldata path) external;
-
- // Write a serialized JSON object to an **existing** JSON file, replacing a value with key =
- // This is useful to replace a specific value of a JSON file, without having to parse the entire thing
- function writeJson(string calldata json, string calldata path, string calldata valueKey) external;
-}
-
-// The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used
-// in tests, but it is not recommended to use these cheats in scripts.
-interface Vm is VmSafe {
- // ======== EVM ========
-
- // -------- Block and Transaction Properties --------
-
- // Sets block.chainid
- function chainId(uint256 newChainId) external;
-
- // Sets block.coinbase
- function coinbase(address newCoinbase) external;
-
- // Sets block.difficulty
- // Not available on EVM versions from Paris onwards. Use `prevrandao` instead.
- // If used on unsupported EVM versions it will revert.
- function difficulty(uint256 newDifficulty) external;
-
- // Sets block.basefee
- function fee(uint256 newBasefee) external;
-
- // Sets block.prevrandao
- // Not available on EVM versions before Paris. Use `difficulty` instead.
- // If used on unsupported EVM versions it will revert.
- function prevrandao(bytes32 newPrevrandao) external;
-
- // Sets block.height
- function roll(uint256 newHeight) external;
-
- // Sets tx.gasprice
- function txGasPrice(uint256 newGasPrice) external;
-
- // Sets block.timestamp
- function warp(uint256 newTimestamp) external;
-
- // -------- Account State --------
-
- // Sets an address' balance
- function deal(address account, uint256 newBalance) external;
-
- // Sets an address' code
- function etch(address target, bytes calldata newRuntimeBytecode) external;
-
- // Resets the nonce of an account to 0 for EOAs and 1 for contract accounts
- function resetNonce(address account) external;
-
- // Sets the nonce of an account; must be higher than the current nonce of the account
- function setNonce(address account, uint64 newNonce) external;
-
- // Sets the nonce of an account to an arbitrary value
- function setNonceUnsafe(address account, uint64 newNonce) external;
-
- // Stores a value to an address' storage slot.
- function store(address target, bytes32 slot, bytes32 value) external;
-
- // -------- Call Manipulation --------
- // --- Mocks ---
-
- // Clears all mocked calls
- function clearMockedCalls() external;
-
- // Mocks a call to an address, returning specified data.
- // Calldata can either be strict or a partial match, e.g. if you only
- // pass a Solidity selector to the expected calldata, then the entire Solidity
- // function will be mocked.
- function mockCall(address callee, bytes calldata data, bytes calldata returnData) external;
-
- // Mocks a call to an address with a specific msg.value, returning specified data.
- // Calldata match takes precedence over msg.value in case of ambiguity.
- function mockCall(address callee, uint256 msgValue, bytes calldata data, bytes calldata returnData) external;
-
- // Reverts a call to an address with specified revert data.
- function mockCallRevert(address callee, bytes calldata data, bytes calldata revertData) external;
-
- // Reverts a call to an address with a specific msg.value, with specified revert data.
- function mockCallRevert(address callee, uint256 msgValue, bytes calldata data, bytes calldata revertData)
- external;
-
- // --- Impersonation (pranks) ---
-
- // Sets the *next* call's msg.sender to be the input address
- function prank(address msgSender) external;
-
- // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called
- function startPrank(address msgSender) external;
-
- // Sets the *next* call's msg.sender to be the input address, and the tx.origin to be the second input
- function prank(address msgSender, address txOrigin) external;
-
- // Sets all subsequent calls' msg.sender to be the input address until `stopPrank` is called, and the tx.origin to be the second input
- function startPrank(address msgSender, address txOrigin) external;
-
- // Resets subsequent calls' msg.sender to be `address(this)`
- function stopPrank() external;
-
- // Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification
- function readCallers() external returns (CallerMode callerMode, address msgSender, address txOrigin);
-
- // -------- State Snapshots --------
-
- // Snapshot the current state of the evm.
- // Returns the id of the snapshot that was created.
- // To revert a snapshot use `revertTo`
- function snapshot() external returns (uint256 snapshotId);
-
- // Revert the state of the EVM to a previous snapshot
- // Takes the snapshot id to revert to.
- // This deletes the snapshot and all snapshots taken after the given snapshot id.
- function revertTo(uint256 snapshotId) external returns (bool success);
-
- // -------- Forking --------
- // --- Creation and Selection ---
-
- // Returns the identifier of the currently active fork. Reverts if no fork is currently active.
- function activeFork() external view returns (uint256 forkId);
-
- // Creates a new fork with the given endpoint and block and returns the identifier of the fork
- function createFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId);
-
- // Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork
- function createFork(string calldata urlOrAlias) external returns (uint256 forkId);
-
- // Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction,
- // and returns the identifier of the fork
- function createFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId);
-
- // Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork
- function createSelectFork(string calldata urlOrAlias, uint256 blockNumber) external returns (uint256 forkId);
-
- // Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before
- // the transaction, returns the identifier of the fork
- function createSelectFork(string calldata urlOrAlias, bytes32 txHash) external returns (uint256 forkId);
-
- // Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork
- function createSelectFork(string calldata urlOrAlias) external returns (uint256 forkId);
-
- // Updates the currently active fork to given block number
- // This is similar to `roll` but for the currently active fork
- function rollFork(uint256 blockNumber) external;
-
- // Updates the currently active fork to given transaction
- // this will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block
- function rollFork(bytes32 txHash) external;
-
- // Updates the given fork to given block number
- function rollFork(uint256 forkId, uint256 blockNumber) external;
-
- // Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block
- function rollFork(uint256 forkId, bytes32 txHash) external;
-
- // Takes a fork identifier created by `createFork` and sets the corresponding forked state as active.
- function selectFork(uint256 forkId) external;
-
- // Fetches the given transaction from the active fork and executes it on the current state
- function transact(bytes32 txHash) external;
-
- // Fetches the given transaction from the given fork and executes it on the current state
- function transact(uint256 forkId, bytes32 txHash) external;
-
- // --- Behavior ---
-
- // In forking mode, explicitly grant the given address cheatcode access
- function allowCheatcodes(address account) external;
-
- // Marks that the account(s) should use persistent storage across fork swaps in a multifork setup
- // Meaning, changes made to the state of this account will be kept when switching forks
- function makePersistent(address account) external;
- function makePersistent(address account0, address account1) external;
- function makePersistent(address account0, address account1, address account2) external;
- function makePersistent(address[] calldata accounts) external;
-
- // Revokes persistent status from the address, previously added via `makePersistent`
- function revokePersistent(address account) external;
- function revokePersistent(address[] calldata accounts) external;
-
- // Returns true if the account is marked as persistent
- function isPersistent(address account) external view returns (bool persistent);
-
- // ======== Test Assertions and Utilities ========
-
- // Expects a call to an address with the specified calldata.
- // Calldata can either be a strict or a partial match
- function expectCall(address callee, bytes calldata data) external;
-
- // Expects given number of calls to an address with the specified calldata.
- function expectCall(address callee, bytes calldata data, uint64 count) external;
-
- // Expects a call to an address with the specified msg.value and calldata
- function expectCall(address callee, uint256 msgValue, bytes calldata data) external;
-
- // Expects given number of calls to an address with the specified msg.value and calldata
- function expectCall(address callee, uint256 msgValue, bytes calldata data, uint64 count) external;
-
- // Expect a call to an address with the specified msg.value, gas, and calldata.
- function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data) external;
-
- // Expects given number of calls to an address with the specified msg.value, gas, and calldata.
- function expectCall(address callee, uint256 msgValue, uint64 gas, bytes calldata data, uint64 count) external;
-
- // Expect a call to an address with the specified msg.value and calldata, and a *minimum* amount of gas.
- function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data) external;
-
- // Expect given number of calls to an address with the specified msg.value and calldata, and a *minimum* amount of gas.
- function expectCallMinGas(address callee, uint256 msgValue, uint64 minGas, bytes calldata data, uint64 count)
- external;
-
- // Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData).
- // Call this function, then emit an event, then call a function. Internally after the call, we check if
- // logs were emitted in the expected order with the expected topics and data (as specified by the booleans).
- function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData) external;
-
- // Same as the previous method, but also checks supplied address against emitting contract.
- function expectEmit(bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData, address emitter)
- external;
-
- // Prepare an expected log with all topic and data checks enabled.
- // Call this function, then emit an event, then call a function. Internally after the call, we check if
- // logs were emitted in the expected order with the expected topics and data.
- function expectEmit() external;
-
- // Same as the previous method, but also checks supplied address against emitting contract.
- function expectEmit(address emitter) external;
-
- // Expects an error on next call that exactly matches the revert data.
- function expectRevert(bytes calldata revertData) external;
-
- // Expects an error on next call that starts with the revert data.
- function expectRevert(bytes4 revertData) external;
-
- // Expects an error on next call with any revert data.
- function expectRevert() external;
-
- // Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the current subcontext. If any other
- // memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.
- function expectSafeMemory(uint64 min, uint64 max) external;
-
- // Only allows memory writes to offsets [0x00, 0x60) ∪ [min, max) in the next created subcontext.
- // If any other memory is written to, the test will fail. Can be called multiple times to add more ranges
- // to the set.
- function expectSafeMemoryCall(uint64 min, uint64 max) external;
-
- // Marks a test as skipped. Must be called at the top of the test.
- function skip(bool skipTest) external;
-}
diff --git a/lib/forge-std/src/console.sol b/lib/forge-std/src/console.sol
deleted file mode 100644
index ad57e53..0000000
--- a/lib/forge-std/src/console.sol
+++ /dev/null
@@ -1,1533 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.4.22 <0.9.0;
-
-library console {
- address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
-
- function _sendLogPayload(bytes memory payload) private view {
- uint256 payloadLength = payload.length;
- address consoleAddress = CONSOLE_ADDRESS;
- /// @solidity memory-safe-assembly
- assembly {
- let payloadStart := add(payload, 32)
- let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
- }
- }
-
- function log() internal view {
- _sendLogPayload(abi.encodeWithSignature("log()"));
- }
-
- function logInt(int p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(int)", p0));
- }
-
- function logUint(uint p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
- }
-
- function logString(string memory p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string)", p0));
- }
-
- function logBool(bool p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
- }
-
- function logAddress(address p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address)", p0));
- }
-
- function logBytes(bytes memory p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
- }
-
- function logBytes1(bytes1 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
- }
-
- function logBytes2(bytes2 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
- }
-
- function logBytes3(bytes3 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
- }
-
- function logBytes4(bytes4 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
- }
-
- function logBytes5(bytes5 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
- }
-
- function logBytes6(bytes6 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
- }
-
- function logBytes7(bytes7 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
- }
-
- function logBytes8(bytes8 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
- }
-
- function logBytes9(bytes9 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
- }
-
- function logBytes10(bytes10 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
- }
-
- function logBytes11(bytes11 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
- }
-
- function logBytes12(bytes12 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
- }
-
- function logBytes13(bytes13 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
- }
-
- function logBytes14(bytes14 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
- }
-
- function logBytes15(bytes15 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
- }
-
- function logBytes16(bytes16 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
- }
-
- function logBytes17(bytes17 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
- }
-
- function logBytes18(bytes18 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
- }
-
- function logBytes19(bytes19 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
- }
-
- function logBytes20(bytes20 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
- }
-
- function logBytes21(bytes21 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
- }
-
- function logBytes22(bytes22 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
- }
-
- function logBytes23(bytes23 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
- }
-
- function logBytes24(bytes24 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
- }
-
- function logBytes25(bytes25 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
- }
-
- function logBytes26(bytes26 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
- }
-
- function logBytes27(bytes27 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
- }
-
- function logBytes28(bytes28 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
- }
-
- function logBytes29(bytes29 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
- }
-
- function logBytes30(bytes30 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
- }
-
- function logBytes31(bytes31 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
- }
-
- function logBytes32(bytes32 p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
- }
-
- function log(uint p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
- }
-
- function log(string memory p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string)", p0));
- }
-
- function log(bool p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
- }
-
- function log(address p0) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address)", p0));
- }
-
- function log(uint p0, uint p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
- }
-
- function log(uint p0, string memory p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
- }
-
- function log(uint p0, bool p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
- }
-
- function log(uint p0, address p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
- }
-
- function log(string memory p0, uint p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
- }
-
- function log(string memory p0, string memory p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
- }
-
- function log(string memory p0, bool p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
- }
-
- function log(string memory p0, address p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
- }
-
- function log(bool p0, uint p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
- }
-
- function log(bool p0, string memory p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
- }
-
- function log(bool p0, bool p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
- }
-
- function log(bool p0, address p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
- }
-
- function log(address p0, uint p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
- }
-
- function log(address p0, string memory p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
- }
-
- function log(address p0, bool p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
- }
-
- function log(address p0, address p1) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
- }
-
- function log(uint p0, uint p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
- }
-
- function log(uint p0, uint p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
- }
-
- function log(uint p0, uint p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
- }
-
- function log(uint p0, uint p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
- }
-
- function log(uint p0, string memory p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
- }
-
- function log(uint p0, string memory p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
- }
-
- function log(uint p0, string memory p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
- }
-
- function log(uint p0, string memory p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
- }
-
- function log(uint p0, bool p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
- }
-
- function log(uint p0, bool p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
- }
-
- function log(uint p0, bool p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
- }
-
- function log(uint p0, bool p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
- }
-
- function log(uint p0, address p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
- }
-
- function log(uint p0, address p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
- }
-
- function log(uint p0, address p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
- }
-
- function log(uint p0, address p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
- }
-
- function log(string memory p0, uint p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
- }
-
- function log(string memory p0, uint p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
- }
-
- function log(string memory p0, uint p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, uint p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
- }
-
- function log(bool p0, uint p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
- }
-
- function log(bool p0, uint p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
- }
-
- function log(bool p0, uint p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
- }
-
- function log(bool p0, uint p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
- }
-
- function log(address p0, uint p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
- }
-
- function log(address p0, uint p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
- }
-
- function log(address p0, uint p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
- }
-
- function log(address p0, uint p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
- }
-
- function log(address p0, address p1, uint p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
- }
-
- function log(address p0, address p1, string memory p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
- }
-
- function log(address p0, address p1, bool p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
- }
-
- function log(address p0, address p1, address p2) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
- }
-
- function log(uint p0, uint p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, uint p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, string memory p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, bool p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint p0, address p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, uint p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, string memory p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, bool p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, address p3) internal view {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
- }
-
-}
\ No newline at end of file
diff --git a/lib/forge-std/src/console2.sol b/lib/forge-std/src/console2.sol
deleted file mode 100644
index c1e2cd7..0000000
--- a/lib/forge-std/src/console2.sol
+++ /dev/null
@@ -1,1558 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.4.22 <0.9.0;
-
-/// @dev The original console.sol uses `int` and `uint` for computing function selectors, but it should
-/// use `int256` and `uint256`. This modified version fixes that. This version is recommended
-/// over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in
-/// forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`.
-/// Reference: https://github.com/NomicFoundation/hardhat/issues/2178
-library console2 {
- address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
-
- function _castLogPayloadViewToPure(
- function(bytes memory) internal view fnIn
- ) internal pure returns (function(bytes memory) internal pure fnOut) {
- assembly {
- fnOut := fnIn
- }
- }
-
- function _sendLogPayload(bytes memory payload) internal pure {
- _castLogPayloadViewToPure(_sendLogPayloadView)(payload);
- }
-
- function _sendLogPayloadView(bytes memory payload) private view {
- uint256 payloadLength = payload.length;
- address consoleAddress = CONSOLE_ADDRESS;
- /// @solidity memory-safe-assembly
- assembly {
- let payloadStart := add(payload, 32)
- let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
- }
- }
-
- function log() internal pure {
- _sendLogPayload(abi.encodeWithSignature("log()"));
- }
-
- function logInt(int256 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
- }
-
- function logUint(uint256 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
- }
-
- function logString(string memory p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string)", p0));
- }
-
- function logBool(bool p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
- }
-
- function logAddress(address p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address)", p0));
- }
-
- function logBytes(bytes memory p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
- }
-
- function logBytes1(bytes1 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
- }
-
- function logBytes2(bytes2 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
- }
-
- function logBytes3(bytes3 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
- }
-
- function logBytes4(bytes4 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
- }
-
- function logBytes5(bytes5 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
- }
-
- function logBytes6(bytes6 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
- }
-
- function logBytes7(bytes7 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
- }
-
- function logBytes8(bytes8 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
- }
-
- function logBytes9(bytes9 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
- }
-
- function logBytes10(bytes10 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
- }
-
- function logBytes11(bytes11 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
- }
-
- function logBytes12(bytes12 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
- }
-
- function logBytes13(bytes13 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
- }
-
- function logBytes14(bytes14 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
- }
-
- function logBytes15(bytes15 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
- }
-
- function logBytes16(bytes16 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
- }
-
- function logBytes17(bytes17 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
- }
-
- function logBytes18(bytes18 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
- }
-
- function logBytes19(bytes19 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
- }
-
- function logBytes20(bytes20 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
- }
-
- function logBytes21(bytes21 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
- }
-
- function logBytes22(bytes22 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
- }
-
- function logBytes23(bytes23 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
- }
-
- function logBytes24(bytes24 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
- }
-
- function logBytes25(bytes25 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
- }
-
- function logBytes26(bytes26 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
- }
-
- function logBytes27(bytes27 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
- }
-
- function logBytes28(bytes28 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
- }
-
- function logBytes29(bytes29 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
- }
-
- function logBytes30(bytes30 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
- }
-
- function logBytes31(bytes31 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
- }
-
- function logBytes32(bytes32 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
- }
-
- function log(uint256 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
- }
-
- function log(int256 p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
- }
-
- function log(string memory p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string)", p0));
- }
-
- function log(bool p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
- }
-
- function log(address p0) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address)", p0));
- }
-
- function log(uint256 p0, uint256 p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1));
- }
-
- function log(uint256 p0, string memory p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1));
- }
-
- function log(uint256 p0, bool p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1));
- }
-
- function log(uint256 p0, address p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1));
- }
-
- function log(string memory p0, uint256 p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1));
- }
-
- function log(string memory p0, int256 p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,int256)", p0, p1));
- }
-
- function log(string memory p0, string memory p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
- }
-
- function log(string memory p0, bool p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
- }
-
- function log(string memory p0, address p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
- }
-
- function log(bool p0, uint256 p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1));
- }
-
- function log(bool p0, string memory p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
- }
-
- function log(bool p0, bool p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
- }
-
- function log(bool p0, address p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
- }
-
- function log(address p0, uint256 p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1));
- }
-
- function log(address p0, string memory p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
- }
-
- function log(address p0, bool p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
- }
-
- function log(address p0, address p1) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2));
- }
-
- function log(uint256 p0, uint256 p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2));
- }
-
- function log(uint256 p0, uint256 p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2));
- }
-
- function log(uint256 p0, uint256 p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2));
- }
-
- function log(uint256 p0, string memory p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2));
- }
-
- function log(uint256 p0, string memory p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2));
- }
-
- function log(uint256 p0, string memory p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2));
- }
-
- function log(uint256 p0, string memory p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2));
- }
-
- function log(uint256 p0, bool p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2));
- }
-
- function log(uint256 p0, bool p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2));
- }
-
- function log(uint256 p0, bool p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2));
- }
-
- function log(uint256 p0, bool p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2));
- }
-
- function log(uint256 p0, address p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2));
- }
-
- function log(uint256 p0, address p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2));
- }
-
- function log(uint256 p0, address p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2));
- }
-
- function log(uint256 p0, address p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2));
- }
-
- function log(string memory p0, uint256 p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2));
- }
-
- function log(string memory p0, uint256 p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2));
- }
-
- function log(string memory p0, uint256 p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, uint256 p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, string memory p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, bool p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
- }
-
- function log(string memory p0, address p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
- }
-
- function log(bool p0, uint256 p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2));
- }
-
- function log(bool p0, uint256 p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2));
- }
-
- function log(bool p0, uint256 p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2));
- }
-
- function log(bool p0, uint256 p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
- }
-
- function log(bool p0, string memory p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
- }
-
- function log(bool p0, bool p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
- }
-
- function log(bool p0, address p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
- }
-
- function log(address p0, uint256 p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2));
- }
-
- function log(address p0, uint256 p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2));
- }
-
- function log(address p0, uint256 p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2));
- }
-
- function log(address p0, uint256 p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
- }
-
- function log(address p0, string memory p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
- }
-
- function log(address p0, bool p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
- }
-
- function log(address p0, address p1, uint256 p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2));
- }
-
- function log(address p0, address p1, string memory p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
- }
-
- function log(address p0, address p1, bool p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
- }
-
- function log(address p0, address p1, address p2) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, uint256 p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, string memory p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, bool p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(uint256 p0, address p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, uint256 p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, string memory p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, bool p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(string memory p0, address p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, uint256 p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, string memory p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, bool p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(bool p0, address p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, uint256 p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, string memory p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, bool p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint256 p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint256 p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint256 p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, uint256 p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, string memory p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, bool p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, uint256 p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, string memory p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, bool p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
- }
-
- function log(address p0, address p1, address p2, address p3) internal pure {
- _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
- }
-
-}
\ No newline at end of file
diff --git a/lib/forge-std/src/interfaces/IERC1155.sol b/lib/forge-std/src/interfaces/IERC1155.sol
deleted file mode 100644
index f7dd2b4..0000000
--- a/lib/forge-std/src/interfaces/IERC1155.sol
+++ /dev/null
@@ -1,105 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2;
-
-import "./IERC165.sol";
-
-/// @title ERC-1155 Multi Token Standard
-/// @dev See https://eips.ethereum.org/EIPS/eip-1155
-/// Note: The ERC-165 identifier for this interface is 0xd9b67a26.
-interface IERC1155 is IERC165 {
- /// @dev
- /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
- /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender).
- /// - The `_from` argument MUST be the address of the holder whose balance is decreased.
- /// - The `_to` argument MUST be the address of the recipient whose balance is increased.
- /// - The `_id` argument MUST be the token type being transferred.
- /// - The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by.
- /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
- /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
- event TransferSingle(
- address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value
- );
-
- /// @dev
- /// - Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
- /// - The `_operator` argument MUST be the address of an account/contract that is approved to make the transfer (SHOULD be msg.sender).
- /// - The `_from` argument MUST be the address of the holder whose balance is decreased.
- /// - The `_to` argument MUST be the address of the recipient whose balance is increased.
- /// - The `_ids` argument MUST be the list of tokens being transferred.
- /// - The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by.
- /// - When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
- /// - When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
- event TransferBatch(
- address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values
- );
-
- /// @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absence of an event assumes disabled).
- event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
-
- /// @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986.
- /// The URI MUST point to a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema".
- event URI(string _value, uint256 indexed _id);
-
- /// @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call).
- /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
- /// - MUST revert if `_to` is the zero address.
- /// - MUST revert if balance of holder for token `_id` is lower than the `_value` sent.
- /// - MUST revert on any other error.
- /// - MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard).
- /// - After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
- /// @param _from Source address
- /// @param _to Target address
- /// @param _id ID of the token type
- /// @param _value Transfer amount
- /// @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to`
- function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data) external;
-
- /// @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call).
- /// @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
- /// - MUST revert if `_to` is the zero address.
- /// - MUST revert if length of `_ids` is not the same as length of `_values`.
- /// - MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient.
- /// - MUST revert on any other error.
- /// - MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard).
- /// - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
- /// - After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
- /// @param _from Source address
- /// @param _to Target address
- /// @param _ids IDs of each token type (order and length must match _values array)
- /// @param _values Transfer amounts per token type (order and length must match _ids array)
- /// @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to`
- function safeBatchTransferFrom(
- address _from,
- address _to,
- uint256[] calldata _ids,
- uint256[] calldata _values,
- bytes calldata _data
- ) external;
-
- /// @notice Get the balance of an account's tokens.
- /// @param _owner The address of the token holder
- /// @param _id ID of the token
- /// @return The _owner's balance of the token type requested
- function balanceOf(address _owner, uint256 _id) external view returns (uint256);
-
- /// @notice Get the balance of multiple account/token pairs
- /// @param _owners The addresses of the token holders
- /// @param _ids ID of the tokens
- /// @return The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair)
- function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids)
- external
- view
- returns (uint256[] memory);
-
- /// @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens.
- /// @dev MUST emit the ApprovalForAll event on success.
- /// @param _operator Address to add to the set of authorized operators
- /// @param _approved True if the operator is approved, false to revoke approval
- function setApprovalForAll(address _operator, bool _approved) external;
-
- /// @notice Queries the approval status of an operator for a given owner.
- /// @param _owner The owner of the tokens
- /// @param _operator Address of authorized operator
- /// @return True if the operator is approved, false if not
- function isApprovedForAll(address _owner, address _operator) external view returns (bool);
-}
diff --git a/lib/forge-std/src/interfaces/IERC165.sol b/lib/forge-std/src/interfaces/IERC165.sol
deleted file mode 100644
index 9af4bf8..0000000
--- a/lib/forge-std/src/interfaces/IERC165.sol
+++ /dev/null
@@ -1,12 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2;
-
-interface IERC165 {
- /// @notice Query if a contract implements an interface
- /// @param interfaceID The interface identifier, as specified in ERC-165
- /// @dev Interface identification is specified in ERC-165. This function
- /// uses less than 30,000 gas.
- /// @return `true` if the contract implements `interfaceID` and
- /// `interfaceID` is not 0xffffffff, `false` otherwise
- function supportsInterface(bytes4 interfaceID) external view returns (bool);
-}
diff --git a/lib/forge-std/src/interfaces/IERC20.sol b/lib/forge-std/src/interfaces/IERC20.sol
deleted file mode 100644
index ba40806..0000000
--- a/lib/forge-std/src/interfaces/IERC20.sol
+++ /dev/null
@@ -1,43 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2;
-
-/// @dev Interface of the ERC20 standard as defined in the EIP.
-/// @dev This includes the optional name, symbol, and decimals metadata.
-interface IERC20 {
- /// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`).
- event Transfer(address indexed from, address indexed to, uint256 value);
-
- /// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value`
- /// is the new allowance.
- event Approval(address indexed owner, address indexed spender, uint256 value);
-
- /// @notice Returns the amount of tokens in existence.
- function totalSupply() external view returns (uint256);
-
- /// @notice Returns the amount of tokens owned by `account`.
- function balanceOf(address account) external view returns (uint256);
-
- /// @notice Moves `amount` tokens from the caller's account to `to`.
- function transfer(address to, uint256 amount) external returns (bool);
-
- /// @notice Returns the remaining number of tokens that `spender` is allowed
- /// to spend on behalf of `owner`
- function allowance(address owner, address spender) external view returns (uint256);
-
- /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens.
- /// @dev Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
- function approve(address spender, uint256 amount) external returns (bool);
-
- /// @notice Moves `amount` tokens from `from` to `to` using the allowance mechanism.
- /// `amount` is then deducted from the caller's allowance.
- function transferFrom(address from, address to, uint256 amount) external returns (bool);
-
- /// @notice Returns the name of the token.
- function name() external view returns (string memory);
-
- /// @notice Returns the symbol of the token.
- function symbol() external view returns (string memory);
-
- /// @notice Returns the decimals places of the token.
- function decimals() external view returns (uint8);
-}
diff --git a/lib/forge-std/src/interfaces/IERC4626.sol b/lib/forge-std/src/interfaces/IERC4626.sol
deleted file mode 100644
index bfe3a11..0000000
--- a/lib/forge-std/src/interfaces/IERC4626.sol
+++ /dev/null
@@ -1,190 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2;
-
-import "./IERC20.sol";
-
-/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in
-/// https://eips.ethereum.org/EIPS/eip-4626
-interface IERC4626 is IERC20 {
- event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);
-
- event Withdraw(
- address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares
- );
-
- /// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.
- /// @dev
- /// - MUST be an ERC-20 token contract.
- /// - MUST NOT revert.
- function asset() external view returns (address assetTokenAddress);
-
- /// @notice Returns the total amount of the underlying asset that is “managed” by Vault.
- /// @dev
- /// - SHOULD include any compounding that occurs from yield.
- /// - MUST be inclusive of any fees that are charged against assets in the Vault.
- /// - MUST NOT revert.
- function totalAssets() external view returns (uint256 totalManagedAssets);
-
- /// @notice Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal
- /// scenario where all the conditions are met.
- /// @dev
- /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
- /// - MUST NOT show any variations depending on the caller.
- /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
- /// - MUST NOT revert.
- ///
- /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
- /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
- /// from.
- function convertToShares(uint256 assets) external view returns (uint256 shares);
-
- /// @notice Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal
- /// scenario where all the conditions are met.
- /// @dev
- /// - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
- /// - MUST NOT show any variations depending on the caller.
- /// - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
- /// - MUST NOT revert.
- ///
- /// NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
- /// “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
- /// from.
- function convertToAssets(uint256 shares) external view returns (uint256 assets);
-
- /// @notice Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,
- /// through a deposit call.
- /// @dev
- /// - MUST return a limited value if receiver is subject to some deposit limit.
- /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.
- /// - MUST NOT revert.
- function maxDeposit(address receiver) external view returns (uint256 maxAssets);
-
- /// @notice Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given
- /// current on-chain conditions.
- /// @dev
- /// - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit
- /// call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called
- /// in the same transaction.
- /// - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the
- /// deposit would be accepted, regardless if the user has enough tokens approved, etc.
- /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
- /// - MUST NOT revert.
- ///
- /// NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in
- /// share price or some other type of condition, meaning the depositor will lose assets by depositing.
- function previewDeposit(uint256 assets) external view returns (uint256 shares);
-
- /// @notice Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.
- /// @dev
- /// - MUST emit the Deposit event.
- /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
- /// deposit execution, and are accounted for during deposit.
- /// - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not
- /// approving enough underlying tokens to the Vault contract, etc).
- ///
- /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
- function deposit(uint256 assets, address receiver) external returns (uint256 shares);
-
- /// @notice Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.
- /// @dev
- /// - MUST return a limited value if receiver is subject to some mint limit.
- /// - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.
- /// - MUST NOT revert.
- function maxMint(address receiver) external view returns (uint256 maxShares);
-
- /// @notice Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given
- /// current on-chain conditions.
- /// @dev
- /// - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call
- /// in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the
- /// same transaction.
- /// - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint
- /// would be accepted, regardless if the user has enough tokens approved, etc.
- /// - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
- /// - MUST NOT revert.
- ///
- /// NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in
- /// share price or some other type of condition, meaning the depositor will lose assets by minting.
- function previewMint(uint256 shares) external view returns (uint256 assets);
-
- /// @notice Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.
- /// @dev
- /// - MUST emit the Deposit event.
- /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint
- /// execution, and are accounted for during mint.
- /// - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not
- /// approving enough underlying tokens to the Vault contract, etc).
- ///
- /// NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
- function mint(uint256 shares, address receiver) external returns (uint256 assets);
-
- /// @notice Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the
- /// Vault, through a withdraw call.
- /// @dev
- /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
- /// - MUST NOT revert.
- function maxWithdraw(address owner) external view returns (uint256 maxAssets);
-
- /// @notice Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,
- /// given current on-chain conditions.
- /// @dev
- /// - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw
- /// call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if
- /// called
- /// in the same transaction.
- /// - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though
- /// the withdrawal would be accepted, regardless if the user has enough shares, etc.
- /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
- /// - MUST NOT revert.
- ///
- /// NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in
- /// share price or some other type of condition, meaning the depositor will lose assets by depositing.
- function previewWithdraw(uint256 assets) external view returns (uint256 shares);
-
- /// @notice Burns shares from owner and sends exactly assets of underlying tokens to receiver.
- /// @dev
- /// - MUST emit the Withdraw event.
- /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
- /// withdraw execution, and are accounted for during withdraw.
- /// - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner
- /// not having enough shares, etc).
- ///
- /// Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
- /// Those methods should be performed separately.
- function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);
-
- /// @notice Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,
- /// through a redeem call.
- /// @dev
- /// - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
- /// - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.
- /// - MUST NOT revert.
- function maxRedeem(address owner) external view returns (uint256 maxShares);
-
- /// @notice Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,
- /// given current on-chain conditions.
- /// @dev
- /// - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call
- /// in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the
- /// same transaction.
- /// - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the
- /// redemption would be accepted, regardless if the user has enough shares, etc.
- /// - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
- /// - MUST NOT revert.
- ///
- /// NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in
- /// share price or some other type of condition, meaning the depositor will lose assets by redeeming.
- function previewRedeem(uint256 shares) external view returns (uint256 assets);
-
- /// @notice Burns exactly shares from owner and sends assets of underlying tokens to receiver.
- /// @dev
- /// - MUST emit the Withdraw event.
- /// - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
- /// redeem execution, and are accounted for during redeem.
- /// - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner
- /// not having enough shares, etc).
- ///
- /// NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
- /// Those methods should be performed separately.
- function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);
-}
diff --git a/lib/forge-std/src/interfaces/IERC721.sol b/lib/forge-std/src/interfaces/IERC721.sol
deleted file mode 100644
index 0a16f45..0000000
--- a/lib/forge-std/src/interfaces/IERC721.sol
+++ /dev/null
@@ -1,164 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2;
-
-import "./IERC165.sol";
-
-/// @title ERC-721 Non-Fungible Token Standard
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// Note: the ERC-165 identifier for this interface is 0x80ac58cd.
-interface IERC721 is IERC165 {
- /// @dev This emits when ownership of any NFT changes by any mechanism.
- /// This event emits when NFTs are created (`from` == 0) and destroyed
- /// (`to` == 0). Exception: during contract creation, any number of NFTs
- /// may be created and assigned without emitting Transfer. At the time of
- /// any transfer, the approved address for that NFT (if any) is reset to none.
- event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
-
- /// @dev This emits when the approved address for an NFT is changed or
- /// reaffirmed. The zero address indicates there is no approved address.
- /// When a Transfer event emits, this also indicates that the approved
- /// address for that NFT (if any) is reset to none.
- event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
-
- /// @dev This emits when an operator is enabled or disabled for an owner.
- /// The operator can manage all NFTs of the owner.
- event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
-
- /// @notice Count all NFTs assigned to an owner
- /// @dev NFTs assigned to the zero address are considered invalid, and this
- /// function throws for queries about the zero address.
- /// @param _owner An address for whom to query the balance
- /// @return The number of NFTs owned by `_owner`, possibly zero
- function balanceOf(address _owner) external view returns (uint256);
-
- /// @notice Find the owner of an NFT
- /// @dev NFTs assigned to zero address are considered invalid, and queries
- /// about them do throw.
- /// @param _tokenId The identifier for an NFT
- /// @return The address of the owner of the NFT
- function ownerOf(uint256 _tokenId) external view returns (address);
-
- /// @notice Transfers the ownership of an NFT from one address to another address
- /// @dev Throws unless `msg.sender` is the current owner, an authorized
- /// operator, or the approved address for this NFT. Throws if `_from` is
- /// not the current owner. Throws if `_to` is the zero address. Throws if
- /// `_tokenId` is not a valid NFT. When transfer is complete, this function
- /// checks if `_to` is a smart contract (code size > 0). If so, it calls
- /// `onERC721Received` on `_to` and throws if the return value is not
- /// `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
- /// @param _from The current owner of the NFT
- /// @param _to The new owner
- /// @param _tokenId The NFT to transfer
- /// @param data Additional data with no specified format, sent in call to `_to`
- function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata data) external payable;
-
- /// @notice Transfers the ownership of an NFT from one address to another address
- /// @dev This works identically to the other function with an extra data parameter,
- /// except this function just sets data to "".
- /// @param _from The current owner of the NFT
- /// @param _to The new owner
- /// @param _tokenId The NFT to transfer
- function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
-
- /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
- /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
- /// THEY MAY BE PERMANENTLY LOST
- /// @dev Throws unless `msg.sender` is the current owner, an authorized
- /// operator, or the approved address for this NFT. Throws if `_from` is
- /// not the current owner. Throws if `_to` is the zero address. Throws if
- /// `_tokenId` is not a valid NFT.
- /// @param _from The current owner of the NFT
- /// @param _to The new owner
- /// @param _tokenId The NFT to transfer
- function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
-
- /// @notice Change or reaffirm the approved address for an NFT
- /// @dev The zero address indicates there is no approved address.
- /// Throws unless `msg.sender` is the current NFT owner, or an authorized
- /// operator of the current owner.
- /// @param _approved The new approved NFT controller
- /// @param _tokenId The NFT to approve
- function approve(address _approved, uint256 _tokenId) external payable;
-
- /// @notice Enable or disable approval for a third party ("operator") to manage
- /// all of `msg.sender`'s assets
- /// @dev Emits the ApprovalForAll event. The contract MUST allow
- /// multiple operators per owner.
- /// @param _operator Address to add to the set of authorized operators
- /// @param _approved True if the operator is approved, false to revoke approval
- function setApprovalForAll(address _operator, bool _approved) external;
-
- /// @notice Get the approved address for a single NFT
- /// @dev Throws if `_tokenId` is not a valid NFT.
- /// @param _tokenId The NFT to find the approved address for
- /// @return The approved address for this NFT, or the zero address if there is none
- function getApproved(uint256 _tokenId) external view returns (address);
-
- /// @notice Query if an address is an authorized operator for another address
- /// @param _owner The address that owns the NFTs
- /// @param _operator The address that acts on behalf of the owner
- /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
- function isApprovedForAll(address _owner, address _operator) external view returns (bool);
-}
-
-/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02.
-interface IERC721TokenReceiver {
- /// @notice Handle the receipt of an NFT
- /// @dev The ERC721 smart contract calls this function on the recipient
- /// after a `transfer`. This function MAY throw to revert and reject the
- /// transfer. Return of other than the magic value MUST result in the
- /// transaction being reverted.
- /// Note: the contract address is always the message sender.
- /// @param _operator The address which called `safeTransferFrom` function
- /// @param _from The address which previously owned the token
- /// @param _tokenId The NFT identifier which is being transferred
- /// @param _data Additional data with no specified format
- /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
- /// unless throwing
- function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data)
- external
- returns (bytes4);
-}
-
-/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// Note: the ERC-165 identifier for this interface is 0x5b5e139f.
-interface IERC721Metadata is IERC721 {
- /// @notice A descriptive name for a collection of NFTs in this contract
- function name() external view returns (string memory _name);
-
- /// @notice An abbreviated name for NFTs in this contract
- function symbol() external view returns (string memory _symbol);
-
- /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
- /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
- /// 3986. The URI may point to a JSON file that conforms to the "ERC721
- /// Metadata JSON Schema".
- function tokenURI(uint256 _tokenId) external view returns (string memory);
-}
-
-/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// Note: the ERC-165 identifier for this interface is 0x780e9d63.
-interface IERC721Enumerable is IERC721 {
- /// @notice Count NFTs tracked by this contract
- /// @return A count of valid NFTs tracked by this contract, where each one of
- /// them has an assigned and queryable owner not equal to the zero address
- function totalSupply() external view returns (uint256);
-
- /// @notice Enumerate valid NFTs
- /// @dev Throws if `_index` >= `totalSupply()`.
- /// @param _index A counter less than `totalSupply()`
- /// @return The token identifier for the `_index`th NFT,
- /// (sort order not specified)
- function tokenByIndex(uint256 _index) external view returns (uint256);
-
- /// @notice Enumerate NFTs assigned to an owner
- /// @dev Throws if `_index` >= `balanceOf(_owner)` or if
- /// `_owner` is the zero address, representing invalid NFTs.
- /// @param _owner An address where we are interested in NFTs owned by them
- /// @param _index A counter less than `balanceOf(_owner)`
- /// @return The token identifier for the `_index`th NFT assigned to `_owner`,
- /// (sort order not specified)
- function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);
-}
diff --git a/lib/forge-std/src/interfaces/IMulticall3.sol b/lib/forge-std/src/interfaces/IMulticall3.sol
deleted file mode 100644
index 0d031b7..0000000
--- a/lib/forge-std/src/interfaces/IMulticall3.sol
+++ /dev/null
@@ -1,73 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-interface IMulticall3 {
- struct Call {
- address target;
- bytes callData;
- }
-
- struct Call3 {
- address target;
- bool allowFailure;
- bytes callData;
- }
-
- struct Call3Value {
- address target;
- bool allowFailure;
- uint256 value;
- bytes callData;
- }
-
- struct Result {
- bool success;
- bytes returnData;
- }
-
- function aggregate(Call[] calldata calls)
- external
- payable
- returns (uint256 blockNumber, bytes[] memory returnData);
-
- function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData);
-
- function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData);
-
- function blockAndAggregate(Call[] calldata calls)
- external
- payable
- returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
-
- function getBasefee() external view returns (uint256 basefee);
-
- function getBlockHash(uint256 blockNumber) external view returns (bytes32 blockHash);
-
- function getBlockNumber() external view returns (uint256 blockNumber);
-
- function getChainId() external view returns (uint256 chainid);
-
- function getCurrentBlockCoinbase() external view returns (address coinbase);
-
- function getCurrentBlockDifficulty() external view returns (uint256 difficulty);
-
- function getCurrentBlockGasLimit() external view returns (uint256 gaslimit);
-
- function getCurrentBlockTimestamp() external view returns (uint256 timestamp);
-
- function getEthBalance(address addr) external view returns (uint256 balance);
-
- function getLastBlockHash() external view returns (bytes32 blockHash);
-
- function tryAggregate(bool requireSuccess, Call[] calldata calls)
- external
- payable
- returns (Result[] memory returnData);
-
- function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls)
- external
- payable
- returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData);
-}
diff --git a/lib/forge-std/src/safeconsole.sol b/lib/forge-std/src/safeconsole.sol
deleted file mode 100644
index 5714d09..0000000
--- a/lib/forge-std/src/safeconsole.sol
+++ /dev/null
@@ -1,13248 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-/// @author philogy
-/// @dev Code generated automatically by script.
-library safeconsole {
- uint256 constant CONSOLE_ADDR = 0x000000000000000000000000000000000000000000636F6e736F6c652e6c6f67;
-
- // Credit to [0age](https://twitter.com/z0age/status/1654922202930888704) and [0xdapper](https://github.com/foundry-rs/forge-std/pull/374)
- // for the view-to-pure log trick.
- function _sendLogPayload(uint256 offset, uint256 size) private pure {
- function(uint256, uint256) internal view fnIn = _sendLogPayloadView;
- function(uint256, uint256) internal pure pureSendLogPayload;
- assembly {
- pureSendLogPayload := fnIn
- }
- pureSendLogPayload(offset, size);
- }
-
- function _sendLogPayloadView(uint256 offset, uint256 size) private view {
- assembly {
- pop(staticcall(gas(), CONSOLE_ADDR, offset, size, 0x0, 0x0))
- }
- }
-
- function _memcopy(uint256 fromOffset, uint256 toOffset, uint256 length) private pure {
- function(uint256, uint256, uint256) internal view fnIn = _memcopyView;
- function(uint256, uint256, uint256) internal pure pureMemcopy;
- assembly {
- pureMemcopy := fnIn
- }
- pureMemcopy(fromOffset, toOffset, length);
- }
-
- function _memcopyView(uint256 fromOffset, uint256 toOffset, uint256 length) private view {
- assembly {
- pop(staticcall(gas(), 0x4, fromOffset, length, toOffset, length))
- }
- }
-
- function logMemory(uint256 offset, uint256 length) internal pure {
- if (offset >= 0x60) {
- // Sufficient memory before slice to prepare call header.
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(sub(offset, 0x60))
- m1 := mload(sub(offset, 0x40))
- m2 := mload(sub(offset, 0x20))
- // Selector of `logBytes(bytes)`.
- mstore(sub(offset, 0x60), 0xe17bf956)
- mstore(sub(offset, 0x40), 0x20)
- mstore(sub(offset, 0x20), length)
- }
- _sendLogPayload(offset - 0x44, length + 0x44);
- assembly {
- mstore(sub(offset, 0x60), m0)
- mstore(sub(offset, 0x40), m1)
- mstore(sub(offset, 0x20), m2)
- }
- } else {
- // Insufficient space, so copy slice forward, add header and reverse.
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- uint256 endOffset = offset + length;
- assembly {
- m0 := mload(add(endOffset, 0x00))
- m1 := mload(add(endOffset, 0x20))
- m2 := mload(add(endOffset, 0x40))
- }
- _memcopy(offset, offset + 0x60, length);
- assembly {
- // Selector of `logBytes(bytes)`.
- mstore(add(offset, 0x00), 0xe17bf956)
- mstore(add(offset, 0x20), 0x20)
- mstore(add(offset, 0x40), length)
- }
- _sendLogPayload(offset + 0x1c, length + 0x44);
- _memcopy(offset + 0x60, offset, length);
- assembly {
- mstore(add(endOffset, 0x00), m0)
- mstore(add(endOffset, 0x20), m1)
- mstore(add(endOffset, 0x40), m2)
- }
- }
- }
-
- function log(address p0) internal pure {
- bytes32 m0;
- bytes32 m1;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- // Selector of `log(address)`.
- mstore(0x00, 0x2c2ecbc2)
- mstore(0x20, p0)
- }
- _sendLogPayload(0x1c, 0x24);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- }
- }
-
- function log(bool p0) internal pure {
- bytes32 m0;
- bytes32 m1;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- // Selector of `log(bool)`.
- mstore(0x00, 0x32458eed)
- mstore(0x20, p0)
- }
- _sendLogPayload(0x1c, 0x24);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- }
- }
-
- function log(uint256 p0) internal pure {
- bytes32 m0;
- bytes32 m1;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- // Selector of `log(uint256)`.
- mstore(0x00, 0xf82c50f1)
- mstore(0x20, p0)
- }
- _sendLogPayload(0x1c, 0x24);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- }
- }
-
- function log(bytes32 p0) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(string)`.
- mstore(0x00, 0x41304fac)
- mstore(0x20, 0x20)
- writeString(0x40, p0)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, address p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(address,address)`.
- mstore(0x00, 0xdaf0d4aa)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(address p0, bool p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(address,bool)`.
- mstore(0x00, 0x75b605d3)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(address p0, uint256 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(address,uint256)`.
- mstore(0x00, 0x8309e8a8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(address p0, bytes32 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,string)`.
- mstore(0x00, 0x759f86bb)
- mstore(0x20, p0)
- mstore(0x40, 0x40)
- writeString(0x60, p1)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(bool,address)`.
- mstore(0x00, 0x853c4849)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(bool p0, bool p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(bool,bool)`.
- mstore(0x00, 0x2a110e83)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(bool p0, uint256 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(bool,uint256)`.
- mstore(0x00, 0x399174d3)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(bool p0, bytes32 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,string)`.
- mstore(0x00, 0x8feac525)
- mstore(0x20, p0)
- mstore(0x40, 0x40)
- writeString(0x60, p1)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(uint256,address)`.
- mstore(0x00, 0x69276c86)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(uint256 p0, bool p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(uint256,bool)`.
- mstore(0x00, 0x1c9d7eb3)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(uint256 p0, uint256 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- // Selector of `log(uint256,uint256)`.
- mstore(0x00, 0xf666715a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- }
- _sendLogPayload(0x1c, 0x44);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- }
- }
-
- function log(uint256 p0, bytes32 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,string)`.
- mstore(0x00, 0x643fd0df)
- mstore(0x20, p0)
- mstore(0x40, 0x40)
- writeString(0x60, p1)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bytes32 p0, address p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(string,address)`.
- mstore(0x00, 0x319af333)
- mstore(0x20, 0x40)
- mstore(0x40, p1)
- writeString(0x60, p0)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bytes32 p0, bool p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(string,bool)`.
- mstore(0x00, 0xc3b55635)
- mstore(0x20, 0x40)
- mstore(0x40, p1)
- writeString(0x60, p0)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bytes32 p0, uint256 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(string,uint256)`.
- mstore(0x00, 0xb60e72cc)
- mstore(0x20, 0x40)
- mstore(0x40, p1)
- writeString(0x60, p0)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bytes32 p0, bytes32 p1) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,string)`.
- mstore(0x00, 0x4b5c4277)
- mstore(0x20, 0x40)
- mstore(0x40, 0x80)
- writeString(0x60, p0)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,address,address)`.
- mstore(0x00, 0x018c84c2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, address p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,address,bool)`.
- mstore(0x00, 0xf2a66286)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, address p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,address,uint256)`.
- mstore(0x00, 0x17fe6185)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, address p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(address,address,string)`.
- mstore(0x00, 0x007150be)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(address p0, bool p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,bool,address)`.
- mstore(0x00, 0xf11699ed)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, bool p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,bool,bool)`.
- mstore(0x00, 0xeb830c92)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, bool p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,bool,uint256)`.
- mstore(0x00, 0x9c4f99fb)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, bool p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(address,bool,string)`.
- mstore(0x00, 0x212255cc)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(address p0, uint256 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,uint256,address)`.
- mstore(0x00, 0x7bc0d848)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, uint256 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,uint256,bool)`.
- mstore(0x00, 0x678209a8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, uint256 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(address,uint256,uint256)`.
- mstore(0x00, 0xb69bcaf6)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(address p0, uint256 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(address,uint256,string)`.
- mstore(0x00, 0xa1f2e8aa)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(address p0, bytes32 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(address,string,address)`.
- mstore(0x00, 0xf08744e8)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(address p0, bytes32 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(address,string,bool)`.
- mstore(0x00, 0xcf020fb1)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(address p0, bytes32 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(address,string,uint256)`.
- mstore(0x00, 0x67dd6ff1)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(address p0, bytes32 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(address,string,string)`.
- mstore(0x00, 0xfb772265)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, 0xa0)
- writeString(0x80, p1)
- writeString(0xc0, p2)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bool p0, address p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,address,address)`.
- mstore(0x00, 0xd2763667)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, address p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,address,bool)`.
- mstore(0x00, 0x18c9c746)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, address p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,address,uint256)`.
- mstore(0x00, 0x5f7b9afb)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, address p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(bool,address,string)`.
- mstore(0x00, 0xde9a9270)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bool p0, bool p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,bool,address)`.
- mstore(0x00, 0x1078f68d)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, bool p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,bool,bool)`.
- mstore(0x00, 0x50709698)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, bool p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,bool,uint256)`.
- mstore(0x00, 0x12f21602)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, bool p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(bool,bool,string)`.
- mstore(0x00, 0x2555fa46)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bool p0, uint256 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,uint256,address)`.
- mstore(0x00, 0x088ef9d2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, uint256 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,uint256,bool)`.
- mstore(0x00, 0xe8defba9)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, uint256 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(bool,uint256,uint256)`.
- mstore(0x00, 0x37103367)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(bool p0, uint256 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(bool,uint256,string)`.
- mstore(0x00, 0xc3fc3970)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bool p0, bytes32 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(bool,string,address)`.
- mstore(0x00, 0x9591b953)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bool p0, bytes32 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(bool,string,bool)`.
- mstore(0x00, 0xdbb4c247)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bool p0, bytes32 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(bool,string,uint256)`.
- mstore(0x00, 0x1093ee11)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bool p0, bytes32 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(bool,string,string)`.
- mstore(0x00, 0xb076847f)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, 0xa0)
- writeString(0x80, p1)
- writeString(0xc0, p2)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(uint256 p0, address p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,address,address)`.
- mstore(0x00, 0xbcfd9be0)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, address p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,address,bool)`.
- mstore(0x00, 0x9b6ec042)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, address p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,address,uint256)`.
- mstore(0x00, 0x5a9b5ed5)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, address p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(uint256,address,string)`.
- mstore(0x00, 0x63cb41f9)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(uint256 p0, bool p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,bool,address)`.
- mstore(0x00, 0x35085f7b)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, bool p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,bool,bool)`.
- mstore(0x00, 0x20718650)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, bool p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,bool,uint256)`.
- mstore(0x00, 0x20098014)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, bool p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(uint256,bool,string)`.
- mstore(0x00, 0x85775021)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(uint256 p0, uint256 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,uint256,address)`.
- mstore(0x00, 0x5c96b331)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, uint256 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,uint256,bool)`.
- mstore(0x00, 0x4766da72)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- // Selector of `log(uint256,uint256,uint256)`.
- mstore(0x00, 0xd1ed7a3c)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- }
- _sendLogPayload(0x1c, 0x64);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- }
- }
-
- function log(uint256 p0, uint256 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(uint256,uint256,string)`.
- mstore(0x00, 0x71d04af2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x60)
- writeString(0x80, p2)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(uint256 p0, bytes32 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(uint256,string,address)`.
- mstore(0x00, 0x7afac959)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(uint256,string,bool)`.
- mstore(0x00, 0x4ceda75a)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(uint256 p0, bytes32 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(uint256,string,uint256)`.
- mstore(0x00, 0x37aa7d4c)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, p2)
- writeString(0x80, p1)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(uint256,string,string)`.
- mstore(0x00, 0xb115611f)
- mstore(0x20, p0)
- mstore(0x40, 0x60)
- mstore(0x60, 0xa0)
- writeString(0x80, p1)
- writeString(0xc0, p2)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, address p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,address,address)`.
- mstore(0x00, 0xfcec75e0)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, address p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,address,bool)`.
- mstore(0x00, 0xc91d5ed4)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, address p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,address,uint256)`.
- mstore(0x00, 0x0d26b925)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, address p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(string,address,string)`.
- mstore(0x00, 0xe0e9ad4f)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, 0xa0)
- writeString(0x80, p0)
- writeString(0xc0, p2)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, bool p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,bool,address)`.
- mstore(0x00, 0x932bbb38)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, bool p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,bool,bool)`.
- mstore(0x00, 0x850b7ad6)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, bool p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,bool,uint256)`.
- mstore(0x00, 0xc95958d6)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, bool p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(string,bool,string)`.
- mstore(0x00, 0xe298f47d)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, 0xa0)
- writeString(0x80, p0)
- writeString(0xc0, p2)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, uint256 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,uint256,address)`.
- mstore(0x00, 0x1c7ec448)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,uint256,bool)`.
- mstore(0x00, 0xca7733b1)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, uint256 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- // Selector of `log(string,uint256,uint256)`.
- mstore(0x00, 0xca47c4eb)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, p2)
- writeString(0x80, p0)
- }
- _sendLogPayload(0x1c, 0xa4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(string,uint256,string)`.
- mstore(0x00, 0x5970e089)
- mstore(0x20, 0x60)
- mstore(0x40, p1)
- mstore(0x60, 0xa0)
- writeString(0x80, p0)
- writeString(0xc0, p2)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, address p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(string,string,address)`.
- mstore(0x00, 0x95ed0195)
- mstore(0x20, 0x60)
- mstore(0x40, 0xa0)
- mstore(0x60, p2)
- writeString(0x80, p0)
- writeString(0xc0, p1)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bool p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(string,string,bool)`.
- mstore(0x00, 0xb0e0f9b5)
- mstore(0x20, 0x60)
- mstore(0x40, 0xa0)
- mstore(0x60, p2)
- writeString(0x80, p0)
- writeString(0xc0, p1)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, uint256 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- // Selector of `log(string,string,uint256)`.
- mstore(0x00, 0x5821efa1)
- mstore(0x20, 0x60)
- mstore(0x40, 0xa0)
- mstore(0x60, p2)
- writeString(0x80, p0)
- writeString(0xc0, p1)
- }
- _sendLogPayload(0x1c, 0xe4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bytes32 p2) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- // Selector of `log(string,string,string)`.
- mstore(0x00, 0x2ced7cef)
- mstore(0x20, 0x60)
- mstore(0x40, 0xa0)
- mstore(0x60, 0xe0)
- writeString(0x80, p0)
- writeString(0xc0, p1)
- writeString(0x100, p2)
- }
- _sendLogPayload(0x1c, 0x124);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- }
- }
-
- function log(address p0, address p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,address,address)`.
- mstore(0x00, 0x665bf134)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,address,bool)`.
- mstore(0x00, 0x0e378994)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,address,uint256)`.
- mstore(0x00, 0x94250d77)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,address,address,string)`.
- mstore(0x00, 0xf808da20)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,bool,address)`.
- mstore(0x00, 0x9f1bc36e)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,bool,bool)`.
- mstore(0x00, 0x2cd4134a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,bool,uint256)`.
- mstore(0x00, 0x3971e78c)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,address,bool,string)`.
- mstore(0x00, 0xaa6540c8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,uint256,address)`.
- mstore(0x00, 0x8da6def5)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,uint256,bool)`.
- mstore(0x00, 0x9b4254e2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,address,uint256,uint256)`.
- mstore(0x00, 0xbe553481)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, address p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,address,uint256,string)`.
- mstore(0x00, 0xfdb4f990)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,address,string,address)`.
- mstore(0x00, 0x8f736d16)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,address,string,bool)`.
- mstore(0x00, 0x6f1a594e)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,address,string,uint256)`.
- mstore(0x00, 0xef1cefe7)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, address p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,address,string,string)`.
- mstore(0x00, 0x21bdaf25)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bool p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,address,address)`.
- mstore(0x00, 0x660375dd)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,address,bool)`.
- mstore(0x00, 0xa6f50b0f)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,address,uint256)`.
- mstore(0x00, 0xa75c59de)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,bool,address,string)`.
- mstore(0x00, 0x2dd778e6)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bool p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,bool,address)`.
- mstore(0x00, 0xcf394485)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,bool,bool)`.
- mstore(0x00, 0xcac43479)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,bool,uint256)`.
- mstore(0x00, 0x8c4e5de6)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,bool,bool,string)`.
- mstore(0x00, 0xdfc4a2e8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bool p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,uint256,address)`.
- mstore(0x00, 0xccf790a1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,uint256,bool)`.
- mstore(0x00, 0xc4643e20)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,bool,uint256,uint256)`.
- mstore(0x00, 0x386ff5f4)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, bool p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,bool,uint256,string)`.
- mstore(0x00, 0x0aa6cfad)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bool p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,bool,string,address)`.
- mstore(0x00, 0x19fd4956)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bool p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,bool,string,bool)`.
- mstore(0x00, 0x50ad461d)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bool p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,bool,string,uint256)`.
- mstore(0x00, 0x80e6a20b)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bool p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,bool,string,string)`.
- mstore(0x00, 0x475c5c33)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, uint256 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,address,address)`.
- mstore(0x00, 0x478d1c62)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,address,bool)`.
- mstore(0x00, 0xa1bcc9b3)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,address,uint256)`.
- mstore(0x00, 0x100f650e)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,uint256,address,string)`.
- mstore(0x00, 0x1da986ea)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, uint256 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,bool,address)`.
- mstore(0x00, 0xa31bfdcc)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,bool,bool)`.
- mstore(0x00, 0x3bf5e537)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,bool,uint256)`.
- mstore(0x00, 0x22f6b999)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,uint256,bool,string)`.
- mstore(0x00, 0xc5ad85f9)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, uint256 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,uint256,address)`.
- mstore(0x00, 0x20e3984d)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,uint256,bool)`.
- mstore(0x00, 0x66f1bc67)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(address,uint256,uint256,uint256)`.
- mstore(0x00, 0x34f0e636)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(address p0, uint256 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,uint256,uint256,string)`.
- mstore(0x00, 0x4a28c017)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, uint256 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,uint256,string,address)`.
- mstore(0x00, 0x5c430d47)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, uint256 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,uint256,string,bool)`.
- mstore(0x00, 0xcf18105c)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, uint256 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,uint256,string,uint256)`.
- mstore(0x00, 0xbf01f891)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,uint256,string,string)`.
- mstore(0x00, 0x88a8c406)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,address,address)`.
- mstore(0x00, 0x0d36fa20)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,address,bool)`.
- mstore(0x00, 0x0df12b76)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,address,uint256)`.
- mstore(0x00, 0x457fe3cf)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,string,address,string)`.
- mstore(0x00, 0xf7e36245)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,bool,address)`.
- mstore(0x00, 0x205871c2)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,bool,bool)`.
- mstore(0x00, 0x5f1d5c9f)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,bool,uint256)`.
- mstore(0x00, 0x515e38b6)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,string,bool,string)`.
- mstore(0x00, 0xbc0b61fe)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,uint256,address)`.
- mstore(0x00, 0x63183678)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,uint256,bool)`.
- mstore(0x00, 0x0ef7e050)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(address,string,uint256,uint256)`.
- mstore(0x00, 0x1dc8e1b8)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(address p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,string,uint256,string)`.
- mstore(0x00, 0x448830a8)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,string,string,address)`.
- mstore(0x00, 0xa04e2f87)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,string,string,bool)`.
- mstore(0x00, 0x35a5071f)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(address,string,string,uint256)`.
- mstore(0x00, 0x159f8927)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(address p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(address,string,string,string)`.
- mstore(0x00, 0x5d02c50b)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, 0x100)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bool p0, address p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,address,address)`.
- mstore(0x00, 0x1d14d001)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,address,bool)`.
- mstore(0x00, 0x46600be0)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,address,uint256)`.
- mstore(0x00, 0x0c66d1be)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,address,address,string)`.
- mstore(0x00, 0xd812a167)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, address p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,bool,address)`.
- mstore(0x00, 0x1c41a336)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,bool,bool)`.
- mstore(0x00, 0x6a9c478b)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,bool,uint256)`.
- mstore(0x00, 0x07831502)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,address,bool,string)`.
- mstore(0x00, 0x4a66cb34)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, address p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,uint256,address)`.
- mstore(0x00, 0x136b05dd)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,uint256,bool)`.
- mstore(0x00, 0xd6019f1c)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,address,uint256,uint256)`.
- mstore(0x00, 0x7bf181a1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, address p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,address,uint256,string)`.
- mstore(0x00, 0x51f09ff8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, address p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,address,string,address)`.
- mstore(0x00, 0x6f7c603e)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, address p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,address,string,bool)`.
- mstore(0x00, 0xe2bfd60b)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, address p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,address,string,uint256)`.
- mstore(0x00, 0xc21f64c7)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, address p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,address,string,string)`.
- mstore(0x00, 0xa73c1db6)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bool p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,address,address)`.
- mstore(0x00, 0xf4880ea4)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,address,bool)`.
- mstore(0x00, 0xc0a302d8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,address,uint256)`.
- mstore(0x00, 0x4c123d57)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,bool,address,string)`.
- mstore(0x00, 0xa0a47963)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bool p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,bool,address)`.
- mstore(0x00, 0x8c329b1a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,bool,bool)`.
- mstore(0x00, 0x3b2a5ce0)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,bool,uint256)`.
- mstore(0x00, 0x6d7045c1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,bool,bool,string)`.
- mstore(0x00, 0x2ae408d4)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bool p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,uint256,address)`.
- mstore(0x00, 0x54a7a9a0)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,uint256,bool)`.
- mstore(0x00, 0x619e4d0e)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,bool,uint256,uint256)`.
- mstore(0x00, 0x0bb00eab)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, bool p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,bool,uint256,string)`.
- mstore(0x00, 0x7dd4d0e0)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bool p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,bool,string,address)`.
- mstore(0x00, 0xf9ad2b89)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bool p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,bool,string,bool)`.
- mstore(0x00, 0xb857163a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bool p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,bool,string,uint256)`.
- mstore(0x00, 0xe3a9ca2f)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bool p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,bool,string,string)`.
- mstore(0x00, 0x6d1e8751)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, uint256 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,address,address)`.
- mstore(0x00, 0x26f560a8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,address,bool)`.
- mstore(0x00, 0xb4c314ff)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,address,uint256)`.
- mstore(0x00, 0x1537dc87)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,uint256,address,string)`.
- mstore(0x00, 0x1bb3b09a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, uint256 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,bool,address)`.
- mstore(0x00, 0x9acd3616)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,bool,bool)`.
- mstore(0x00, 0xceb5f4d7)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,bool,uint256)`.
- mstore(0x00, 0x7f9bbca2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,uint256,bool,string)`.
- mstore(0x00, 0x9143dbb1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,uint256,address)`.
- mstore(0x00, 0x00dd87b9)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,uint256,bool)`.
- mstore(0x00, 0xbe984353)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(bool,uint256,uint256,uint256)`.
- mstore(0x00, 0x374bb4b2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(bool p0, uint256 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,uint256,uint256,string)`.
- mstore(0x00, 0x8e69fb5d)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, uint256 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,uint256,string,address)`.
- mstore(0x00, 0xfedd1fff)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, uint256 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,uint256,string,bool)`.
- mstore(0x00, 0xe5e70b2b)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, uint256 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,uint256,string,uint256)`.
- mstore(0x00, 0x6a1199e2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,uint256,string,string)`.
- mstore(0x00, 0xf5bc2249)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,address,address)`.
- mstore(0x00, 0x2b2b18dc)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,address,bool)`.
- mstore(0x00, 0x6dd434ca)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,address,uint256)`.
- mstore(0x00, 0xa5cada94)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,string,address,string)`.
- mstore(0x00, 0x12d6c788)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,bool,address)`.
- mstore(0x00, 0x538e06ab)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,bool,bool)`.
- mstore(0x00, 0xdc5e935b)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,bool,uint256)`.
- mstore(0x00, 0x1606a393)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,string,bool,string)`.
- mstore(0x00, 0x483d0416)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,uint256,address)`.
- mstore(0x00, 0x1596a1ce)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,uint256,bool)`.
- mstore(0x00, 0x6b0e5d53)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(bool,string,uint256,uint256)`.
- mstore(0x00, 0x28863fcb)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bool p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,string,uint256,string)`.
- mstore(0x00, 0x1ad96de6)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,string,string,address)`.
- mstore(0x00, 0x97d394d8)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,string,string,bool)`.
- mstore(0x00, 0x1e4b87e5)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(bool,string,string,uint256)`.
- mstore(0x00, 0x7be0c3eb)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bool p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(bool,string,string,string)`.
- mstore(0x00, 0x1762e32a)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, 0x100)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(uint256 p0, address p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,address,address)`.
- mstore(0x00, 0x2488b414)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,address,bool)`.
- mstore(0x00, 0x091ffaf5)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,address,uint256)`.
- mstore(0x00, 0x736efbb6)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,address,address,string)`.
- mstore(0x00, 0x031c6f73)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, address p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,bool,address)`.
- mstore(0x00, 0xef72c513)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,bool,bool)`.
- mstore(0x00, 0xe351140f)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,bool,uint256)`.
- mstore(0x00, 0x5abd992a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,address,bool,string)`.
- mstore(0x00, 0x90fb06aa)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, address p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,uint256,address)`.
- mstore(0x00, 0x15c127b5)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,uint256,bool)`.
- mstore(0x00, 0x5f743a7c)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,address,uint256,uint256)`.
- mstore(0x00, 0x0c9cd9c1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, address p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,address,uint256,string)`.
- mstore(0x00, 0xddb06521)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, address p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,address,string,address)`.
- mstore(0x00, 0x9cba8fff)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, address p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,address,string,bool)`.
- mstore(0x00, 0xcc32ab07)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, address p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,address,string,uint256)`.
- mstore(0x00, 0x46826b5d)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, address p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,address,string,string)`.
- mstore(0x00, 0x3e128ca3)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bool p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,address,address)`.
- mstore(0x00, 0xa1ef4cbb)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,address,bool)`.
- mstore(0x00, 0x454d54a5)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,address,uint256)`.
- mstore(0x00, 0x078287f5)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,bool,address,string)`.
- mstore(0x00, 0xade052c7)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bool p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,bool,address)`.
- mstore(0x00, 0x69640b59)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,bool,bool)`.
- mstore(0x00, 0xb6f577a1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,bool,uint256)`.
- mstore(0x00, 0x7464ce23)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,bool,bool,string)`.
- mstore(0x00, 0xdddb9561)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,uint256,address)`.
- mstore(0x00, 0x88cb6041)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,uint256,bool)`.
- mstore(0x00, 0x91a02e2a)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,bool,uint256,uint256)`.
- mstore(0x00, 0xc6acc7a8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, bool p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,bool,uint256,string)`.
- mstore(0x00, 0xde03e774)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bool p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,bool,string,address)`.
- mstore(0x00, 0xef529018)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bool p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,bool,string,bool)`.
- mstore(0x00, 0xeb928d7f)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bool p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,bool,string,uint256)`.
- mstore(0x00, 0x2c1d0746)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bool p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,bool,string,string)`.
- mstore(0x00, 0x68c8b8bd)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, uint256 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,address,address)`.
- mstore(0x00, 0x56a5d1b1)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,address,bool)`.
- mstore(0x00, 0x15cac476)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,address,uint256)`.
- mstore(0x00, 0x88f6e4b2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,uint256,address,string)`.
- mstore(0x00, 0x6cde40b8)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,bool,address)`.
- mstore(0x00, 0x9a816a83)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,bool,bool)`.
- mstore(0x00, 0xab085ae6)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,bool,uint256)`.
- mstore(0x00, 0xeb7f6fd2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,uint256,bool,string)`.
- mstore(0x00, 0xa5b4fc99)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,uint256,address)`.
- mstore(0x00, 0xfa8185af)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,uint256,bool)`.
- mstore(0x00, 0xc598d185)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- assembly {
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- // Selector of `log(uint256,uint256,uint256,uint256)`.
- mstore(0x00, 0x193fb800)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- }
- _sendLogPayload(0x1c, 0x84);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- }
- }
-
- function log(uint256 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,uint256,uint256,string)`.
- mstore(0x00, 0x59cfcbe3)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0x80)
- writeString(0xa0, p3)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, uint256 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,uint256,string,address)`.
- mstore(0x00, 0x42d21db7)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, uint256 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,uint256,string,bool)`.
- mstore(0x00, 0x7af6ab25)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,uint256,string,uint256)`.
- mstore(0x00, 0x5da297eb)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, p3)
- writeString(0xa0, p2)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,uint256,string,string)`.
- mstore(0x00, 0x27d8afd2)
- mstore(0x20, p0)
- mstore(0x40, p1)
- mstore(0x60, 0x80)
- mstore(0x80, 0xc0)
- writeString(0xa0, p2)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,address,address)`.
- mstore(0x00, 0x6168ed61)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,address,bool)`.
- mstore(0x00, 0x90c30a56)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,address,uint256)`.
- mstore(0x00, 0xe8d3018d)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,string,address,string)`.
- mstore(0x00, 0x9c3adfa1)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,bool,address)`.
- mstore(0x00, 0xae2ec581)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,bool,bool)`.
- mstore(0x00, 0xba535d9c)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,bool,uint256)`.
- mstore(0x00, 0xcf009880)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,string,bool,string)`.
- mstore(0x00, 0xd2d423cd)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,uint256,address)`.
- mstore(0x00, 0x3b2279b4)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,uint256,bool)`.
- mstore(0x00, 0x691a8f74)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(uint256,string,uint256,uint256)`.
- mstore(0x00, 0x82c25b74)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(uint256 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,string,uint256,string)`.
- mstore(0x00, 0xb7b914ca)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p1)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,string,string,address)`.
- mstore(0x00, 0xd583c602)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,string,string,bool)`.
- mstore(0x00, 0xb3a6b6bd)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(uint256,string,string,uint256)`.
- mstore(0x00, 0xb028c9bd)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(uint256 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(uint256,string,string,string)`.
- mstore(0x00, 0x21ad0683)
- mstore(0x20, p0)
- mstore(0x40, 0x80)
- mstore(0x60, 0xc0)
- mstore(0x80, 0x100)
- writeString(0xa0, p1)
- writeString(0xe0, p2)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, address p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,address,address)`.
- mstore(0x00, 0xed8f28f6)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,address,bool)`.
- mstore(0x00, 0xb59dbd60)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,address,uint256)`.
- mstore(0x00, 0x8ef3f399)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,address,address,string)`.
- mstore(0x00, 0x800a1c67)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, address p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,bool,address)`.
- mstore(0x00, 0x223603bd)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,bool,bool)`.
- mstore(0x00, 0x79884c2b)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,bool,uint256)`.
- mstore(0x00, 0x3e9f866a)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,address,bool,string)`.
- mstore(0x00, 0x0454c079)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, address p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,uint256,address)`.
- mstore(0x00, 0x63fb8bc5)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,uint256,bool)`.
- mstore(0x00, 0xfc4845f0)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,address,uint256,uint256)`.
- mstore(0x00, 0xf8f51b1e)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, address p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,address,uint256,string)`.
- mstore(0x00, 0x5a477632)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, address p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,address,string,address)`.
- mstore(0x00, 0xaabc9a31)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, address p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,address,string,bool)`.
- mstore(0x00, 0x5f15d28c)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, address p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,address,string,uint256)`.
- mstore(0x00, 0x91d1112e)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, address p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,address,string,string)`.
- mstore(0x00, 0x245986f2)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, 0x100)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bool p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,address,address)`.
- mstore(0x00, 0x33e9dd1d)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,address,bool)`.
- mstore(0x00, 0x958c28c6)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,address,uint256)`.
- mstore(0x00, 0x5d08bb05)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,bool,address,string)`.
- mstore(0x00, 0x2d8e33a4)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bool p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,bool,address)`.
- mstore(0x00, 0x7190a529)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,bool,bool)`.
- mstore(0x00, 0x895af8c5)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,bool,uint256)`.
- mstore(0x00, 0x8e3f78a9)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,bool,bool,string)`.
- mstore(0x00, 0x9d22d5dd)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bool p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,uint256,address)`.
- mstore(0x00, 0x935e09bf)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,uint256,bool)`.
- mstore(0x00, 0x8af7cf8a)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,bool,uint256,uint256)`.
- mstore(0x00, 0x64b5bb67)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, bool p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,bool,uint256,string)`.
- mstore(0x00, 0x742d6ee7)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bool p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,bool,string,address)`.
- mstore(0x00, 0xe0625b29)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bool p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,bool,string,bool)`.
- mstore(0x00, 0x3f8a701d)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bool p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,bool,string,uint256)`.
- mstore(0x00, 0x24f91465)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bool p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,bool,string,string)`.
- mstore(0x00, 0xa826caeb)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, 0x100)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, uint256 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,address,address)`.
- mstore(0x00, 0x5ea2b7ae)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,address,bool)`.
- mstore(0x00, 0x82112a42)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,address,uint256)`.
- mstore(0x00, 0x4f04fdc6)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,uint256,address,string)`.
- mstore(0x00, 0x9ffb2f93)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,bool,address)`.
- mstore(0x00, 0xe0e95b98)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,bool,bool)`.
- mstore(0x00, 0x354c36d6)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,bool,uint256)`.
- mstore(0x00, 0xe41b6f6f)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,uint256,bool,string)`.
- mstore(0x00, 0xabf73a98)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, uint256 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,uint256,address)`.
- mstore(0x00, 0xe21de278)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,uint256,bool)`.
- mstore(0x00, 0x7626db92)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- // Selector of `log(string,uint256,uint256,uint256)`.
- mstore(0x00, 0xa7a87853)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- }
- _sendLogPayload(0x1c, 0xc4);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- }
- }
-
- function log(bytes32 p0, uint256 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,uint256,uint256,string)`.
- mstore(0x00, 0x854b3496)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, p2)
- mstore(0x80, 0xc0)
- writeString(0xa0, p0)
- writeString(0xe0, p3)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,uint256,string,address)`.
- mstore(0x00, 0x7c4632a4)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,uint256,string,bool)`.
- mstore(0x00, 0x7d24491d)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,uint256,string,uint256)`.
- mstore(0x00, 0xc67ea9d1)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, uint256 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,uint256,string,string)`.
- mstore(0x00, 0x5ab84e1f)
- mstore(0x20, 0x80)
- mstore(0x40, p1)
- mstore(0x60, 0xc0)
- mstore(0x80, 0x100)
- writeString(0xa0, p0)
- writeString(0xe0, p2)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, address p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,address,address)`.
- mstore(0x00, 0x439c7bef)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, address p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,address,bool)`.
- mstore(0x00, 0x5ccd4e37)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, address p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,address,uint256)`.
- mstore(0x00, 0x7cc3c607)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, address p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,string,address,string)`.
- mstore(0x00, 0xeb1bff80)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, 0x100)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bool p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,bool,address)`.
- mstore(0x00, 0xc371c7db)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bool p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,bool,bool)`.
- mstore(0x00, 0x40785869)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bool p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,bool,uint256)`.
- mstore(0x00, 0xd6aefad2)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bool p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,string,bool,string)`.
- mstore(0x00, 0x5e84b0ea)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, 0x100)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, uint256 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,uint256,address)`.
- mstore(0x00, 0x1023f7b2)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, uint256 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,uint256,bool)`.
- mstore(0x00, 0xc3a8a654)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, uint256 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- // Selector of `log(string,string,uint256,uint256)`.
- mstore(0x00, 0xf45d7d2c)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- }
- _sendLogPayload(0x1c, 0x104);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, uint256 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,string,uint256,string)`.
- mstore(0x00, 0x5d1a971a)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, p2)
- mstore(0x80, 0x100)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p3)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bytes32 p2, address p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,string,string,address)`.
- mstore(0x00, 0x6d572f44)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, 0x100)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p2)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bytes32 p2, bool p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,string,string,bool)`.
- mstore(0x00, 0x2c1754ed)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, 0x100)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p2)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bytes32 p2, uint256 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- // Selector of `log(string,string,string,uint256)`.
- mstore(0x00, 0x8eafb02b)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, 0x100)
- mstore(0x80, p3)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p2)
- }
- _sendLogPayload(0x1c, 0x144);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- }
- }
-
- function log(bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3) internal pure {
- bytes32 m0;
- bytes32 m1;
- bytes32 m2;
- bytes32 m3;
- bytes32 m4;
- bytes32 m5;
- bytes32 m6;
- bytes32 m7;
- bytes32 m8;
- bytes32 m9;
- bytes32 m10;
- bytes32 m11;
- bytes32 m12;
- assembly {
- function writeString(pos, w) {
- let length := 0
- for {} lt(length, 0x20) { length := add(length, 1) } { if iszero(byte(length, w)) { break } }
- mstore(pos, length)
- let shift := sub(256, shl(3, length))
- mstore(add(pos, 0x20), shl(shift, shr(shift, w)))
- }
- m0 := mload(0x00)
- m1 := mload(0x20)
- m2 := mload(0x40)
- m3 := mload(0x60)
- m4 := mload(0x80)
- m5 := mload(0xa0)
- m6 := mload(0xc0)
- m7 := mload(0xe0)
- m8 := mload(0x100)
- m9 := mload(0x120)
- m10 := mload(0x140)
- m11 := mload(0x160)
- m12 := mload(0x180)
- // Selector of `log(string,string,string,string)`.
- mstore(0x00, 0xde68f20a)
- mstore(0x20, 0x80)
- mstore(0x40, 0xc0)
- mstore(0x60, 0x100)
- mstore(0x80, 0x140)
- writeString(0xa0, p0)
- writeString(0xe0, p1)
- writeString(0x120, p2)
- writeString(0x160, p3)
- }
- _sendLogPayload(0x1c, 0x184);
- assembly {
- mstore(0x00, m0)
- mstore(0x20, m1)
- mstore(0x40, m2)
- mstore(0x60, m3)
- mstore(0x80, m4)
- mstore(0xa0, m5)
- mstore(0xc0, m6)
- mstore(0xe0, m7)
- mstore(0x100, m8)
- mstore(0x120, m9)
- mstore(0x140, m10)
- mstore(0x160, m11)
- mstore(0x180, m12)
- }
- }
-}
diff --git a/lib/forge-std/test/StdAssertions.t.sol b/lib/forge-std/test/StdAssertions.t.sol
deleted file mode 100644
index ae998f1..0000000
--- a/lib/forge-std/test/StdAssertions.t.sol
+++ /dev/null
@@ -1,1015 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.7.0 <0.9.0;
-
-import "../src/Test.sol";
-
-contract StdAssertionsTest is Test {
- string constant CUSTOM_ERROR = "guh!";
-
- bool constant EXPECT_PASS = false;
- bool constant EXPECT_FAIL = true;
-
- bool constant SHOULD_REVERT = true;
- bool constant SHOULD_RETURN = false;
-
- bool constant STRICT_REVERT_DATA = true;
- bool constant NON_STRICT_REVERT_DATA = false;
-
- TestTest t = new TestTest();
-
- /*//////////////////////////////////////////////////////////////////////////
- FAIL(STRING)
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_ShouldFail() external {
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._fail(CUSTOM_ERROR);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_FALSE
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_AssertFalse_Pass() external {
- t._assertFalse(false, EXPECT_PASS);
- }
-
- function test_AssertFalse_Fail() external {
- vm.expectEmit(false, false, false, true);
- emit log("Error: Assertion Failed");
- t._assertFalse(true, EXPECT_FAIL);
- }
-
- function test_AssertFalse_Err_Pass() external {
- t._assertFalse(false, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function test_AssertFalse_Err_Fail() external {
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertFalse(true, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_EQ(BOOL)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertEq_Bool_Pass(bool a) external {
- t._assertEq(a, a, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_Bool_Fail(bool a, bool b) external {
- vm.assume(a != b);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [bool]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_BoolErr_Pass(bool a) external {
- t._assertEq(a, a, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_BoolErr_Fail(bool a, bool b) external {
- vm.assume(a != b);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_EQ(BYTES)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertEq_Bytes_Pass(bytes calldata a) external {
- t._assertEq(a, a, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_Bytes_Fail(bytes calldata a, bytes calldata b) external {
- vm.assume(keccak256(a) != keccak256(b));
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [bytes]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_BytesErr_Pass(bytes calldata a) external {
- t._assertEq(a, a, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_BytesErr_Fail(bytes calldata a, bytes calldata b) external {
- vm.assume(keccak256(a) != keccak256(b));
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_EQ(ARRAY)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertEq_UintArr_Pass(uint256 e0, uint256 e1, uint256 e2) public {
- uint256[] memory a = new uint256[](3);
- a[0] = e0;
- a[1] = e1;
- a[2] = e2;
- uint256[] memory b = new uint256[](3);
- b[0] = e0;
- b[1] = e1;
- b[2] = e2;
-
- t._assertEq(a, b, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_IntArr_Pass(int256 e0, int256 e1, int256 e2) public {
- int256[] memory a = new int256[](3);
- a[0] = e0;
- a[1] = e1;
- a[2] = e2;
- int256[] memory b = new int256[](3);
- b[0] = e0;
- b[1] = e1;
- b[2] = e2;
-
- t._assertEq(a, b, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_AddressArr_Pass(address e0, address e1, address e2) public {
- address[] memory a = new address[](3);
- a[0] = e0;
- a[1] = e1;
- a[2] = e2;
- address[] memory b = new address[](3);
- b[0] = e0;
- b[1] = e1;
- b[2] = e2;
-
- t._assertEq(a, b, EXPECT_PASS);
- }
-
- function testFuzz_AssertEq_UintArr_FailEl(uint256 e1) public {
- vm.assume(e1 != 0);
- uint256[] memory a = new uint256[](3);
- uint256[] memory b = new uint256[](3);
- b[1] = e1;
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [uint[]]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_IntArr_FailEl(int256 e1) public {
- vm.assume(e1 != 0);
- int256[] memory a = new int256[](3);
- int256[] memory b = new int256[](3);
- b[1] = e1;
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [int[]]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_AddressArr_FailEl(address e1) public {
- vm.assume(e1 != address(0));
- address[] memory a = new address[](3);
- address[] memory b = new address[](3);
- b[1] = e1;
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [address[]]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_UintArrErr_FailEl(uint256 e1) public {
- vm.assume(e1 != 0);
- uint256[] memory a = new uint256[](3);
- uint256[] memory b = new uint256[](3);
- b[1] = e1;
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [uint[]]");
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_IntArrErr_FailEl(int256 e1) public {
- vm.assume(e1 != 0);
- int256[] memory a = new int256[](3);
- int256[] memory b = new int256[](3);
- b[1] = e1;
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [int[]]");
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_AddressArrErr_FailEl(address e1) public {
- vm.assume(e1 != address(0));
- address[] memory a = new address[](3);
- address[] memory b = new address[](3);
- b[1] = e1;
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [address[]]");
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_UintArr_FailLen(uint256 lenA, uint256 lenB) public {
- vm.assume(lenA != lenB);
- vm.assume(lenA <= 10000);
- vm.assume(lenB <= 10000);
- uint256[] memory a = new uint256[](lenA);
- uint256[] memory b = new uint256[](lenB);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [uint[]]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_IntArr_FailLen(uint256 lenA, uint256 lenB) public {
- vm.assume(lenA != lenB);
- vm.assume(lenA <= 10000);
- vm.assume(lenB <= 10000);
- int256[] memory a = new int256[](lenA);
- int256[] memory b = new int256[](lenB);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [int[]]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_AddressArr_FailLen(uint256 lenA, uint256 lenB) public {
- vm.assume(lenA != lenB);
- vm.assume(lenA <= 10000);
- vm.assume(lenB <= 10000);
- address[] memory a = new address[](lenA);
- address[] memory b = new address[](lenB);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [address[]]");
- t._assertEq(a, b, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_UintArrErr_FailLen(uint256 lenA, uint256 lenB) public {
- vm.assume(lenA != lenB);
- vm.assume(lenA <= 10000);
- vm.assume(lenB <= 10000);
- uint256[] memory a = new uint256[](lenA);
- uint256[] memory b = new uint256[](lenB);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [uint[]]");
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_IntArrErr_FailLen(uint256 lenA, uint256 lenB) public {
- vm.assume(lenA != lenB);
- vm.assume(lenA <= 10000);
- vm.assume(lenB <= 10000);
- int256[] memory a = new int256[](lenA);
- int256[] memory b = new int256[](lenB);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [int[]]");
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEq_AddressArrErr_FailLen(uint256 lenA, uint256 lenB) public {
- vm.assume(lenA != lenB);
- vm.assume(lenA <= 10000);
- vm.assume(lenB <= 10000);
- address[] memory a = new address[](lenA);
- address[] memory b = new address[](lenB);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- vm.expectEmit(false, false, false, true);
- emit log("Error: a == b not satisfied [address[]]");
- t._assertEq(a, b, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_EQ(UINT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_AssertEqUint() public {
- assertEqUint(uint8(1), uint128(1));
- assertEqUint(uint64(2), uint64(2));
- }
-
- function testFail_AssertEqUint() public {
- assertEqUint(uint64(1), uint96(2));
- assertEqUint(uint160(3), uint160(4));
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_ABS(UINT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqAbs_Uint_Pass(uint256 a, uint256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbs(a, b, maxDelta, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbs_Uint_Fail(uint256 a, uint256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [uint]");
- t._assertApproxEqAbs(a, b, maxDelta, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqAbs_UintErr_Pass(uint256 a, uint256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbs_UintErr_Fail(uint256 a, uint256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_ABS_DECIMAL(UINT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqAbsDecimal_Uint_Pass(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbsDecimal_Uint_Fail(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [uint]");
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqAbsDecimal_UintErr_Pass(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbsDecimal_UintErr_Fail(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_ABS(INT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqAbs_Int_Pass(int256 a, int256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbs(a, b, maxDelta, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbs_Int_Fail(int256 a, int256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [int]");
- t._assertApproxEqAbs(a, b, maxDelta, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqAbs_IntErr_Pass(int256 a, int256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbs_IntErr_Fail(int256 a, int256 b, uint256 maxDelta) external {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqAbs(a, b, maxDelta, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_ABS_DECIMAL(INT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqAbsDecimal_Int_Pass(int256 a, int256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbsDecimal_Int_Fail(int256 a, int256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [int]");
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqAbsDecimal_IntErr_Pass(int256 a, int256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) <= maxDelta);
-
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqAbsDecimal_IntErr_Fail(int256 a, int256 b, uint256 maxDelta, uint256 decimals)
- external
- {
- vm.assume(stdMath.delta(a, b) > maxDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqAbsDecimal(a, b, maxDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_REL(UINT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqRel_Uint_Pass(uint256 a, uint256 b, uint256 maxPercentDelta) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqRel_Uint_Fail(uint256 a, uint256 b, uint256 maxPercentDelta) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [uint]");
- t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqRel_UintErr_Pass(uint256 a, uint256 b, uint256 maxPercentDelta) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqRel_UintErr_Fail(uint256 a, uint256 b, uint256 maxPercentDelta) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_REL_DECIMAL(UINT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqRelDecimal_Uint_Pass(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta,
- uint256 decimals
- ) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqRelDecimal_Uint_Fail(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta,
- uint256 decimals
- ) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [uint]");
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqRelDecimal_UintErr_Pass(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta,
- uint256 decimals
- ) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqRelDecimal_UintErr_Fail(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta,
- uint256 decimals
- ) external {
- vm.assume(a < type(uint128).max && b < type(uint128).max && b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_REL(INT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertApproxEqRel_Int_Pass(int128 a, int128 b, uint128 maxPercentDelta) external {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqRel_Int_Fail(int128 a, int128 b, uint128 maxPercentDelta) external {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [int]");
- t._assertApproxEqRel(a, b, maxPercentDelta, EXPECT_FAIL);
- }
-
- function testFuzz_AssertApproxEqRel_IntErr_Pass(int128 a, int128 b, uint128 maxPercentDelta) external {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AssertApproxEqRel_IntErr_Fail(int128 a, int128 b, uint128 maxPercentDelta) external {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqRel(a, b, maxPercentDelta, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- APPROX_EQ_REL_DECIMAL(INT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testAssertApproxEqRelDecimal_Int_Pass(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals)
- external
- {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_PASS);
- }
-
- function testAssertApproxEqRelDecimal_Int_Fail(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals)
- external
- {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log("Error: a ~= b not satisfied [int]");
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, EXPECT_FAIL);
- }
-
- function testAssertApproxEqRelDecimal_IntErr_Pass(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals)
- external
- {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) <= maxPercentDelta);
-
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testAssertApproxEqRelDecimal_IntErr_Fail(int128 a, int128 b, uint128 maxPercentDelta, uint128 decimals)
- external
- {
- vm.assume(b != 0);
- vm.assume(stdMath.percentDelta(a, b) > maxPercentDelta);
-
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_EQ_CALL
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertEqCall_Return_Pass(
- bytes memory callDataA,
- bytes memory callDataB,
- bytes memory returnData,
- bool strictRevertData
- ) external {
- address targetA = address(new TestMockCall(returnData, SHOULD_RETURN));
- address targetB = address(new TestMockCall(returnData, SHOULD_RETURN));
-
- t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_PASS);
- }
-
- function testFuzz_RevertWhenCalled_AssertEqCall_Return_Fail(
- bytes memory callDataA,
- bytes memory callDataB,
- bytes memory returnDataA,
- bytes memory returnDataB,
- bool strictRevertData
- ) external {
- vm.assume(keccak256(returnDataA) != keccak256(returnDataB));
-
- address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN));
- address targetB = address(new TestMockCall(returnDataB, SHOULD_RETURN));
-
- vm.expectEmit(true, true, true, true);
- emit log_named_string("Error", "Call return data does not match");
- t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_FAIL);
- }
-
- function testFuzz_AssertEqCall_Revert_Pass(
- bytes memory callDataA,
- bytes memory callDataB,
- bytes memory revertDataA,
- bytes memory revertDataB
- ) external {
- address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT));
- address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT));
-
- t._assertEqCall(targetA, callDataA, targetB, callDataB, NON_STRICT_REVERT_DATA, EXPECT_PASS);
- }
-
- function testFuzz_RevertWhenCalled_AssertEqCall_Revert_Fail(
- bytes memory callDataA,
- bytes memory callDataB,
- bytes memory revertDataA,
- bytes memory revertDataB
- ) external {
- vm.assume(keccak256(revertDataA) != keccak256(revertDataB));
-
- address targetA = address(new TestMockCall(revertDataA, SHOULD_REVERT));
- address targetB = address(new TestMockCall(revertDataB, SHOULD_REVERT));
-
- vm.expectEmit(true, true, true, true);
- emit log_named_string("Error", "Call revert data does not match");
- t._assertEqCall(targetA, callDataA, targetB, callDataB, STRICT_REVERT_DATA, EXPECT_FAIL);
- }
-
- function testFuzz_RevertWhenCalled_AssertEqCall_Fail(
- bytes memory callDataA,
- bytes memory callDataB,
- bytes memory returnDataA,
- bytes memory returnDataB,
- bool strictRevertData
- ) external {
- address targetA = address(new TestMockCall(returnDataA, SHOULD_RETURN));
- address targetB = address(new TestMockCall(returnDataB, SHOULD_REVERT));
-
- vm.expectEmit(true, true, true, true);
- emit log_named_bytes(" Left call return data", returnDataA);
- vm.expectEmit(true, true, true, true);
- emit log_named_bytes(" Right call revert data", returnDataB);
- t._assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData, EXPECT_FAIL);
-
- vm.expectEmit(true, true, true, true);
- emit log_named_bytes(" Left call revert data", returnDataB);
- vm.expectEmit(true, true, true, true);
- emit log_named_bytes(" Right call return data", returnDataA);
- t._assertEqCall(targetB, callDataB, targetA, callDataA, strictRevertData, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_NOT_EQ(BYTES)
- //////////////////////////////////////////////////////////////////////////*/
-
- function testFuzz_AssertNotEq_Bytes_Pass(bytes32 a, bytes32 b) external {
- vm.assume(a != b);
- t._assertNotEq(a, b, EXPECT_PASS);
- }
-
- function testFuzz_AssertNotEq_Bytes_Fail(bytes32 a) external {
- vm.expectEmit(false, false, false, true);
- emit log("Error: a != b not satisfied [bytes32]");
- t._assertNotEq(a, a, EXPECT_FAIL);
- }
-
- function testFuzz_AssertNotEq_BytesErr_Pass(bytes32 a, bytes32 b) external {
- vm.assume(a != b);
- t._assertNotEq(a, b, CUSTOM_ERROR, EXPECT_PASS);
- }
-
- function testFuzz_AsserNottEq_BytesErr_Fail(bytes32 a) external {
- vm.expectEmit(false, false, false, true);
- emit log_named_string("Error", CUSTOM_ERROR);
- t._assertNotEq(a, a, CUSTOM_ERROR, EXPECT_FAIL);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- ASSERT_NOT_EQ(UINT)
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_AssertNotEqUint() public {
- assertNotEq(uint8(1), uint128(2));
- assertNotEq(uint64(3), uint64(4));
- }
-
- function testFail_AssertNotEqUint() public {
- assertNotEq(uint64(1), uint96(1));
- assertNotEq(uint160(2), uint160(2));
- }
-}
-
-contract TestTest is Test {
- modifier expectFailure(bool expectFail) {
- bool preState = vm.load(HEVM_ADDRESS, bytes32("failed")) != bytes32(0x00);
- _;
- bool postState = vm.load(HEVM_ADDRESS, bytes32("failed")) != bytes32(0x00);
-
- if (preState == true) {
- return;
- }
-
- if (expectFail) {
- require(postState == true, "expected failure not triggered");
-
- // unwind the expected failure
- vm.store(HEVM_ADDRESS, bytes32("failed"), bytes32(uint256(0x00)));
- } else {
- require(postState == false, "unexpected failure was triggered");
- }
- }
-
- function _fail(string memory err) external expectFailure(true) {
- fail(err);
- }
-
- function _assertFalse(bool data, bool expectFail) external expectFailure(expectFail) {
- assertFalse(data);
- }
-
- function _assertFalse(bool data, string memory err, bool expectFail) external expectFailure(expectFail) {
- assertFalse(data, err);
- }
-
- function _assertEq(bool a, bool b, bool expectFail) external expectFailure(expectFail) {
- assertEq(a, b);
- }
-
- function _assertEq(bool a, bool b, string memory err, bool expectFail) external expectFailure(expectFail) {
- assertEq(a, b, err);
- }
-
- function _assertEq(bytes memory a, bytes memory b, bool expectFail) external expectFailure(expectFail) {
- assertEq(a, b);
- }
-
- function _assertEq(bytes memory a, bytes memory b, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertEq(a, b, err);
- }
-
- function _assertEq(uint256[] memory a, uint256[] memory b, bool expectFail) external expectFailure(expectFail) {
- assertEq(a, b);
- }
-
- function _assertEq(int256[] memory a, int256[] memory b, bool expectFail) external expectFailure(expectFail) {
- assertEq(a, b);
- }
-
- function _assertEq(address[] memory a, address[] memory b, bool expectFail) external expectFailure(expectFail) {
- assertEq(a, b);
- }
-
- function _assertEq(uint256[] memory a, uint256[] memory b, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertEq(a, b, err);
- }
-
- function _assertEq(int256[] memory a, int256[] memory b, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertEq(a, b, err);
- }
-
- function _assertEq(address[] memory a, address[] memory b, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertEq(a, b, err);
- }
-
- function _assertNotEq(bytes32 a, bytes32 b, bool expectFail) external expectFailure(expectFail) {
- assertNotEq32(a, b);
- }
-
- function _assertNotEq(bytes32 a, bytes32 b, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertNotEq32(a, b, err);
- }
-
- function _assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqAbs(a, b, maxDelta);
- }
-
- function _assertApproxEqAbs(uint256 a, uint256 b, uint256 maxDelta, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqAbs(a, b, maxDelta, err);
- }
-
- function _assertApproxEqAbsDecimal(uint256 a, uint256 b, uint256 maxDelta, uint256 decimals, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqAbsDecimal(a, b, maxDelta, decimals);
- }
-
- function _assertApproxEqAbsDecimal(
- uint256 a,
- uint256 b,
- uint256 maxDelta,
- uint256 decimals,
- string memory err,
- bool expectFail
- ) external expectFailure(expectFail) {
- assertApproxEqAbsDecimal(a, b, maxDelta, decimals, err);
- }
-
- function _assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqAbs(a, b, maxDelta);
- }
-
- function _assertApproxEqAbs(int256 a, int256 b, uint256 maxDelta, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqAbs(a, b, maxDelta, err);
- }
-
- function _assertApproxEqAbsDecimal(int256 a, int256 b, uint256 maxDelta, uint256 decimals, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqAbsDecimal(a, b, maxDelta, decimals);
- }
-
- function _assertApproxEqAbsDecimal(
- int256 a,
- int256 b,
- uint256 maxDelta,
- uint256 decimals,
- string memory err,
- bool expectFail
- ) external expectFailure(expectFail) {
- assertApproxEqAbsDecimal(a, b, maxDelta, decimals, err);
- }
-
- function _assertApproxEqRel(uint256 a, uint256 b, uint256 maxPercentDelta, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqRel(a, b, maxPercentDelta);
- }
-
- function _assertApproxEqRel(uint256 a, uint256 b, uint256 maxPercentDelta, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqRel(a, b, maxPercentDelta, err);
- }
-
- function _assertApproxEqRelDecimal(uint256 a, uint256 b, uint256 maxPercentDelta, uint256 decimals, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals);
- }
-
- function _assertApproxEqRelDecimal(
- uint256 a,
- uint256 b,
- uint256 maxPercentDelta,
- uint256 decimals,
- string memory err,
- bool expectFail
- ) external expectFailure(expectFail) {
- assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, err);
- }
-
- function _assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqRel(a, b, maxPercentDelta);
- }
-
- function _assertApproxEqRel(int256 a, int256 b, uint256 maxPercentDelta, string memory err, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqRel(a, b, maxPercentDelta, err);
- }
-
- function _assertApproxEqRelDecimal(int256 a, int256 b, uint256 maxPercentDelta, uint256 decimals, bool expectFail)
- external
- expectFailure(expectFail)
- {
- assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals);
- }
-
- function _assertApproxEqRelDecimal(
- int256 a,
- int256 b,
- uint256 maxPercentDelta,
- uint256 decimals,
- string memory err,
- bool expectFail
- ) external expectFailure(expectFail) {
- assertApproxEqRelDecimal(a, b, maxPercentDelta, decimals, err);
- }
-
- function _assertEqCall(
- address targetA,
- bytes memory callDataA,
- address targetB,
- bytes memory callDataB,
- bool strictRevertData,
- bool expectFail
- ) external expectFailure(expectFail) {
- assertEqCall(targetA, callDataA, targetB, callDataB, strictRevertData);
- }
-}
-
-contract TestMockCall {
- bytes returnData;
- bool shouldRevert;
-
- constructor(bytes memory returnData_, bool shouldRevert_) {
- returnData = returnData_;
- shouldRevert = shouldRevert_;
- }
-
- fallback() external payable {
- bytes memory returnData_ = returnData;
-
- if (shouldRevert) {
- assembly {
- revert(add(returnData_, 0x20), mload(returnData_))
- }
- } else {
- assembly {
- return(add(returnData_, 0x20), mload(returnData_))
- }
- }
- }
-}
diff --git a/lib/forge-std/test/StdChains.t.sol b/lib/forge-std/test/StdChains.t.sol
deleted file mode 100644
index dab3751..0000000
--- a/lib/forge-std/test/StdChains.t.sol
+++ /dev/null
@@ -1,220 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.7.0 <0.9.0;
-
-import "../src/Test.sol";
-
-contract StdChainsMock is Test {
- function exposed_getChain(string memory chainAlias) public returns (Chain memory) {
- return getChain(chainAlias);
- }
-
- function exposed_getChain(uint256 chainId) public returns (Chain memory) {
- return getChain(chainId);
- }
-
- function exposed_setChain(string memory chainAlias, ChainData memory chainData) public {
- setChain(chainAlias, chainData);
- }
-
- function exposed_setFallbackToDefaultRpcUrls(bool useDefault) public {
- setFallbackToDefaultRpcUrls(useDefault);
- }
-}
-
-contract StdChainsTest is Test {
- function test_ChainRpcInitialization() public {
- // RPCs specified in `foundry.toml` should be updated.
- assertEq(getChain(1).rpcUrl, "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3");
- assertEq(getChain("optimism_goerli").rpcUrl, "https://goerli.optimism.io/");
- assertEq(getChain("arbitrum_one_goerli").rpcUrl, "https://goerli-rollup.arbitrum.io/rpc/");
-
- // Environment variables should be the next fallback
- assertEq(getChain("arbitrum_nova").rpcUrl, "https://nova.arbitrum.io/rpc");
- vm.setEnv("ARBITRUM_NOVA_RPC_URL", "myoverride");
- assertEq(getChain("arbitrum_nova").rpcUrl, "myoverride");
- vm.setEnv("ARBITRUM_NOVA_RPC_URL", "https://nova.arbitrum.io/rpc");
-
- // Cannot override RPCs defined in `foundry.toml`
- vm.setEnv("MAINNET_RPC_URL", "myoverride2");
- assertEq(getChain("mainnet").rpcUrl, "https://mainnet.infura.io/v3/b1d3925804e74152b316ca7da97060d3");
-
- // Other RPCs should remain unchanged.
- assertEq(getChain(31337).rpcUrl, "http://127.0.0.1:8545");
- assertEq(getChain("sepolia").rpcUrl, "https://sepolia.infura.io/v3/b9794ad1ddf84dfb8c34d6bb5dca2001");
- }
-
- function testFuzz_Rpc(string memory rpcAlias) internal {
- string memory rpcUrl = getChain(rpcAlias).rpcUrl;
- vm.createSelectFork(rpcUrl);
- }
-
- // Ensure we can connect to the default RPC URL for each chain.
- // function testRpcs() public {
- // testRpc("mainnet");
- // testRpc("goerli");
- // testRpc("sepolia");
- // testRpc("optimism");
- // testRpc("optimism_goerli");
- // testRpc("arbitrum_one");
- // testRpc("arbitrum_one_goerli");
- // testRpc("arbitrum_nova");
- // testRpc("polygon");
- // testRpc("polygon_mumbai");
- // testRpc("avalanche");
- // testRpc("avalanche_fuji");
- // testRpc("bnb_smart_chain");
- // testRpc("bnb_smart_chain_testnet");
- // testRpc("gnosis_chain");
- // testRpc("moonbeam");
- // testRpc("moonriver");
- // testRpc("moonbase");
- // testRpc("base_goerli");
- // testRpc("base");
- // }
-
- function test_ChainNoDefault() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains getChain(string): Chain with alias \"does_not_exist\" not found.");
- stdChainsMock.exposed_getChain("does_not_exist");
- }
-
- function test_SetChainFirstFails() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains setChain(string,ChainData): Chain ID 31337 already used by \"anvil\".");
- stdChainsMock.exposed_setChain("anvil2", ChainData("Anvil", 31337, "URL"));
- }
-
- function test_ChainBubbleUp() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- stdChainsMock.exposed_setChain("needs_undefined_env_var", ChainData("", 123456789, ""));
- vm.expectRevert(
- "Failed to resolve env var `UNDEFINED_RPC_URL_PLACEHOLDER` in `${UNDEFINED_RPC_URL_PLACEHOLDER}`: environment variable not found"
- );
- stdChainsMock.exposed_getChain("needs_undefined_env_var");
- }
-
- function test_CannotSetChain_ChainIdExists() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- stdChainsMock.exposed_setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/"));
-
- vm.expectRevert('StdChains setChain(string,ChainData): Chain ID 123456789 already used by "custom_chain".');
-
- stdChainsMock.exposed_setChain("another_custom_chain", ChainData("", 123456789, ""));
- }
-
- function test_SetChain() public {
- setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/"));
- Chain memory customChain = getChain("custom_chain");
- assertEq(customChain.name, "Custom Chain");
- assertEq(customChain.chainId, 123456789);
- assertEq(customChain.chainAlias, "custom_chain");
- assertEq(customChain.rpcUrl, "https://custom.chain/");
- Chain memory chainById = getChain(123456789);
- assertEq(chainById.name, customChain.name);
- assertEq(chainById.chainId, customChain.chainId);
- assertEq(chainById.chainAlias, customChain.chainAlias);
- assertEq(chainById.rpcUrl, customChain.rpcUrl);
- customChain.name = "Another Custom Chain";
- customChain.chainId = 987654321;
- setChain("another_custom_chain", customChain);
- Chain memory anotherCustomChain = getChain("another_custom_chain");
- assertEq(anotherCustomChain.name, "Another Custom Chain");
- assertEq(anotherCustomChain.chainId, 987654321);
- assertEq(anotherCustomChain.chainAlias, "another_custom_chain");
- assertEq(anotherCustomChain.rpcUrl, "https://custom.chain/");
- // Verify the first chain data was not overwritten
- chainById = getChain(123456789);
- assertEq(chainById.name, "Custom Chain");
- assertEq(chainById.chainId, 123456789);
- }
-
- function test_SetNoEmptyAlias() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains setChain(string,ChainData): Chain alias cannot be the empty string.");
- stdChainsMock.exposed_setChain("", ChainData("", 123456789, ""));
- }
-
- function test_SetNoChainId0() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains setChain(string,ChainData): Chain ID cannot be 0.");
- stdChainsMock.exposed_setChain("alias", ChainData("", 0, ""));
- }
-
- function test_GetNoChainId0() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains getChain(uint256): Chain ID cannot be 0.");
- stdChainsMock.exposed_getChain(0);
- }
-
- function test_GetNoEmptyAlias() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains getChain(string): Chain alias cannot be the empty string.");
- stdChainsMock.exposed_getChain("");
- }
-
- function test_ChainIdNotFound() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains getChain(string): Chain with alias \"no_such_alias\" not found.");
- stdChainsMock.exposed_getChain("no_such_alias");
- }
-
- function test_ChainAliasNotFound() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- vm.expectRevert("StdChains getChain(uint256): Chain with ID 321 not found.");
-
- stdChainsMock.exposed_getChain(321);
- }
-
- function test_SetChain_ExistingOne() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- setChain("custom_chain", ChainData("Custom Chain", 123456789, "https://custom.chain/"));
- assertEq(getChain(123456789).chainId, 123456789);
-
- setChain("custom_chain", ChainData("Modified Chain", 999999999, "https://modified.chain/"));
- vm.expectRevert("StdChains getChain(uint256): Chain with ID 123456789 not found.");
- stdChainsMock.exposed_getChain(123456789);
-
- Chain memory modifiedChain = getChain(999999999);
- assertEq(modifiedChain.name, "Modified Chain");
- assertEq(modifiedChain.chainId, 999999999);
- assertEq(modifiedChain.rpcUrl, "https://modified.chain/");
- }
-
- function test_DontUseDefaultRpcUrl() public {
- // We deploy a mock to properly test the revert.
- StdChainsMock stdChainsMock = new StdChainsMock();
-
- // Should error if default RPCs flag is set to false.
- stdChainsMock.exposed_setFallbackToDefaultRpcUrls(false);
- vm.expectRevert(
- "Failed to get environment variable `ANVIL_RPC_URL` as type `string`: environment variable not found"
- );
- stdChainsMock.exposed_getChain(31337);
- vm.expectRevert(
- "Failed to get environment variable `SEPOLIA_RPC_URL` as type `string`: environment variable not found"
- );
- stdChainsMock.exposed_getChain("sepolia");
- }
-}
diff --git a/lib/forge-std/test/StdCheats.t.sol b/lib/forge-std/test/StdCheats.t.sol
deleted file mode 100644
index d7b3517..0000000
--- a/lib/forge-std/test/StdCheats.t.sol
+++ /dev/null
@@ -1,610 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.7.0 <0.9.0;
-
-import "../src/StdCheats.sol";
-import "../src/Test.sol";
-import "../src/StdJson.sol";
-
-contract StdCheatsTest is Test {
- Bar test;
-
- using stdJson for string;
-
- function setUp() public {
- test = new Bar();
- }
-
- function test_Skip() public {
- vm.warp(100);
- skip(25);
- assertEq(block.timestamp, 125);
- }
-
- function test_Rewind() public {
- vm.warp(100);
- rewind(25);
- assertEq(block.timestamp, 75);
- }
-
- function test_Hoax() public {
- hoax(address(1337));
- test.bar{value: 100}(address(1337));
- }
-
- function test_HoaxOrigin() public {
- hoax(address(1337), address(1337));
- test.origin{value: 100}(address(1337));
- }
-
- function test_HoaxDifferentAddresses() public {
- hoax(address(1337), address(7331));
- test.origin{value: 100}(address(1337), address(7331));
- }
-
- function test_StartHoax() public {
- startHoax(address(1337));
- test.bar{value: 100}(address(1337));
- test.bar{value: 100}(address(1337));
- vm.stopPrank();
- test.bar(address(this));
- }
-
- function test_StartHoaxOrigin() public {
- startHoax(address(1337), address(1337));
- test.origin{value: 100}(address(1337));
- test.origin{value: 100}(address(1337));
- vm.stopPrank();
- test.bar(address(this));
- }
-
- function test_ChangePrankMsgSender() public {
- vm.startPrank(address(1337));
- test.bar(address(1337));
- changePrank(address(0xdead));
- test.bar(address(0xdead));
- changePrank(address(1337));
- test.bar(address(1337));
- vm.stopPrank();
- }
-
- function test_ChangePrankMsgSenderAndTxOrigin() public {
- vm.startPrank(address(1337), address(1338));
- test.origin(address(1337), address(1338));
- changePrank(address(0xdead), address(0xbeef));
- test.origin(address(0xdead), address(0xbeef));
- changePrank(address(1337), address(1338));
- test.origin(address(1337), address(1338));
- vm.stopPrank();
- }
-
- function test_MakeAccountEquivalence() public {
- Account memory account = makeAccount("1337");
- (address addr, uint256 key) = makeAddrAndKey("1337");
- assertEq(account.addr, addr);
- assertEq(account.key, key);
- }
-
- function test_MakeAddrEquivalence() public {
- (address addr,) = makeAddrAndKey("1337");
- assertEq(makeAddr("1337"), addr);
- }
-
- function test_MakeAddrSigning() public {
- (address addr, uint256 key) = makeAddrAndKey("1337");
- bytes32 hash = keccak256("some_message");
-
- (uint8 v, bytes32 r, bytes32 s) = vm.sign(key, hash);
- assertEq(ecrecover(hash, v, r, s), addr);
- }
-
- function test_Deal() public {
- deal(address(this), 1 ether);
- assertEq(address(this).balance, 1 ether);
- }
-
- function tes_tDealToken() public {
- Bar barToken = new Bar();
- address bar = address(barToken);
- deal(bar, address(this), 10000e18);
- assertEq(barToken.balanceOf(address(this)), 10000e18);
- }
-
- function test_DealTokenAdjustTotalSupply() public {
- Bar barToken = new Bar();
- address bar = address(barToken);
- deal(bar, address(this), 10000e18, true);
- assertEq(barToken.balanceOf(address(this)), 10000e18);
- assertEq(barToken.totalSupply(), 20000e18);
- deal(bar, address(this), 0, true);
- assertEq(barToken.balanceOf(address(this)), 0);
- assertEq(barToken.totalSupply(), 10000e18);
- }
-
- function test_DealERC1155Token() public {
- BarERC1155 barToken = new BarERC1155();
- address bar = address(barToken);
- dealERC1155(bar, address(this), 0, 10000e18, false);
- assertEq(barToken.balanceOf(address(this), 0), 10000e18);
- }
-
- function test_DealERC1155TokenAdjustTotalSupply() public {
- BarERC1155 barToken = new BarERC1155();
- address bar = address(barToken);
- dealERC1155(bar, address(this), 0, 10000e18, true);
- assertEq(barToken.balanceOf(address(this), 0), 10000e18);
- assertEq(barToken.totalSupply(0), 20000e18);
- dealERC1155(bar, address(this), 0, 0, true);
- assertEq(barToken.balanceOf(address(this), 0), 0);
- assertEq(barToken.totalSupply(0), 10000e18);
- }
-
- function test_DealERC721Token() public {
- BarERC721 barToken = new BarERC721();
- address bar = address(barToken);
- dealERC721(bar, address(2), 1);
- assertEq(barToken.balanceOf(address(2)), 1);
- assertEq(barToken.balanceOf(address(1)), 0);
- dealERC721(bar, address(1), 2);
- assertEq(barToken.balanceOf(address(1)), 1);
- assertEq(barToken.balanceOf(bar), 1);
- }
-
- function test_DeployCode() public {
- address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""));
- assertEq(string(getCode(deployed)), string(getCode(address(test))));
- }
-
- function test_DestroyAccount() public {
- // deploy something to destroy it
- BarERC721 barToken = new BarERC721();
- address bar = address(barToken);
- vm.setNonce(bar, 10);
- deal(bar, 100);
-
- uint256 prevThisBalance = address(this).balance;
- uint256 size;
- assembly {
- size := extcodesize(bar)
- }
-
- assertGt(size, 0);
- assertEq(bar.balance, 100);
- assertEq(vm.getNonce(bar), 10);
-
- destroyAccount(bar, address(this));
- assembly {
- size := extcodesize(bar)
- }
- assertEq(address(this).balance, prevThisBalance + 100);
- assertEq(vm.getNonce(bar), 0);
- assertEq(size, 0);
- assertEq(bar.balance, 0);
- }
-
- function test_DeployCodeNoArgs() public {
- address deployed = deployCode("StdCheats.t.sol:Bar");
- assertEq(string(getCode(deployed)), string(getCode(address(test))));
- }
-
- function test_DeployCodeVal() public {
- address deployed = deployCode("StdCheats.t.sol:Bar", bytes(""), 1 ether);
- assertEq(string(getCode(deployed)), string(getCode(address(test))));
- assertEq(deployed.balance, 1 ether);
- }
-
- function test_DeployCodeValNoArgs() public {
- address deployed = deployCode("StdCheats.t.sol:Bar", 1 ether);
- assertEq(string(getCode(deployed)), string(getCode(address(test))));
- assertEq(deployed.balance, 1 ether);
- }
-
- // We need this so we can call "this.deployCode" rather than "deployCode" directly
- function deployCodeHelper(string memory what) external {
- deployCode(what);
- }
-
- function test_DeployCodeFail() public {
- vm.expectRevert(bytes("StdCheats deployCode(string): Deployment failed."));
- this.deployCodeHelper("StdCheats.t.sol:RevertingContract");
- }
-
- function getCode(address who) internal view returns (bytes memory o_code) {
- /// @solidity memory-safe-assembly
- assembly {
- // retrieve the size of the code, this needs assembly
- let size := extcodesize(who)
- // allocate output byte array - this could also be done without assembly
- // by using o_code = new bytes(size)
- o_code := mload(0x40)
- // new "memory end" including padding
- mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f))))
- // store length in memory
- mstore(o_code, size)
- // actually retrieve the code, this needs assembly
- extcodecopy(who, add(o_code, 0x20), 0, size)
- }
- }
-
- function test_DeriveRememberKey() public {
- string memory mnemonic = "test test test test test test test test test test test junk";
-
- (address deployer, uint256 privateKey) = deriveRememberKey(mnemonic, 0);
- assertEq(deployer, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266);
- assertEq(privateKey, 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80);
- }
-
- function test_BytesToUint() public {
- assertEq(3, bytesToUint_test(hex"03"));
- assertEq(2, bytesToUint_test(hex"02"));
- assertEq(255, bytesToUint_test(hex"ff"));
- assertEq(29625, bytesToUint_test(hex"73b9"));
- }
-
- function test_ParseJsonTxDetail() public {
- string memory root = vm.projectRoot();
- string memory path = string.concat(root, "/test/fixtures/broadcast.log.json");
- string memory json = vm.readFile(path);
- bytes memory transactionDetails = json.parseRaw(".transactions[0].tx");
- RawTx1559Detail memory rawTxDetail = abi.decode(transactionDetails, (RawTx1559Detail));
- Tx1559Detail memory txDetail = rawToConvertedEIP1559Detail(rawTxDetail);
- assertEq(txDetail.from, 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266);
- assertEq(txDetail.to, 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512);
- assertEq(
- txDetail.data,
- hex"23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004"
- );
- assertEq(txDetail.nonce, 3);
- assertEq(txDetail.txType, 2);
- assertEq(txDetail.gas, 29625);
- assertEq(txDetail.value, 0);
- }
-
- function test_ReadEIP1559Transaction() public view {
- string memory root = vm.projectRoot();
- string memory path = string.concat(root, "/test/fixtures/broadcast.log.json");
- uint256 index = 0;
- Tx1559 memory transaction = readTx1559(path, index);
- transaction;
- }
-
- function test_ReadEIP1559Transactions() public view {
- string memory root = vm.projectRoot();
- string memory path = string.concat(root, "/test/fixtures/broadcast.log.json");
- Tx1559[] memory transactions = readTx1559s(path);
- transactions;
- }
-
- function test_ReadReceipt() public {
- string memory root = vm.projectRoot();
- string memory path = string.concat(root, "/test/fixtures/broadcast.log.json");
- uint256 index = 5;
- Receipt memory receipt = readReceipt(path, index);
- assertEq(
- receipt.logsBloom,
- hex"00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100"
- );
- }
-
- function test_ReadReceipts() public view {
- string memory root = vm.projectRoot();
- string memory path = string.concat(root, "/test/fixtures/broadcast.log.json");
- Receipt[] memory receipts = readReceipts(path);
- receipts;
- }
-
- function test_GasMeteringModifier() public {
- uint256 gas_start_normal = gasleft();
- addInLoop();
- uint256 gas_used_normal = gas_start_normal - gasleft();
-
- uint256 gas_start_single = gasleft();
- addInLoopNoGas();
- uint256 gas_used_single = gas_start_single - gasleft();
-
- uint256 gas_start_double = gasleft();
- addInLoopNoGasNoGas();
- uint256 gas_used_double = gas_start_double - gasleft();
-
- emit log_named_uint("Normal gas", gas_used_normal);
- emit log_named_uint("Single modifier gas", gas_used_single);
- emit log_named_uint("Double modifier gas", gas_used_double);
- assertTrue(gas_used_double + gas_used_single < gas_used_normal);
- }
-
- function addInLoop() internal pure returns (uint256) {
- uint256 b;
- for (uint256 i; i < 10000; i++) {
- b += i;
- }
- return b;
- }
-
- function addInLoopNoGas() internal noGasMetering returns (uint256) {
- return addInLoop();
- }
-
- function addInLoopNoGasNoGas() internal noGasMetering returns (uint256) {
- return addInLoopNoGas();
- }
-
- function bytesToUint_test(bytes memory b) private pure returns (uint256) {
- uint256 number;
- for (uint256 i = 0; i < b.length; i++) {
- number = number + uint256(uint8(b[i])) * (2 ** (8 * (b.length - (i + 1))));
- }
- return number;
- }
-
- function testFuzz_AssumeAddressIsNot(address addr) external {
- // skip over Payable and NonPayable enums
- for (uint8 i = 2; i < uint8(type(AddressType).max); i++) {
- assumeAddressIsNot(addr, AddressType(i));
- }
- assertTrue(addr != address(0));
- assertTrue(addr < address(1) || addr > address(9));
- assertTrue(addr != address(vm) || addr != 0x000000000000000000636F6e736F6c652e6c6f67);
- }
-
- function test_AssumePayable() external {
- // We deploy a mock version so we can properly test the revert.
- StdCheatsMock stdCheatsMock = new StdCheatsMock();
-
- // all should revert since these addresses are not payable
-
- // VM address
- vm.expectRevert();
- stdCheatsMock.exposed_assumePayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D);
-
- // Console address
- vm.expectRevert();
- stdCheatsMock.exposed_assumePayable(0x000000000000000000636F6e736F6c652e6c6f67);
-
- // Create2Deployer
- vm.expectRevert();
- stdCheatsMock.exposed_assumePayable(0x4e59b44847b379578588920cA78FbF26c0B4956C);
-
- // all should pass since these addresses are payable
-
- // vitalik.eth
- stdCheatsMock.exposed_assumePayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045);
-
- // mock payable contract
- MockContractPayable cp = new MockContractPayable();
- stdCheatsMock.exposed_assumePayable(address(cp));
- }
-
- function test_AssumeNotPayable() external {
- // We deploy a mock version so we can properly test the revert.
- StdCheatsMock stdCheatsMock = new StdCheatsMock();
-
- // all should pass since these addresses are not payable
-
- // VM address
- stdCheatsMock.exposed_assumeNotPayable(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D);
-
- // Console address
- stdCheatsMock.exposed_assumeNotPayable(0x000000000000000000636F6e736F6c652e6c6f67);
-
- // Create2Deployer
- stdCheatsMock.exposed_assumeNotPayable(0x4e59b44847b379578588920cA78FbF26c0B4956C);
-
- // all should revert since these addresses are payable
-
- // vitalik.eth
- vm.expectRevert();
- stdCheatsMock.exposed_assumeNotPayable(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045);
-
- // mock payable contract
- MockContractPayable cp = new MockContractPayable();
- vm.expectRevert();
- stdCheatsMock.exposed_assumeNotPayable(address(cp));
- }
-
- function testFuzz_AssumeNotPrecompile(address addr) external {
- assumeNotPrecompile(addr, getChain("optimism_goerli").chainId);
- assertTrue(
- addr < address(1) || (addr > address(9) && addr < address(0x4200000000000000000000000000000000000000))
- || addr > address(0x4200000000000000000000000000000000000800)
- );
- }
-
- function testFuzz_AssumeNotForgeAddress(address addr) external {
- assumeNotForgeAddress(addr);
- assertTrue(
- addr != address(vm) && addr != 0x000000000000000000636F6e736F6c652e6c6f67
- && addr != 0x4e59b44847b379578588920cA78FbF26c0B4956C
- );
- }
-
- function test_CannotDeployCodeTo() external {
- vm.expectRevert("StdCheats deployCodeTo(string,bytes,uint256,address): Failed to create runtime bytecode.");
- this._revertDeployCodeTo();
- }
-
- function _revertDeployCodeTo() external {
- deployCodeTo("StdCheats.t.sol:RevertingContract", address(0));
- }
-
- function test_DeployCodeTo() external {
- address arbitraryAddress = makeAddr("arbitraryAddress");
-
- deployCodeTo(
- "StdCheats.t.sol:MockContractWithConstructorArgs",
- abi.encode(uint256(6), true, bytes20(arbitraryAddress)),
- 1 ether,
- arbitraryAddress
- );
-
- MockContractWithConstructorArgs ct = MockContractWithConstructorArgs(arbitraryAddress);
-
- assertEq(arbitraryAddress.balance, 1 ether);
- assertEq(ct.x(), 6);
- assertTrue(ct.y());
- assertEq(ct.z(), bytes20(arbitraryAddress));
- }
-}
-
-contract StdCheatsMock is StdCheats {
- function exposed_assumePayable(address addr) external {
- assumePayable(addr);
- }
-
- function exposed_assumeNotPayable(address addr) external {
- assumeNotPayable(addr);
- }
-
- // We deploy a mock version so we can properly test expected reverts.
- function exposed_assumeNotBlacklisted(address token, address addr) external view {
- return assumeNotBlacklisted(token, addr);
- }
-}
-
-contract StdCheatsForkTest is Test {
- address internal constant SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE;
- address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
- address internal constant USDC_BLACKLISTED_USER = 0x1E34A77868E19A6647b1f2F47B51ed72dEDE95DD;
- address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
- address internal constant USDT_BLACKLISTED_USER = 0x8f8a8F4B54a2aAC7799d7bc81368aC27b852822A;
-
- function setUp() public {
- // All tests of the `assumeNotBlacklisted` method are fork tests using live contracts.
- vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900});
- }
-
- function test_CannotAssumeNoBlacklisted_EOA() external {
- // We deploy a mock version so we can properly test the revert.
- StdCheatsMock stdCheatsMock = new StdCheatsMock();
- address eoa = vm.addr({privateKey: 1});
- vm.expectRevert("StdCheats assumeNotBlacklisted(address,address): Token address is not a contract.");
- stdCheatsMock.exposed_assumeNotBlacklisted(eoa, address(0));
- }
-
- function testFuzz_AssumeNotBlacklisted_TokenWithoutBlacklist(address addr) external {
- assumeNotBlacklisted(SHIB, addr);
- assertTrue(true);
- }
-
- function test_AssumeNoBlacklisted_USDC() external {
- // We deploy a mock version so we can properly test the revert.
- StdCheatsMock stdCheatsMock = new StdCheatsMock();
- vm.expectRevert();
- stdCheatsMock.exposed_assumeNotBlacklisted(USDC, USDC_BLACKLISTED_USER);
- }
-
- function testFuzz_AssumeNotBlacklisted_USDC(address addr) external {
- assumeNotBlacklisted(USDC, addr);
- assertFalse(USDCLike(USDC).isBlacklisted(addr));
- }
-
- function test_AssumeNoBlacklisted_USDT() external {
- // We deploy a mock version so we can properly test the revert.
- StdCheatsMock stdCheatsMock = new StdCheatsMock();
- vm.expectRevert();
- stdCheatsMock.exposed_assumeNotBlacklisted(USDT, USDT_BLACKLISTED_USER);
- }
-
- function testFuzz_AssumeNotBlacklisted_USDT(address addr) external {
- assumeNotBlacklisted(USDT, addr);
- assertFalse(USDTLike(USDT).isBlackListed(addr));
- }
-}
-
-contract Bar {
- constructor() payable {
- /// `DEAL` STDCHEAT
- totalSupply = 10000e18;
- balanceOf[address(this)] = totalSupply;
- }
-
- /// `HOAX` and `CHANGEPRANK` STDCHEATS
- function bar(address expectedSender) public payable {
- require(msg.sender == expectedSender, "!prank");
- }
-
- function origin(address expectedSender) public payable {
- require(msg.sender == expectedSender, "!prank");
- require(tx.origin == expectedSender, "!prank");
- }
-
- function origin(address expectedSender, address expectedOrigin) public payable {
- require(msg.sender == expectedSender, "!prank");
- require(tx.origin == expectedOrigin, "!prank");
- }
-
- /// `DEAL` STDCHEAT
- mapping(address => uint256) public balanceOf;
- uint256 public totalSupply;
-}
-
-contract BarERC1155 {
- constructor() payable {
- /// `DEALERC1155` STDCHEAT
- _totalSupply[0] = 10000e18;
- _balances[0][address(this)] = _totalSupply[0];
- }
-
- function balanceOf(address account, uint256 id) public view virtual returns (uint256) {
- return _balances[id][account];
- }
-
- function totalSupply(uint256 id) public view virtual returns (uint256) {
- return _totalSupply[id];
- }
-
- /// `DEALERC1155` STDCHEAT
- mapping(uint256 => mapping(address => uint256)) private _balances;
- mapping(uint256 => uint256) private _totalSupply;
-}
-
-contract BarERC721 {
- constructor() payable {
- /// `DEALERC721` STDCHEAT
- _owners[1] = address(1);
- _balances[address(1)] = 1;
- _owners[2] = address(this);
- _owners[3] = address(this);
- _balances[address(this)] = 2;
- }
-
- function balanceOf(address owner) public view virtual returns (uint256) {
- return _balances[owner];
- }
-
- function ownerOf(uint256 tokenId) public view virtual returns (address) {
- address owner = _owners[tokenId];
- return owner;
- }
-
- mapping(uint256 => address) private _owners;
- mapping(address => uint256) private _balances;
-}
-
-interface USDCLike {
- function isBlacklisted(address) external view returns (bool);
-}
-
-interface USDTLike {
- function isBlackListed(address) external view returns (bool);
-}
-
-contract RevertingContract {
- constructor() {
- revert();
- }
-}
-
-contract MockContractWithConstructorArgs {
- uint256 public immutable x;
- bool public y;
- bytes20 public z;
-
- constructor(uint256 _x, bool _y, bytes20 _z) payable {
- x = _x;
- y = _y;
- z = _z;
- }
-}
-
-contract MockContractPayable {
- receive() external payable {}
-}
diff --git a/lib/forge-std/test/StdError.t.sol b/lib/forge-std/test/StdError.t.sol
deleted file mode 100644
index a6da60b..0000000
--- a/lib/forge-std/test/StdError.t.sol
+++ /dev/null
@@ -1,118 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.8.0 <0.9.0;
-
-import "../src/StdError.sol";
-import "../src/Test.sol";
-
-contract StdErrorsTest is Test {
- ErrorsTest test;
-
- function setUp() public {
- test = new ErrorsTest();
- }
-
- function test_ExpectAssertion() public {
- vm.expectRevert(stdError.assertionError);
- test.assertionError();
- }
-
- function test_ExpectArithmetic() public {
- vm.expectRevert(stdError.arithmeticError);
- test.arithmeticError(10);
- }
-
- function test_ExpectDiv() public {
- vm.expectRevert(stdError.divisionError);
- test.divError(0);
- }
-
- function test_ExpectMod() public {
- vm.expectRevert(stdError.divisionError);
- test.modError(0);
- }
-
- function test_ExpectEnum() public {
- vm.expectRevert(stdError.enumConversionError);
- test.enumConversion(1);
- }
-
- function test_ExpectEncodeStg() public {
- vm.expectRevert(stdError.encodeStorageError);
- test.encodeStgError();
- }
-
- function test_ExpectPop() public {
- vm.expectRevert(stdError.popError);
- test.pop();
- }
-
- function test_ExpectOOB() public {
- vm.expectRevert(stdError.indexOOBError);
- test.indexOOBError(1);
- }
-
- function test_ExpectMem() public {
- vm.expectRevert(stdError.memOverflowError);
- test.mem();
- }
-
- function test_ExpectIntern() public {
- vm.expectRevert(stdError.zeroVarError);
- test.intern();
- }
-}
-
-contract ErrorsTest {
- enum T {T1}
-
- uint256[] public someArr;
- bytes someBytes;
-
- function assertionError() public pure {
- assert(false);
- }
-
- function arithmeticError(uint256 a) public pure {
- a -= 100;
- }
-
- function divError(uint256 a) public pure {
- 100 / a;
- }
-
- function modError(uint256 a) public pure {
- 100 % a;
- }
-
- function enumConversion(uint256 a) public pure {
- T(a);
- }
-
- function encodeStgError() public {
- /// @solidity memory-safe-assembly
- assembly {
- sstore(someBytes.slot, 1)
- }
- keccak256(someBytes);
- }
-
- function pop() public {
- someArr.pop();
- }
-
- function indexOOBError(uint256 a) public pure {
- uint256[] memory t = new uint256[](0);
- t[a];
- }
-
- function mem() public pure {
- uint256 l = 2 ** 256 / 32;
- new uint256[](l);
- }
-
- function intern() public returns (uint256) {
- function(uint256) internal returns (uint256) x;
- x(2);
- return 7;
- }
-}
diff --git a/lib/forge-std/test/StdMath.t.sol b/lib/forge-std/test/StdMath.t.sol
deleted file mode 100644
index 6f50638..0000000
--- a/lib/forge-std/test/StdMath.t.sol
+++ /dev/null
@@ -1,212 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.8.0 <0.9.0;
-
-import "../src/StdMath.sol";
-import "../src/Test.sol";
-
-contract StdMathMock is Test {
- function exposed_percentDelta(uint256 a, uint256 b) public pure returns (uint256) {
- return stdMath.percentDelta(a, b);
- }
-
- function exposed_percentDelta(int256 a, int256 b) public pure returns (uint256) {
- return stdMath.percentDelta(a, b);
- }
-}
-
-contract StdMathTest is Test {
- function test_GetAbs() external {
- assertEq(stdMath.abs(-50), 50);
- assertEq(stdMath.abs(50), 50);
- assertEq(stdMath.abs(-1337), 1337);
- assertEq(stdMath.abs(0), 0);
-
- assertEq(stdMath.abs(type(int256).min), (type(uint256).max >> 1) + 1);
- assertEq(stdMath.abs(type(int256).max), (type(uint256).max >> 1));
- }
-
- function testFuzz_GetAbs(int256 a) external {
- uint256 manualAbs = getAbs(a);
-
- uint256 abs = stdMath.abs(a);
-
- assertEq(abs, manualAbs);
- }
-
- function test_GetDelta_Uint() external {
- assertEq(stdMath.delta(uint256(0), uint256(0)), 0);
- assertEq(stdMath.delta(uint256(0), uint256(1337)), 1337);
- assertEq(stdMath.delta(uint256(0), type(uint64).max), type(uint64).max);
- assertEq(stdMath.delta(uint256(0), type(uint128).max), type(uint128).max);
- assertEq(stdMath.delta(uint256(0), type(uint256).max), type(uint256).max);
-
- assertEq(stdMath.delta(0, uint256(0)), 0);
- assertEq(stdMath.delta(1337, uint256(0)), 1337);
- assertEq(stdMath.delta(type(uint64).max, uint256(0)), type(uint64).max);
- assertEq(stdMath.delta(type(uint128).max, uint256(0)), type(uint128).max);
- assertEq(stdMath.delta(type(uint256).max, uint256(0)), type(uint256).max);
-
- assertEq(stdMath.delta(1337, uint256(1337)), 0);
- assertEq(stdMath.delta(type(uint256).max, type(uint256).max), 0);
- assertEq(stdMath.delta(5000, uint256(1250)), 3750);
- }
-
- function testFuzz_GetDelta_Uint(uint256 a, uint256 b) external {
- uint256 manualDelta;
- if (a > b) {
- manualDelta = a - b;
- } else {
- manualDelta = b - a;
- }
-
- uint256 delta = stdMath.delta(a, b);
-
- assertEq(delta, manualDelta);
- }
-
- function test_GetDelta_Int() external {
- assertEq(stdMath.delta(int256(0), int256(0)), 0);
- assertEq(stdMath.delta(int256(0), int256(1337)), 1337);
- assertEq(stdMath.delta(int256(0), type(int64).max), type(uint64).max >> 1);
- assertEq(stdMath.delta(int256(0), type(int128).max), type(uint128).max >> 1);
- assertEq(stdMath.delta(int256(0), type(int256).max), type(uint256).max >> 1);
-
- assertEq(stdMath.delta(0, int256(0)), 0);
- assertEq(stdMath.delta(1337, int256(0)), 1337);
- assertEq(stdMath.delta(type(int64).max, int256(0)), type(uint64).max >> 1);
- assertEq(stdMath.delta(type(int128).max, int256(0)), type(uint128).max >> 1);
- assertEq(stdMath.delta(type(int256).max, int256(0)), type(uint256).max >> 1);
-
- assertEq(stdMath.delta(-0, int256(0)), 0);
- assertEq(stdMath.delta(-1337, int256(0)), 1337);
- assertEq(stdMath.delta(type(int64).min, int256(0)), (type(uint64).max >> 1) + 1);
- assertEq(stdMath.delta(type(int128).min, int256(0)), (type(uint128).max >> 1) + 1);
- assertEq(stdMath.delta(type(int256).min, int256(0)), (type(uint256).max >> 1) + 1);
-
- assertEq(stdMath.delta(int256(0), -0), 0);
- assertEq(stdMath.delta(int256(0), -1337), 1337);
- assertEq(stdMath.delta(int256(0), type(int64).min), (type(uint64).max >> 1) + 1);
- assertEq(stdMath.delta(int256(0), type(int128).min), (type(uint128).max >> 1) + 1);
- assertEq(stdMath.delta(int256(0), type(int256).min), (type(uint256).max >> 1) + 1);
-
- assertEq(stdMath.delta(1337, int256(1337)), 0);
- assertEq(stdMath.delta(type(int256).max, type(int256).max), 0);
- assertEq(stdMath.delta(type(int256).min, type(int256).min), 0);
- assertEq(stdMath.delta(type(int256).min, type(int256).max), type(uint256).max);
- assertEq(stdMath.delta(5000, int256(1250)), 3750);
- }
-
- function testFuzz_GetDelta_Int(int256 a, int256 b) external {
- uint256 absA = getAbs(a);
- uint256 absB = getAbs(b);
- uint256 absDelta = absA > absB ? absA - absB : absB - absA;
-
- uint256 manualDelta;
- if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) {
- manualDelta = absDelta;
- }
- // (a < 0 && b >= 0) || (a >= 0 && b < 0)
- else {
- manualDelta = absA + absB;
- }
-
- uint256 delta = stdMath.delta(a, b);
-
- assertEq(delta, manualDelta);
- }
-
- function test_GetPercentDelta_Uint() external {
- StdMathMock stdMathMock = new StdMathMock();
-
- assertEq(stdMath.percentDelta(uint256(0), uint256(1337)), 1e18);
- assertEq(stdMath.percentDelta(uint256(0), type(uint64).max), 1e18);
- assertEq(stdMath.percentDelta(uint256(0), type(uint128).max), 1e18);
- assertEq(stdMath.percentDelta(uint256(0), type(uint192).max), 1e18);
-
- assertEq(stdMath.percentDelta(1337, uint256(1337)), 0);
- assertEq(stdMath.percentDelta(type(uint192).max, type(uint192).max), 0);
- assertEq(stdMath.percentDelta(0, uint256(2500)), 1e18);
- assertEq(stdMath.percentDelta(2500, uint256(2500)), 0);
- assertEq(stdMath.percentDelta(5000, uint256(2500)), 1e18);
- assertEq(stdMath.percentDelta(7500, uint256(2500)), 2e18);
-
- vm.expectRevert(stdError.divisionError);
- stdMathMock.exposed_percentDelta(uint256(1), 0);
- }
-
- function testFuzz_GetPercentDelta_Uint(uint192 a, uint192 b) external {
- vm.assume(b != 0);
- uint256 manualDelta;
- if (a > b) {
- manualDelta = a - b;
- } else {
- manualDelta = b - a;
- }
-
- uint256 manualPercentDelta = manualDelta * 1e18 / b;
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- assertEq(percentDelta, manualPercentDelta);
- }
-
- function test_GetPercentDelta_Int() external {
- // We deploy a mock version so we can properly test the revert.
- StdMathMock stdMathMock = new StdMathMock();
-
- assertEq(stdMath.percentDelta(int256(0), int256(1337)), 1e18);
- assertEq(stdMath.percentDelta(int256(0), -1337), 1e18);
- assertEq(stdMath.percentDelta(int256(0), type(int64).min), 1e18);
- assertEq(stdMath.percentDelta(int256(0), type(int128).min), 1e18);
- assertEq(stdMath.percentDelta(int256(0), type(int192).min), 1e18);
- assertEq(stdMath.percentDelta(int256(0), type(int64).max), 1e18);
- assertEq(stdMath.percentDelta(int256(0), type(int128).max), 1e18);
- assertEq(stdMath.percentDelta(int256(0), type(int192).max), 1e18);
-
- assertEq(stdMath.percentDelta(1337, int256(1337)), 0);
- assertEq(stdMath.percentDelta(type(int192).max, type(int192).max), 0);
- assertEq(stdMath.percentDelta(type(int192).min, type(int192).min), 0);
-
- assertEq(stdMath.percentDelta(type(int192).min, type(int192).max), 2e18); // rounds the 1 wei diff down
- assertEq(stdMath.percentDelta(type(int192).max, type(int192).min), 2e18 - 1); // rounds the 1 wei diff down
- assertEq(stdMath.percentDelta(0, int256(2500)), 1e18);
- assertEq(stdMath.percentDelta(2500, int256(2500)), 0);
- assertEq(stdMath.percentDelta(5000, int256(2500)), 1e18);
- assertEq(stdMath.percentDelta(7500, int256(2500)), 2e18);
-
- vm.expectRevert(stdError.divisionError);
- stdMathMock.exposed_percentDelta(int256(1), 0);
- }
-
- function testFuzz_GetPercentDelta_Int(int192 a, int192 b) external {
- vm.assume(b != 0);
- uint256 absA = getAbs(a);
- uint256 absB = getAbs(b);
- uint256 absDelta = absA > absB ? absA - absB : absB - absA;
-
- uint256 manualDelta;
- if ((a >= 0 && b >= 0) || (a < 0 && b < 0)) {
- manualDelta = absDelta;
- }
- // (a < 0 && b >= 0) || (a >= 0 && b < 0)
- else {
- manualDelta = absA + absB;
- }
-
- uint256 manualPercentDelta = manualDelta * 1e18 / absB;
- uint256 percentDelta = stdMath.percentDelta(a, b);
-
- assertEq(percentDelta, manualPercentDelta);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- HELPERS
- //////////////////////////////////////////////////////////////////////////*/
-
- function getAbs(int256 a) private pure returns (uint256) {
- if (a < 0) {
- return a == type(int256).min ? uint256(type(int256).max) + 1 : uint256(-a);
- }
-
- return uint256(a);
- }
-}
diff --git a/lib/forge-std/test/StdStorage.t.sol b/lib/forge-std/test/StdStorage.t.sol
deleted file mode 100644
index 0b3ca9b..0000000
--- a/lib/forge-std/test/StdStorage.t.sol
+++ /dev/null
@@ -1,315 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.7.0 <0.9.0;
-
-import "../src/StdStorage.sol";
-import "../src/Test.sol";
-
-contract StdStorageTest is Test {
- using stdStorage for StdStorage;
-
- StorageTest internal test;
-
- function setUp() public {
- test = new StorageTest();
- }
-
- function test_StorageHidden() public {
- assertEq(uint256(keccak256("my.random.var")), stdstore.target(address(test)).sig("hidden()").find());
- }
-
- function test_StorageObvious() public {
- assertEq(uint256(0), stdstore.target(address(test)).sig("exists()").find());
- }
-
- function test_StorageExtraSload() public {
- assertEq(16, stdstore.target(address(test)).sig(test.extra_sload.selector).find());
- }
-
- function test_StorageCheckedWriteHidden() public {
- stdstore.target(address(test)).sig(test.hidden.selector).checked_write(100);
- assertEq(uint256(test.hidden()), 100);
- }
-
- function test_StorageCheckedWriteObvious() public {
- stdstore.target(address(test)).sig(test.exists.selector).checked_write(100);
- assertEq(test.exists(), 100);
- }
-
- function test_StorageCheckedWriteSignedIntegerHidden() public {
- stdstore.target(address(test)).sig(test.hidden.selector).checked_write_int(-100);
- assertEq(int256(uint256(test.hidden())), -100);
- }
-
- function test_StorageCheckedWriteSignedIntegerObvious() public {
- stdstore.target(address(test)).sig(test.tG.selector).checked_write_int(-100);
- assertEq(test.tG(), -100);
- }
-
- function test_StorageMapStructA() public {
- uint256 slot =
- stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).find();
- assertEq(uint256(keccak256(abi.encode(address(this), 4))), slot);
- }
-
- function test_StorageMapStructB() public {
- uint256 slot =
- stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).find();
- assertEq(uint256(keccak256(abi.encode(address(this), 4))) + 1, slot);
- }
-
- function test_StorageDeepMap() public {
- uint256 slot = stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(
- address(this)
- ).find();
- assertEq(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(5)))))), slot);
- }
-
- function test_StorageCheckedWriteDeepMap() public {
- stdstore.target(address(test)).sig(test.deep_map.selector).with_key(address(this)).with_key(address(this))
- .checked_write(100);
- assertEq(100, test.deep_map(address(this), address(this)));
- }
-
- function test_StorageDeepMapStructA() public {
- uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this))
- .with_key(address(this)).depth(0).find();
- assertEq(
- bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 0),
- bytes32(slot)
- );
- }
-
- function test_StorageDeepMapStructB() public {
- uint256 slot = stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this))
- .with_key(address(this)).depth(1).find();
- assertEq(
- bytes32(uint256(keccak256(abi.encode(address(this), keccak256(abi.encode(address(this), uint256(6)))))) + 1),
- bytes32(slot)
- );
- }
-
- function test_StorageCheckedWriteDeepMapStructA() public {
- stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key(
- address(this)
- ).depth(0).checked_write(100);
- (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this));
- assertEq(100, a);
- assertEq(0, b);
- }
-
- function test_StorageCheckedWriteDeepMapStructB() public {
- stdstore.target(address(test)).sig(test.deep_map_struct.selector).with_key(address(this)).with_key(
- address(this)
- ).depth(1).checked_write(100);
- (uint256 a, uint256 b) = test.deep_map_struct(address(this), address(this));
- assertEq(0, a);
- assertEq(100, b);
- }
-
- function test_StorageCheckedWriteMapStructA() public {
- stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(0).checked_write(100);
- (uint256 a, uint256 b) = test.map_struct(address(this));
- assertEq(a, 100);
- assertEq(b, 0);
- }
-
- function test_StorageCheckedWriteMapStructB() public {
- stdstore.target(address(test)).sig(test.map_struct.selector).with_key(address(this)).depth(1).checked_write(100);
- (uint256 a, uint256 b) = test.map_struct(address(this));
- assertEq(a, 0);
- assertEq(b, 100);
- }
-
- function test_StorageStructA() public {
- uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(0).find();
- assertEq(uint256(7), slot);
- }
-
- function test_StorageStructB() public {
- uint256 slot = stdstore.target(address(test)).sig(test.basic.selector).depth(1).find();
- assertEq(uint256(7) + 1, slot);
- }
-
- function test_StorageCheckedWriteStructA() public {
- stdstore.target(address(test)).sig(test.basic.selector).depth(0).checked_write(100);
- (uint256 a, uint256 b) = test.basic();
- assertEq(a, 100);
- assertEq(b, 1337);
- }
-
- function test_StorageCheckedWriteStructB() public {
- stdstore.target(address(test)).sig(test.basic.selector).depth(1).checked_write(100);
- (uint256 a, uint256 b) = test.basic();
- assertEq(a, 1337);
- assertEq(b, 100);
- }
-
- function test_StorageMapAddrFound() public {
- uint256 slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).find();
- assertEq(uint256(keccak256(abi.encode(address(this), uint256(1)))), slot);
- }
-
- function test_StorageMapAddrRoot() public {
- (uint256 slot, bytes32 key) =
- stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).parent();
- assertEq(address(uint160(uint256(key))), address(this));
- assertEq(uint256(1), slot);
- slot = stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).root();
- assertEq(uint256(1), slot);
- }
-
- function test_StorageMapUintFound() public {
- uint256 slot = stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).find();
- assertEq(uint256(keccak256(abi.encode(100, uint256(2)))), slot);
- }
-
- function test_StorageCheckedWriteMapUint() public {
- stdstore.target(address(test)).sig(test.map_uint.selector).with_key(100).checked_write(100);
- assertEq(100, test.map_uint(100));
- }
-
- function test_StorageCheckedWriteMapAddr() public {
- stdstore.target(address(test)).sig(test.map_addr.selector).with_key(address(this)).checked_write(100);
- assertEq(100, test.map_addr(address(this)));
- }
-
- function test_StorageCheckedWriteMapBool() public {
- stdstore.target(address(test)).sig(test.map_bool.selector).with_key(address(this)).checked_write(true);
- assertTrue(test.map_bool(address(this)));
- }
-
- function testFail_StorageCheckedWriteMapPacked() public {
- // expect PackedSlot error but not external call so cant expectRevert
- stdstore.target(address(test)).sig(test.read_struct_lower.selector).with_key(address(uint160(1337)))
- .checked_write(100);
- }
-
- function test_StorageCheckedWriteMapPackedSuccess() public {
- uint256 full = test.map_packed(address(1337));
- // keep upper 128, set lower 128 to 1337
- full = (full & (uint256((1 << 128) - 1) << 128)) | 1337;
- stdstore.target(address(test)).sig(test.map_packed.selector).with_key(address(uint160(1337))).checked_write(
- full
- );
- assertEq(1337, test.read_struct_lower(address(1337)));
- }
-
- function testFail_StorageConst() public {
- // vm.expectRevert(abi.encodeWithSignature("NotStorage(bytes4)", bytes4(keccak256("const()"))));
- stdstore.target(address(test)).sig("const()").find();
- }
-
- function testFail_StorageNativePack() public {
- stdstore.target(address(test)).sig(test.tA.selector).find();
- stdstore.target(address(test)).sig(test.tB.selector).find();
-
- // these both would fail
- stdstore.target(address(test)).sig(test.tC.selector).find();
- stdstore.target(address(test)).sig(test.tD.selector).find();
- }
-
- function test_StorageReadBytes32() public {
- bytes32 val = stdstore.target(address(test)).sig(test.tE.selector).read_bytes32();
- assertEq(val, hex"1337");
- }
-
- function test_StorageReadBool_False() public {
- bool val = stdstore.target(address(test)).sig(test.tB.selector).read_bool();
- assertEq(val, false);
- }
-
- function test_StorageReadBool_True() public {
- bool val = stdstore.target(address(test)).sig(test.tH.selector).read_bool();
- assertEq(val, true);
- }
-
- function test_StorageReadBool_Revert() public {
- vm.expectRevert("stdStorage read_bool(StdStorage): Cannot decode. Make sure you are reading a bool.");
- this.readNonBoolValue();
- }
-
- function readNonBoolValue() public {
- stdstore.target(address(test)).sig(test.tE.selector).read_bool();
- }
-
- function test_StorageReadAddress() public {
- address val = stdstore.target(address(test)).sig(test.tF.selector).read_address();
- assertEq(val, address(1337));
- }
-
- function test_StorageReadUint() public {
- uint256 val = stdstore.target(address(test)).sig(test.exists.selector).read_uint();
- assertEq(val, 1);
- }
-
- function test_StorageReadInt() public {
- int256 val = stdstore.target(address(test)).sig(test.tG.selector).read_int();
- assertEq(val, type(int256).min);
- }
-}
-
-contract StorageTest {
- uint256 public exists = 1;
- mapping(address => uint256) public map_addr;
- mapping(uint256 => uint256) public map_uint;
- mapping(address => uint256) public map_packed;
- mapping(address => UnpackedStruct) public map_struct;
- mapping(address => mapping(address => uint256)) public deep_map;
- mapping(address => mapping(address => UnpackedStruct)) public deep_map_struct;
- UnpackedStruct public basic;
-
- uint248 public tA;
- bool public tB;
-
- bool public tC = false;
- uint248 public tD = 1;
-
- struct UnpackedStruct {
- uint256 a;
- uint256 b;
- }
-
- mapping(address => bool) public map_bool;
-
- bytes32 public tE = hex"1337";
- address public tF = address(1337);
- int256 public tG = type(int256).min;
- bool public tH = true;
- bytes32 private tI = ~bytes32(hex"1337");
-
- constructor() {
- basic = UnpackedStruct({a: 1337, b: 1337});
-
- uint256 two = (1 << 128) | 1;
- map_packed[msg.sender] = two;
- map_packed[address(uint160(1337))] = 1 << 128;
- }
-
- function read_struct_upper(address who) public view returns (uint256) {
- return map_packed[who] >> 128;
- }
-
- function read_struct_lower(address who) public view returns (uint256) {
- return map_packed[who] & ((1 << 128) - 1);
- }
-
- function hidden() public view returns (bytes32 t) {
- bytes32 slot = keccak256("my.random.var");
- /// @solidity memory-safe-assembly
- assembly {
- t := sload(slot)
- }
- }
-
- function const() public pure returns (bytes32 t) {
- t = bytes32(hex"1337");
- }
-
- function extra_sload() public view returns (bytes32 t) {
- // trigger read on slot `tE`, and make a staticcall to make sure compiler doesn't optimize this SLOAD away
- assembly {
- pop(staticcall(gas(), sload(tE.slot), 0, 0, 0, 0))
- }
- t = tI;
- }
-}
diff --git a/lib/forge-std/test/StdStyle.t.sol b/lib/forge-std/test/StdStyle.t.sol
deleted file mode 100644
index e12c005..0000000
--- a/lib/forge-std/test/StdStyle.t.sol
+++ /dev/null
@@ -1,110 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.7.0 <0.9.0;
-
-import "../src/Test.sol";
-
-contract StdStyleTest is Test {
- function test_StyleColor() public pure {
- console2.log(StdStyle.red("StdStyle.red String Test"));
- console2.log(StdStyle.red(uint256(10e18)));
- console2.log(StdStyle.red(int256(-10e18)));
- console2.log(StdStyle.red(true));
- console2.log(StdStyle.red(address(0)));
- console2.log(StdStyle.redBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.redBytes32("StdStyle.redBytes32"));
- console2.log(StdStyle.green("StdStyle.green String Test"));
- console2.log(StdStyle.green(uint256(10e18)));
- console2.log(StdStyle.green(int256(-10e18)));
- console2.log(StdStyle.green(true));
- console2.log(StdStyle.green(address(0)));
- console2.log(StdStyle.greenBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.greenBytes32("StdStyle.greenBytes32"));
- console2.log(StdStyle.yellow("StdStyle.yellow String Test"));
- console2.log(StdStyle.yellow(uint256(10e18)));
- console2.log(StdStyle.yellow(int256(-10e18)));
- console2.log(StdStyle.yellow(true));
- console2.log(StdStyle.yellow(address(0)));
- console2.log(StdStyle.yellowBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.yellowBytes32("StdStyle.yellowBytes32"));
- console2.log(StdStyle.blue("StdStyle.blue String Test"));
- console2.log(StdStyle.blue(uint256(10e18)));
- console2.log(StdStyle.blue(int256(-10e18)));
- console2.log(StdStyle.blue(true));
- console2.log(StdStyle.blue(address(0)));
- console2.log(StdStyle.blueBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.blueBytes32("StdStyle.blueBytes32"));
- console2.log(StdStyle.magenta("StdStyle.magenta String Test"));
- console2.log(StdStyle.magenta(uint256(10e18)));
- console2.log(StdStyle.magenta(int256(-10e18)));
- console2.log(StdStyle.magenta(true));
- console2.log(StdStyle.magenta(address(0)));
- console2.log(StdStyle.magentaBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.magentaBytes32("StdStyle.magentaBytes32"));
- console2.log(StdStyle.cyan("StdStyle.cyan String Test"));
- console2.log(StdStyle.cyan(uint256(10e18)));
- console2.log(StdStyle.cyan(int256(-10e18)));
- console2.log(StdStyle.cyan(true));
- console2.log(StdStyle.cyan(address(0)));
- console2.log(StdStyle.cyanBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.cyanBytes32("StdStyle.cyanBytes32"));
- }
-
- function test_StyleFontWeight() public pure {
- console2.log(StdStyle.bold("StdStyle.bold String Test"));
- console2.log(StdStyle.bold(uint256(10e18)));
- console2.log(StdStyle.bold(int256(-10e18)));
- console2.log(StdStyle.bold(address(0)));
- console2.log(StdStyle.bold(true));
- console2.log(StdStyle.boldBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.boldBytes32("StdStyle.boldBytes32"));
- console2.log(StdStyle.dim("StdStyle.dim String Test"));
- console2.log(StdStyle.dim(uint256(10e18)));
- console2.log(StdStyle.dim(int256(-10e18)));
- console2.log(StdStyle.dim(address(0)));
- console2.log(StdStyle.dim(true));
- console2.log(StdStyle.dimBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.dimBytes32("StdStyle.dimBytes32"));
- console2.log(StdStyle.italic("StdStyle.italic String Test"));
- console2.log(StdStyle.italic(uint256(10e18)));
- console2.log(StdStyle.italic(int256(-10e18)));
- console2.log(StdStyle.italic(address(0)));
- console2.log(StdStyle.italic(true));
- console2.log(StdStyle.italicBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.italicBytes32("StdStyle.italicBytes32"));
- console2.log(StdStyle.underline("StdStyle.underline String Test"));
- console2.log(StdStyle.underline(uint256(10e18)));
- console2.log(StdStyle.underline(int256(-10e18)));
- console2.log(StdStyle.underline(address(0)));
- console2.log(StdStyle.underline(true));
- console2.log(StdStyle.underlineBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.underlineBytes32("StdStyle.underlineBytes32"));
- console2.log(StdStyle.inverse("StdStyle.inverse String Test"));
- console2.log(StdStyle.inverse(uint256(10e18)));
- console2.log(StdStyle.inverse(int256(-10e18)));
- console2.log(StdStyle.inverse(address(0)));
- console2.log(StdStyle.inverse(true));
- console2.log(StdStyle.inverseBytes(hex"7109709ECfa91a80626fF3989D68f67F5b1DD12D"));
- console2.log(StdStyle.inverseBytes32("StdStyle.inverseBytes32"));
- }
-
- function test_StyleCombined() public pure {
- console2.log(StdStyle.red(StdStyle.bold("Red Bold String Test")));
- console2.log(StdStyle.green(StdStyle.dim(uint256(10e18))));
- console2.log(StdStyle.yellow(StdStyle.italic(int256(-10e18))));
- console2.log(StdStyle.blue(StdStyle.underline(address(0))));
- console2.log(StdStyle.magenta(StdStyle.inverse(true)));
- }
-
- function test_StyleCustom() public pure {
- console2.log(h1("Custom Style 1"));
- console2.log(h2("Custom Style 2"));
- }
-
- function h1(string memory a) private pure returns (string memory) {
- return StdStyle.cyan(StdStyle.inverse(StdStyle.bold(a)));
- }
-
- function h2(string memory a) private pure returns (string memory) {
- return StdStyle.magenta(StdStyle.bold(StdStyle.underline(a)));
- }
-}
diff --git a/lib/forge-std/test/StdUtils.t.sol b/lib/forge-std/test/StdUtils.t.sol
deleted file mode 100644
index 386e3a8..0000000
--- a/lib/forge-std/test/StdUtils.t.sol
+++ /dev/null
@@ -1,342 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.7.0 <0.9.0;
-
-import "../src/Test.sol";
-
-contract StdUtilsMock is StdUtils {
- // We deploy a mock version so we can properly test expected reverts.
- function exposed_getTokenBalances(address token, address[] memory addresses)
- external
- returns (uint256[] memory balances)
- {
- return getTokenBalances(token, addresses);
- }
-
- function exposed_bound(int256 num, int256 min, int256 max) external view returns (int256) {
- return bound(num, min, max);
- }
-
- function exposed_bound(uint256 num, uint256 min, uint256 max) external view returns (uint256) {
- return bound(num, min, max);
- }
-
- function exposed_bytesToUint(bytes memory b) external pure returns (uint256) {
- return bytesToUint(b);
- }
-}
-
-contract StdUtilsTest is Test {
- /*//////////////////////////////////////////////////////////////////////////
- BOUND UINT
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_Bound() public {
- assertEq(bound(uint256(5), 0, 4), 0);
- assertEq(bound(uint256(0), 69, 69), 69);
- assertEq(bound(uint256(0), 68, 69), 68);
- assertEq(bound(uint256(10), 150, 190), 174);
- assertEq(bound(uint256(300), 2800, 3200), 3107);
- assertEq(bound(uint256(9999), 1337, 6666), 4669);
- }
-
- function test_Bound_WithinRange() public {
- assertEq(bound(uint256(51), 50, 150), 51);
- assertEq(bound(uint256(51), 50, 150), bound(bound(uint256(51), 50, 150), 50, 150));
- assertEq(bound(uint256(149), 50, 150), 149);
- assertEq(bound(uint256(149), 50, 150), bound(bound(uint256(149), 50, 150), 50, 150));
- }
-
- function test_Bound_EdgeCoverage() public {
- assertEq(bound(uint256(0), 50, 150), 50);
- assertEq(bound(uint256(1), 50, 150), 51);
- assertEq(bound(uint256(2), 50, 150), 52);
- assertEq(bound(uint256(3), 50, 150), 53);
- assertEq(bound(type(uint256).max, 50, 150), 150);
- assertEq(bound(type(uint256).max - 1, 50, 150), 149);
- assertEq(bound(type(uint256).max - 2, 50, 150), 148);
- assertEq(bound(type(uint256).max - 3, 50, 150), 147);
- }
-
- function test_Bound_DistributionIsEven(uint256 min, uint256 size) public {
- size = size % 100 + 1;
- min = bound(min, UINT256_MAX / 2, UINT256_MAX / 2 + size);
- uint256 max = min + size - 1;
- uint256 result;
-
- for (uint256 i = 1; i <= size * 4; ++i) {
- // x > max
- result = bound(max + i, min, max);
- assertEq(result, min + (i - 1) % size);
- // x < min
- result = bound(min - i, min, max);
- assertEq(result, max - (i - 1) % size);
- }
- }
-
- function test_Bound(uint256 num, uint256 min, uint256 max) public {
- if (min > max) (min, max) = (max, min);
-
- uint256 result = bound(num, min, max);
-
- assertGe(result, min);
- assertLe(result, max);
- assertEq(result, bound(result, min, max));
- if (num >= min && num <= max) assertEq(result, num);
- }
-
- function test_BoundUint256Max() public {
- assertEq(bound(0, type(uint256).max - 1, type(uint256).max), type(uint256).max - 1);
- assertEq(bound(1, type(uint256).max - 1, type(uint256).max), type(uint256).max);
- }
-
- function test_CannotBoundMaxLessThanMin() public {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min."));
- stdUtils.exposed_bound(uint256(5), 100, 10);
- }
-
- function test_CannotBoundMaxLessThanMin(uint256 num, uint256 min, uint256 max) public {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- vm.assume(min > max);
- vm.expectRevert(bytes("StdUtils bound(uint256,uint256,uint256): Max is less than min."));
- stdUtils.exposed_bound(num, min, max);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- BOUND INT
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_BoundInt() public {
- assertEq(bound(-3, 0, 4), 2);
- assertEq(bound(0, -69, -69), -69);
- assertEq(bound(0, -69, -68), -68);
- assertEq(bound(-10, 150, 190), 154);
- assertEq(bound(-300, 2800, 3200), 2908);
- assertEq(bound(9999, -1337, 6666), 1995);
- }
-
- function test_BoundInt_WithinRange() public {
- assertEq(bound(51, -50, 150), 51);
- assertEq(bound(51, -50, 150), bound(bound(51, -50, 150), -50, 150));
- assertEq(bound(149, -50, 150), 149);
- assertEq(bound(149, -50, 150), bound(bound(149, -50, 150), -50, 150));
- }
-
- function test_BoundInt_EdgeCoverage() public {
- assertEq(bound(type(int256).min, -50, 150), -50);
- assertEq(bound(type(int256).min + 1, -50, 150), -49);
- assertEq(bound(type(int256).min + 2, -50, 150), -48);
- assertEq(bound(type(int256).min + 3, -50, 150), -47);
- assertEq(bound(type(int256).min, 10, 150), 10);
- assertEq(bound(type(int256).min + 1, 10, 150), 11);
- assertEq(bound(type(int256).min + 2, 10, 150), 12);
- assertEq(bound(type(int256).min + 3, 10, 150), 13);
-
- assertEq(bound(type(int256).max, -50, 150), 150);
- assertEq(bound(type(int256).max - 1, -50, 150), 149);
- assertEq(bound(type(int256).max - 2, -50, 150), 148);
- assertEq(bound(type(int256).max - 3, -50, 150), 147);
- assertEq(bound(type(int256).max, -50, -10), -10);
- assertEq(bound(type(int256).max - 1, -50, -10), -11);
- assertEq(bound(type(int256).max - 2, -50, -10), -12);
- assertEq(bound(type(int256).max - 3, -50, -10), -13);
- }
-
- function test_BoundInt_DistributionIsEven(int256 min, uint256 size) public {
- size = size % 100 + 1;
- min = bound(min, -int256(size / 2), int256(size - size / 2));
- int256 max = min + int256(size) - 1;
- int256 result;
-
- for (uint256 i = 1; i <= size * 4; ++i) {
- // x > max
- result = bound(max + int256(i), min, max);
- assertEq(result, min + int256((i - 1) % size));
- // x < min
- result = bound(min - int256(i), min, max);
- assertEq(result, max - int256((i - 1) % size));
- }
- }
-
- function test_BoundInt(int256 num, int256 min, int256 max) public {
- if (min > max) (min, max) = (max, min);
-
- int256 result = bound(num, min, max);
-
- assertGe(result, min);
- assertLe(result, max);
- assertEq(result, bound(result, min, max));
- if (num >= min && num <= max) assertEq(result, num);
- }
-
- function test_BoundIntInt256Max() public {
- assertEq(bound(0, type(int256).max - 1, type(int256).max), type(int256).max - 1);
- assertEq(bound(1, type(int256).max - 1, type(int256).max), type(int256).max);
- }
-
- function test_BoundIntInt256Min() public {
- assertEq(bound(0, type(int256).min, type(int256).min + 1), type(int256).min);
- assertEq(bound(1, type(int256).min, type(int256).min + 1), type(int256).min + 1);
- }
-
- function test_CannotBoundIntMaxLessThanMin() public {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min."));
- stdUtils.exposed_bound(-5, 100, 10);
- }
-
- function test_CannotBoundIntMaxLessThanMin(int256 num, int256 min, int256 max) public {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- vm.assume(min > max);
- vm.expectRevert(bytes("StdUtils bound(int256,int256,int256): Max is less than min."));
- stdUtils.exposed_bound(num, min, max);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- BOUND PRIVATE KEY
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_BoundPrivateKey() public {
- assertEq(boundPrivateKey(0), 1);
- assertEq(boundPrivateKey(1), 1);
- assertEq(boundPrivateKey(300), 300);
- assertEq(boundPrivateKey(9999), 9999);
- assertEq(boundPrivateKey(SECP256K1_ORDER - 1), SECP256K1_ORDER - 1);
- assertEq(boundPrivateKey(SECP256K1_ORDER), 1);
- assertEq(boundPrivateKey(SECP256K1_ORDER + 1), 2);
- assertEq(boundPrivateKey(UINT256_MAX), UINT256_MAX & SECP256K1_ORDER - 1); // x&y is equivalent to x-x%y
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- BYTES TO UINT
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_BytesToUint() external {
- bytes memory maxUint = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
- bytes memory two = hex"02";
- bytes memory millionEther = hex"d3c21bcecceda1000000";
-
- assertEq(bytesToUint(maxUint), type(uint256).max);
- assertEq(bytesToUint(two), 2);
- assertEq(bytesToUint(millionEther), 1_000_000 ether);
- }
-
- function test_CannotConvertGT32Bytes() external {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- bytes memory thirty3Bytes = hex"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
- vm.expectRevert("StdUtils bytesToUint(bytes): Bytes length exceeds 32.");
- stdUtils.exposed_bytesToUint(thirty3Bytes);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- COMPUTE CREATE ADDRESS
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_ComputeCreateAddress() external {
- address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9;
- uint256 nonce = 14;
- address createAddress = computeCreateAddress(deployer, nonce);
- assertEq(createAddress, 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);
- }
-
- /*//////////////////////////////////////////////////////////////////////////
- COMPUTE CREATE2 ADDRESS
- //////////////////////////////////////////////////////////////////////////*/
-
- function test_ComputeCreate2Address() external {
- bytes32 salt = bytes32(uint256(31415));
- bytes32 initcodeHash = keccak256(abi.encode(0x6080));
- address deployer = 0x6C9FC64A53c1b71FB3f9Af64d1ae3A4931A5f4E9;
- address create2Address = computeCreate2Address(salt, initcodeHash, deployer);
- assertEq(create2Address, 0xB147a5d25748fda14b463EB04B111027C290f4d3);
- }
-
- function test_ComputeCreate2AddressWithDefaultDeployer() external {
- bytes32 salt = 0xc290c670fde54e5ef686f9132cbc8711e76a98f0333a438a92daa442c71403c0;
- bytes32 initcodeHash = hashInitCode(hex"6080", "");
- assertEq(initcodeHash, 0x1a578b7a4b0b5755db6d121b4118d4bc68fe170dca840c59bc922f14175a76b0);
- address create2Address = computeCreate2Address(salt, initcodeHash);
- assertEq(create2Address, 0xc0ffEe2198a06235aAbFffe5Db0CacF1717f5Ac6);
- }
-}
-
-contract StdUtilsForkTest is Test {
- /*//////////////////////////////////////////////////////////////////////////
- GET TOKEN BALANCES
- //////////////////////////////////////////////////////////////////////////*/
-
- address internal SHIB = 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE;
- address internal SHIB_HOLDER_0 = 0x855F5981e831D83e6A4b4EBFCAdAa68D92333170;
- address internal SHIB_HOLDER_1 = 0x8F509A90c2e47779cA408Fe00d7A72e359229AdA;
- address internal SHIB_HOLDER_2 = 0x0e3bbc0D04fF62211F71f3e4C45d82ad76224385;
-
- address internal USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
- address internal USDC_HOLDER_0 = 0xDa9CE944a37d218c3302F6B82a094844C6ECEb17;
- address internal USDC_HOLDER_1 = 0x3e67F4721E6d1c41a015f645eFa37BEd854fcf52;
-
- function setUp() public {
- // All tests of the `getTokenBalances` method are fork tests using live contracts.
- vm.createSelectFork({urlOrAlias: "mainnet", blockNumber: 16_428_900});
- }
-
- function test_CannotGetTokenBalances_NonTokenContract() external {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- // The UniswapV2Factory contract has neither a `balanceOf` function nor a fallback function,
- // so the `balanceOf` call should revert.
- address token = address(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
- address[] memory addresses = new address[](1);
- addresses[0] = USDC_HOLDER_0;
-
- vm.expectRevert("Multicall3: call failed");
- stdUtils.exposed_getTokenBalances(token, addresses);
- }
-
- function test_CannotGetTokenBalances_EOA() external {
- // We deploy a mock version so we can properly test the revert.
- StdUtilsMock stdUtils = new StdUtilsMock();
-
- address eoa = vm.addr({privateKey: 1});
- address[] memory addresses = new address[](1);
- addresses[0] = USDC_HOLDER_0;
- vm.expectRevert("StdUtils getTokenBalances(address,address[]): Token address is not a contract.");
- stdUtils.exposed_getTokenBalances(eoa, addresses);
- }
-
- function test_GetTokenBalances_Empty() external {
- address[] memory addresses = new address[](0);
- uint256[] memory balances = getTokenBalances(USDC, addresses);
- assertEq(balances.length, 0);
- }
-
- function test_GetTokenBalances_USDC() external {
- address[] memory addresses = new address[](2);
- addresses[0] = USDC_HOLDER_0;
- addresses[1] = USDC_HOLDER_1;
- uint256[] memory balances = getTokenBalances(USDC, addresses);
- assertEq(balances[0], 159_000_000_000_000);
- assertEq(balances[1], 131_350_000_000_000);
- }
-
- function test_GetTokenBalances_SHIB() external {
- address[] memory addresses = new address[](3);
- addresses[0] = SHIB_HOLDER_0;
- addresses[1] = SHIB_HOLDER_1;
- addresses[2] = SHIB_HOLDER_2;
- uint256[] memory balances = getTokenBalances(SHIB, addresses);
- assertEq(balances[0], 3_323_256_285_484.42e18);
- assertEq(balances[1], 1_271_702_771_149.99999928e18);
- assertEq(balances[2], 606_357_106_247e18);
- }
-}
diff --git a/lib/forge-std/test/Vm.t.sol b/lib/forge-std/test/Vm.t.sol
deleted file mode 100644
index 3c1d73f..0000000
--- a/lib/forge-std/test/Vm.t.sol
+++ /dev/null
@@ -1,15 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.8.0 <0.9.0;
-
-import {Test} from "../src/Test.sol";
-import {Vm, VmSafe} from "../src/Vm.sol";
-
-contract VmTest is Test {
- // This test ensures that functions are never accidentally removed from a Vm interface, or
- // inadvertently moved between Vm and VmSafe. This test must be updated each time a function is
- // added to or removed from Vm or VmSafe.
- function test_interfaceId() public {
- assertEq(type(VmSafe).interfaceId, bytes4(0x329f5e71), "VmSafe");
- assertEq(type(Vm).interfaceId, bytes4(0x82ccbb14), "Vm");
- }
-}
diff --git a/lib/forge-std/test/compilation/CompilationScript.sol b/lib/forge-std/test/compilation/CompilationScript.sol
deleted file mode 100644
index e205cff..0000000
--- a/lib/forge-std/test/compilation/CompilationScript.sol
+++ /dev/null
@@ -1,10 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import "../../src/Script.sol";
-
-// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
-// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
-contract CompilationScript is Script {}
diff --git a/lib/forge-std/test/compilation/CompilationScriptBase.sol b/lib/forge-std/test/compilation/CompilationScriptBase.sol
deleted file mode 100644
index ce8e0e9..0000000
--- a/lib/forge-std/test/compilation/CompilationScriptBase.sol
+++ /dev/null
@@ -1,10 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import "../../src/Script.sol";
-
-// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
-// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
-contract CompilationScriptBase is ScriptBase {}
diff --git a/lib/forge-std/test/compilation/CompilationTest.sol b/lib/forge-std/test/compilation/CompilationTest.sol
deleted file mode 100644
index 9beeafe..0000000
--- a/lib/forge-std/test/compilation/CompilationTest.sol
+++ /dev/null
@@ -1,10 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import "../../src/Test.sol";
-
-// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
-// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
-contract CompilationTest is Test {}
diff --git a/lib/forge-std/test/compilation/CompilationTestBase.sol b/lib/forge-std/test/compilation/CompilationTestBase.sol
deleted file mode 100644
index e993535..0000000
--- a/lib/forge-std/test/compilation/CompilationTestBase.sol
+++ /dev/null
@@ -1,10 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.6.2 <0.9.0;
-
-pragma experimental ABIEncoderV2;
-
-import "../../src/Test.sol";
-
-// The purpose of this contract is to benchmark compilation time to avoid accidentally introducing
-// a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207
-contract CompilationTestBase is TestBase {}
diff --git a/lib/forge-std/test/fixtures/broadcast.log.json b/lib/forge-std/test/fixtures/broadcast.log.json
deleted file mode 100644
index 0a0200b..0000000
--- a/lib/forge-std/test/fixtures/broadcast.log.json
+++ /dev/null
@@ -1,187 +0,0 @@
-{
- "transactions": [
- {
- "hash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f",
- "type": "CALL",
- "contractName": "Test",
- "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "function": "multiple_arguments(uint256,address,uint256[]):(uint256)",
- "arguments": ["1", "0000000000000000000000000000000000001337", "[3,4]"],
- "tx": {
- "type": "0x02",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "gas": "0x73b9",
- "value": "0x0",
- "data": "0x23e99187000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000013370000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004",
- "nonce": "0x3",
- "accessList": []
- }
- },
- {
- "hash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298",
- "type": "CALL",
- "contractName": "Test",
- "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "function": "inc():(uint256)",
- "arguments": [],
- "tx": {
- "type": "0x02",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "gas": "0xdcb2",
- "value": "0x0",
- "data": "0x371303c0",
- "nonce": "0x4",
- "accessList": []
- }
- },
- {
- "hash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c",
- "type": "CALL",
- "contractName": "Test",
- "contractAddress": "0x7c6b4bbe207d642d98d5c537142d85209e585087",
- "function": "t(uint256):(uint256)",
- "arguments": ["1"],
- "tx": {
- "type": "0x02",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087",
- "gas": "0x8599",
- "value": "0x0",
- "data": "0xafe29f710000000000000000000000000000000000000000000000000000000000000001",
- "nonce": "0x5",
- "accessList": []
- }
- }
- ],
- "receipts": [
- {
- "transactionHash": "0x481dc86e40bba90403c76f8e144aa9ff04c1da2164299d0298573835f0991181",
- "transactionIndex": "0x0",
- "blockHash": "0xef0730448490304e5403be0fa8f8ce64f118e9adcca60c07a2ae1ab921d748af",
- "blockNumber": "0x1",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": null,
- "cumulativeGasUsed": "0x13f3a",
- "gasUsed": "0x13f3a",
- "contractAddress": "0x5fbdb2315678afecb367f032d93f642f64180aa3",
- "logs": [],
- "status": "0x1",
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "effectiveGasPrice": "0xee6b2800"
- },
- {
- "transactionHash": "0x6a187183545b8a9e7f1790e847139379bf5622baff2cb43acf3f5c79470af782",
- "transactionIndex": "0x0",
- "blockHash": "0xf3acb96a90071640c2a8c067ae4e16aad87e634ea8d8bbbb5b352fba86ba0148",
- "blockNumber": "0x2",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": null,
- "cumulativeGasUsed": "0x45d80",
- "gasUsed": "0x45d80",
- "contractAddress": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "logs": [],
- "status": "0x1",
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "effectiveGasPrice": "0xee6b2800"
- },
- {
- "transactionHash": "0x064ad173b4867bdef2fb60060bbdaf01735fbf10414541ea857772974e74ea9d",
- "transactionIndex": "0x0",
- "blockHash": "0x8373d02109d3ee06a0225f23da4c161c656ccc48fe0fcee931d325508ae73e58",
- "blockNumber": "0x3",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
- "cumulativeGasUsed": "0x45feb",
- "gasUsed": "0x45feb",
- "contractAddress": null,
- "logs": [],
- "status": "0x1",
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "effectiveGasPrice": "0xee6b2800"
- },
- {
- "transactionHash": "0xc6006863c267735a11476b7f15b15bc718e117e2da114a2be815dd651e1a509f",
- "transactionIndex": "0x0",
- "blockHash": "0x16712fae5c0e18f75045f84363fb6b4d9a9fe25e660c4ce286833a533c97f629",
- "blockNumber": "0x4",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "cumulativeGasUsed": "0x5905",
- "gasUsed": "0x5905",
- "contractAddress": null,
- "logs": [],
- "status": "0x1",
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "effectiveGasPrice": "0xee6b2800"
- },
- {
- "transactionHash": "0xedf2b38d8d896519a947a1acf720f859bb35c0c5ecb8dd7511995b67b9853298",
- "transactionIndex": "0x0",
- "blockHash": "0x156b88c3eb9a1244ba00a1834f3f70de735b39e3e59006dd03af4fe7d5480c11",
- "blockNumber": "0x5",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512",
- "cumulativeGasUsed": "0xa9c4",
- "gasUsed": "0xa9c4",
- "contractAddress": null,
- "logs": [],
- "status": "0x1",
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "effectiveGasPrice": "0xee6b2800"
- },
- {
- "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c",
- "transactionIndex": "0x0",
- "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb",
- "blockNumber": "0x6",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0x7c6b4bbe207d642d98d5c537142d85209e585087",
- "cumulativeGasUsed": "0x66c5",
- "gasUsed": "0x66c5",
- "contractAddress": null,
- "logs": [
- {
- "address": "0x7c6b4bbe207d642d98d5c537142d85209e585087",
- "topics": [
- "0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b"
- ],
- "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046865726500000000000000000000000000000000000000000000000000000000",
- "blockHash": "0xcf61faca67dbb2c28952b0b8a379e53b1505ae0821e84779679390cb8571cadb",
- "blockNumber": "0x6",
- "transactionHash": "0xa57e8e3981a6c861442e46c9471bd19cb3e21f9a8a6c63a72e7b5c47c6675a7c",
- "transactionIndex": "0x1",
- "logIndex": "0x0",
- "transactionLogIndex": "0x0",
- "removed": false
- }
- ],
- "status": "0x1",
- "logsBloom": "0x00000000000800000000000000000010000000000000000000000000000180000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100",
- "effectiveGasPrice": "0xee6b2800"
- },
- {
- "transactionHash": "0x11fbb10230c168ca1e36a7e5c69a6dbcd04fd9e64ede39d10a83e36ee8065c16",
- "transactionIndex": "0x0",
- "blockHash": "0xf1e0ed2eda4e923626ec74621006ed50b3fc27580dc7b4cf68a07ca77420e29c",
- "blockNumber": "0x7",
- "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
- "to": "0x0000000000000000000000000000000000001337",
- "cumulativeGasUsed": "0x5208",
- "gasUsed": "0x5208",
- "contractAddress": null,
- "logs": [],
- "status": "0x1",
- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "effectiveGasPrice": "0xee6b2800"
- }
- ],
- "libraries": [
- "src/Broadcast.t.sol:F:0x5fbdb2315678afecb367f032d93f642f64180aa3"
- ],
- "pending": [],
- "path": "broadcast/Broadcast.t.sol/31337/run-latest.json",
- "returns": {},
- "timestamp": 1655140035
-}
diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts
deleted file mode 160000
index dbb6104..0000000
--- a/lib/openzeppelin-contracts
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3
diff --git a/lib/prb-math b/lib/prb-math
deleted file mode 160000
index 9dc0651..0000000
--- a/lib/prb-math
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9dc06519f3b9f1659fec7d396da634fe690f660c
diff --git a/script/Counter.s.sol b/script/Counter.s.sol
deleted file mode 100644
index 1a47b40..0000000
--- a/script/Counter.s.sol
+++ /dev/null
@@ -1,12 +0,0 @@
-// SPDX-License-Identifier: UNLICENSED
-pragma solidity ^0.8.13;
-
-import {Script, console2} from "forge-std/Script.sol";
-
-contract CounterScript is Script {
- function setUp() public {}
-
- function run() public {
- vm.broadcast();
- }
-}
diff --git a/soldeer.lock b/soldeer.lock
new file mode 100644
index 0000000..a57c056
--- /dev/null
+++ b/soldeer.lock
@@ -0,0 +1,20 @@
+[[dependencies]]
+name = "@prb-math"
+version = "4.1.0"
+url = "https://soldeer-revisions.s3.amazonaws.com/@prb-math/4_1_0_22-10-2024_05:57:38_math.zip"
+checksum = "66acf2a42311309c06ed71a8674d9c7feeecfcd5a9c15d76006c083cfce7e938"
+integrity = "03266dc49f8be85438f5f7ce654ac700346862e5f927d17038481cf526ff4d62"
+
+[[dependencies]]
+name = "forge-std"
+version = "1.9.5"
+url = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_9_5_21-12-2024_15:04:05_forge-std-1.9.zip"
+checksum = "57ada736f383289db77fac4472d48f820e7c98172cf9b01681b0c37065ce043f"
+integrity = "4753ffdfa0dde40878372b6a4d8e8fd1648b190b33996896c8b92f6f1680850f"
+
+[[dependencies]]
+name = "solady"
+version = "0.1.7"
+url = "https://soldeer-revisions.s3.amazonaws.com/solady/0_1_7_07-02-2025_09:03:51_solady.zip"
+checksum = "fdf7a6291859105016d8b9a3cc4b25c3770de91ad2b0ead1fd85861a2973054e"
+integrity = "0427c4998d7774e3756001d1701bcd5cc7724a47bcb8ec745ca2cf6c77872a1a"
diff --git a/src/ERC20ABC.sol b/src/ERC20ABC.sol
deleted file mode 100644
index 65e9e56..0000000
--- a/src/ERC20ABC.sol
+++ /dev/null
@@ -1,19 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
-
-import "@openzeppelin/contracts@5.0.2/token/ERC20/ERC20.sol";
-import "@openzeppelin/contracts@5.0.2/token/ERC20/extensions/ERC20Permit.sol";
-import "@openzeppelin/contracts@5.0.2/token/ERC20/extensions/ERC20Votes.sol";
-import "@openzeppelin/contracts@5.0.2/token/ERC20/extensions/ERC20FlashMint.sol";
-
-abstract contract ERC20ABC is ERC20, ERC20Permit, ERC20Votes, ERC20FlashMint {
- // The following functions are overrides required by Solidity.
-
- function _update(address from, address to, uint256 value) internal override(ERC20, ERC20Votes) {
- super._update(from, to, value);
- }
-
- function nonces(address owner) public view override(ERC20Permit, Nonces) returns (uint256) {
- return super.nonces(owner);
- }
-}
diff --git a/src/L2/Superchain b/src/L2/Superchain
new file mode 160000
index 0000000..d5237f7
--- /dev/null
+++ b/src/L2/Superchain
@@ -0,0 +1 @@
+Subproject commit d5237f7cf4a1f09a3195cbbcde222e6c110a506e
diff --git a/src/Solaxy.sol b/src/Solaxy.sol
index c69629e..2ba08b7 100644
--- a/src/Solaxy.sol
+++ b/src/Solaxy.sol
@@ -1,333 +1,217 @@
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
+pragma solidity ^0.8.28;
-import "./ERC20ABC.sol";
-import "./interfaces/ISolaxy.sol";
-import {UD60x18, ud60x18} from "@prb/math@4.0.2/src/UD60x18.sol";
-import {IERC721} from "@openzeppelin/contracts@5.0.2/interfaces/IERC721.sol";
+import {ISolaxy as IERC4626} from "./interfaces/ISolaxy.sol";
+import {UD60x18, ud} from "@prb/math@4.1.0/src/UD60x18.sol";
+import {ERC20 as Token} from "solady/src/tokens/ERC20.sol";
+import {SafeTransferLib} from "solady/src/utils/SafeTransferLib.sol";
+import {ReentrancyGuardTransient} from "solady/src/utils/ReentrancyGuardTransient.sol";
/**
* @title Solaxy
- * @notice Token contract implementing a linear sDAI-backed bonding curve where the solpe is 25 basis points (0.0025).
+ * @author ichristwin.eth
+ * @notice Token contract implementing a linear asset-backed bonding curve where the slope is 0.000025.
* @dev Adheres to ERC-20 token standard and uses the ERC-4626 tokenized vault interface for bonding curve operations.
+ * @custom:security-contact 25nzij1r3@mozmail.com
*/
-contract Solaxy is ERC20ABC, ISolaxy {
- address public constant FEE_ACCOUNT = 0xE47b1bcDb3Bed18e5a8dA5aa6E7c7a7F4b5Bd50a;
- IERC721 public constant M3TER = IERC721(0x39fb420Bd583cCC8Afd1A1eAce2907fe300ABD02);
- ERC20 public constant SDAI = ERC20(0xaf204776c7245bF4147c2612BF6e5972Ee483701);
- UD60x18 public constant HALF_SLOPE = UD60x18.wrap(0.00125e18);
- UD60x18 public constant SLOPE = UD60x18.wrap(0.0025e18);
+contract Solaxy is Token, IERC4626, ReentrancyGuardTransient {
+ using SafeTransferLib for address;
- /**
- * @dev Constructs the Solaxy contract, checks the sDAI token address and the fee account address.
- */
- constructor() ERC20("Solaxy", "SLX") ERC20Permit("Solaxy") {
- if (address(M3TER) == address(0)) revert CannotBeZero();
- if (address(SDAI) == address(0)) revert CannotBeZero();
- if (FEE_ACCOUNT == address(0)) revert CannotBeZero();
- }
-
- /**
- * @dev See {IERC4626-deposit}.
- */
- function deposit(uint256 assets, address receiver) external returns (uint256 shares) {
- if (M3TER.balanceOf(receiver) < 1) revert RequiresM3ter();
- shares = computeDeposit(assets, totalSupply());
- _deposit(receiver, assets, shares);
- }
-
- /**
- * @dev See {IERC4626-withdraw}.
- */
- function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares) {
- uint256 fee;
- (shares, fee) = computeWithdraw(assets, totalSupply());
- _withdraw(receiver, owner, assets, shares, fee);
- }
-
- /**
- * @dev See {IERC4626-mint}.
- */
- function mint(uint256 shares, address receiver) external returns (uint256 assets) {
- if (M3TER.balanceOf(receiver) < 1) revert RequiresM3ter();
- assets = computeMint(shares, totalSupply());
- _deposit(receiver, assets, shares);
- }
+ address constant RESERVE = 0x6B175474E89094C44Da98b954EedeAC495271d0F; // ToDo: use asset L1 contract address
+ address constant M3TER = 0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03; // ToDo: use m3ter L1 contract address
+ UD60x18 constant SEMI_SLOPE = UD60x18.wrap(0.0000125e18);
- /**
- * @dev See {IERC4626-redeem}.
- */
- function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets) {
- uint256 fee;
- (shares, assets, fee) = computeRedeem(shares, totalSupply());
- _withdraw(receiver, owner, assets, shares, fee);
- }
+ constructor() Token() {}
/**
- * @dev Implements {IERC4626-deposit} and protects againts slippage by specifying a minimum number of shares to receive.
+ * @notice Implements {IERC4626-deposit} and protects against slippage by specifying a minimum number of shares to receive.
* @param minSharesOut The minimum number of shares the sender expects to receive.
*/
function safeDeposit(uint256 assets, address receiver, uint256 minSharesOut) external returns (uint256 shares) {
- if (M3TER.balanceOf(receiver) < 1) revert RequiresM3ter();
- shares = computeDeposit(assets, totalSupply());
- if (shares < minSharesOut) revert SlippageError();
- _deposit(receiver, assets, shares);
+ shares = deposit(assets, receiver);
+ require(shares >= minSharesOut, SlippageError());
}
/**
- * @dev Implements {IERC4626-withdraw} and protects againts slippage by specifying a maximum number of shares to burn.
+ * @notice Implements {IERC4626-withdraw} and protects against slippage by specifying a maximum number of shares to burn.
* @param maxSharesIn The maximum number of shares the sender is willing to burn.
*/
function safeWithdraw(uint256 assets, address receiver, address owner, uint256 maxSharesIn)
external
returns (uint256 shares)
{
- uint256 fee;
- (shares, fee) = computeWithdraw(assets, totalSupply());
- if (shares > maxSharesIn) revert SlippageError();
- _withdraw(receiver, owner, assets, shares, fee);
+ shares = withdraw(assets, receiver, owner);
+ require(shares <= maxSharesIn, SlippageError());
}
/**
- * @dev Implements {IERC4626-deposit} and protects againts slippage by specifying a maximum amount of assets to deposit.
+ * @notice Implements {IERC4626-deposit} and protects against slippage by specifying a maximum amount of assets to deposit.
* @param maxAssetsIn The maximum amount of assets the sender is willing to deposit.
*/
function safeMint(uint256 shares, address receiver, uint256 maxAssetsIn) external returns (uint256 assets) {
- if (M3TER.balanceOf(receiver) < 1) revert RequiresM3ter();
- assets = computeMint(shares, totalSupply());
- if (assets > maxAssetsIn) revert SlippageError();
- _deposit(receiver, assets, shares);
+ assets = mint(shares, receiver);
+ require(assets <= maxAssetsIn, SlippageError());
}
/**
- * @dev Implements {IERC4626-redeem} and protects againts slippage by specifying a minimum amount of assets to receive.
+ * @notice Implements {IERC4626-redeem} and protects against slippage by specifying a minimum amount of assets to receive.
* @param minAssetsOut The minimum amount of assets the sender expects to receive.
*/
function safeRedeem(uint256 shares, address receiver, address owner, uint256 minAssetsOut)
external
returns (uint256 assets)
{
- uint256 fee;
- (shares, assets, fee) = computeRedeem(shares, totalSupply());
- if (assets < minAssetsOut) revert SlippageError();
- _withdraw(receiver, owner, assets, shares, fee);
- }
-
- /**
- * @dev See {IERC4626-previewDeposit}.
- */
- function previewDeposit(uint256 assets) external view returns (uint256 shares) {
- return computeDeposit(assets, totalSupply());
- }
-
- /**
- * @dev See {IERC4626-previewWithdraw}.
- */
- function previewWithdraw(uint256 assets) external view returns (uint256 shares) {
- uint256 fee;
- if (totalAssets() < assets) revert Undersupply();
- (shares, fee) = computeWithdraw(assets, totalSupply());
- return shares + fee;
- }
-
- /**
- * @dev See {IERC4626-previewMint}.
- */
- function previewMint(uint256 shares) external view returns (uint256 assets) {
- return computeMint(shares, totalSupply());
+ assets = redeem(shares, receiver, owner);
+ require(assets >= minAssetsOut, SlippageError());
}
- /**
- * @dev See {IERC4626-previewRedeem}.
- */
- function previewRedeem(uint256 shares) external view returns (uint256 assets) {
- if (totalSupply() < shares) revert Undersupply();
- (, assets,) = computeRedeem(shares, totalSupply());
- }
-
- /**
- * @notice Computes the current price of a share, as price = totalSupply * slope + 0
- * which is derived from the linear slope function: f(x) = mx + c,
- * where `x` is the supply of shares, the slope `m` is 0.0025, and `c` is a constant term = 0.
- *
- * @return price The current price along the bonding curve.
- */
- function currentPrice() external view returns (UD60x18) {
- return ud60x18(totalSupply()).mul(SLOPE);
- }
-
- /**
- * @dev See {IERC4626-convertToShares}.
- */
function convertToShares(uint256 assets) external view returns (uint256 shares) {
- if (totalAssets() < assets) revert Undersupply();
- UD60x18 conversionPrice = ud60x18(totalSupply()).mul(HALF_SLOPE);
- shares = ud60x18(assets).div(conversionPrice).intoUint256();
+ shares = ud(assets).div(ud(2 * totalSupply()).mul(SEMI_SLOPE)).unwrap();
}
- /**
- * @dev See {IERC4626-convertToAssets}.
- */
function convertToAssets(uint256 shares) external view returns (uint256 assets) {
- if (totalSupply() < shares) revert Undersupply();
- UD60x18 conversionPrice = ud60x18(totalSupply()).mul(HALF_SLOPE);
- assets = ud60x18(shares).mul(conversionPrice).intoUint256();
+ assets = ud(shares).mul(ud(2 * totalSupply()).mul(SEMI_SLOPE)).unwrap();
}
- /**
- * @dev See {IERC4626-maxWithdraw}.
- */
function maxWithdraw(address owner) external view returns (uint256 maxAssets) {
- (, maxAssets,) = computeRedeem(balanceOf(owner), totalSupply());
+ maxAssets = previewRedeem(balanceOf(owner));
}
- /**
- * @dev See {IERC4626-maxRedeem}.
- */
function maxRedeem(address owner) external view returns (uint256 maxShares) {
return balanceOf(owner);
}
- /**
- * @dev See {IERC4626-maxDeposit}.
- */
function maxDeposit(address) external pure returns (uint256 maxAssets) {
return type(uint256).max;
}
- /**
- * @dev See {IERC4626-maxMint}.
- */
function maxMint(address) external pure returns (uint256 maxShares) {
return type(uint256).max;
}
- /**
- * @dev See {IERC4626-asset}.
- */
function asset() external pure returns (address assetTokenAddress) {
- return address(SDAI);
+ return RESERVE;
+ }
+
+ function deposit(uint256 assets, address receiver) public returns (uint256 shares) {
+ shares = previewDeposit(assets);
+ _pump(receiver, assets, shares);
+ }
+
+ function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares) {
+ shares = previewWithdraw(assets);
+ _dump(receiver, owner, assets, shares);
+ }
+
+ function mint(uint256 shares, address receiver) public returns (uint256 assets) {
+ assets = previewMint(shares);
+ _pump(receiver, assets, shares);
+ }
+
+ function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets) {
+ assets = previewRedeem(shares);
+ _dump(receiver, owner, assets, shares);
}
- /**
- * @dev See {IERC4626-totalAssets}.
- */
function totalAssets() public view returns (uint256 totalManagedAssets) {
- totalManagedAssets = SDAI.balanceOf(address(this));
+ totalManagedAssets = Token(RESERVE).balanceOf(address(this));
}
/**
* @notice Computes the number of shares to be minted for a given amount of assets to be deposited.
- * Utilizes the equation y = sqrt((0.00125x^2 + A) / 0.00125) - x, derived from the trapezium area formula.
- *
- * @param assets The amount of assets to be deposited.
- * @param totalSupply The total supply of shares in the system.
- * @return shares The calculated number of shares minted for the deposited assets.
+ * @dev Utilizes the equation y = sqrt((0.0000125x^2 + A) / 0.0000125) - x, derived from the trapezium area formula.
*/
- function computeDeposit(uint256 assets, uint256 totalSupply) public pure returns (uint256 shares) {
- UD60x18 initialSupply = ud60x18(totalSupply);
- shares = initialSupply.powu(2).add(ud60x18(assets).div(HALF_SLOPE)).sqrt().sub(initialSupply).intoUint256();
+ function previewDeposit(uint256 assets) public view returns (uint256 shares) {
+ UD60x18 totalShares = ud(totalSupply());
+ shares = ((totalShares.powu(2) + ud(assets).div(SEMI_SLOPE)).sqrt() - totalShares).unwrap();
}
/**
- * @notice Computes the number of shares to be burned and the exit fee for a given amount of assets to be withdrawn.
- * Utilizes the equation y = x - sqrt((0.00125x^2 - A) / 0.00125), derived from the trapezium area formula.
- * Applies a 35.9% exit fee on the calculated shares.
- *
- * @dev Throws an error if the total assets are less than the specified withdrawal amount.
- * @param assets The amount of assets to be withdrawn.
- * @param totalSupply The total supply of shares in the system.
- * @return shares The calculated number of shares to be burned in the withdrawal.
- * @return fee The exit fee included in the required shares.
+ * @notice Computes the number of shares to be burned for a given amount of assets to be withdrawn.
+ * @dev Utilizes the equation y = x - sqrt((0.0000125x^2 - A) / 0.0000125), derived from the trapezium area formula.
*/
- function computeWithdraw(uint256 assets, uint256 totalSupply) public pure returns (uint256 shares, uint256 fee) {
- UD60x18 initialSupply = ud60x18(totalSupply);
- UD60x18 withdrawnShares = initialSupply.sub(initialSupply.powu(2).sub(ud60x18(assets).div(HALF_SLOPE)).sqrt());
-
- shares = withdrawnShares.intoUint256();
- fee = withdrawnShares.mul(ud60x18(0.359e18)).intoUint256();
+ function previewWithdraw(uint256 assets) public view returns (uint256 shares) {
+ UD60x18 totalShares = ud(totalSupply());
+ shares = (totalShares - (totalShares.powu(2) - (ud(assets).div(SEMI_SLOPE))).sqrt()).unwrap();
}
/**
- * @notice Computes the assets to be minted for a given number of shares using _convertToAssets.
- * @param shares The number of shares to be minted.
- * @param totalSupply The total supply of shares in the system.
- * @return assets The computed assets as a uint256 value.
+ * @notice Computes the amount of assets to be deposited for a given number of shares minted.
+ * @dev Computes assets as the area under a linear curve with a simplified form of the area of a trapezium,
+ * f(x) = mx + c, and Area = 1/2 * (a + b) * h;
+ * During mint calculates area as SemiSlope * (finalSupply^2 - initialSupply^2), where SemiSlope = (0.000025 / 2)
*/
- function computeMint(uint256 shares, uint256 totalSupply) public pure returns (uint256 assets) {
- assets = _convertToAssets(ud60x18(totalSupply), ud60x18(totalSupply + shares)).intoUint256();
+ function previewMint(uint256 shares) public view returns (uint256 assets) {
+ UD60x18 totalShares = ud(totalSupply());
+ assets = SEMI_SLOPE.mul((totalShares + ud(shares)).powu(2) - totalShares.powu(2)).unwrap();
}
/**
- * @notice Computes the assets, burnShares, and exit fee for a given number of shares to be redeemed.
- * It calculates the assets to be redeemed using the _convertToAssets function and applies a 26.4% exit fee.
- *
- * @param shares The number of shares to be redeemed.
- * @param totalSupply The total supply of shares in the system.
- * @return burnShare The number of shares to be burned.
- * @return assets The computed assets as a uint256 value.
- * @return fee The exit fee deducted from the redeemed assets as a uint256 value.
+ * @notice Computes the amount of assets to be withdrawn for a given number of shares burned.
+ * @dev Computes assets as the area under a linear curve with a simplified form of the area of a trapezium,
+ * f(x) = mx + c, and Area = 1/2 * (a + b) * h;
+ * During redeem, calculates area as SemiSlope * (initialSupply^2 - finalSupply^2), where SemiSlope = (0.000025 / 2)
*/
- function computeRedeem(uint256 shares, uint256 totalSupply)
- public
- pure
- returns (uint256 burnShare, uint256 assets, uint256 fee)
- {
- UD60x18 _fee = ud60x18(shares).mul(ud60x18(0.264e18));
- UD60x18 _burnShare = ud60x18(shares).sub(_fee);
- UD60x18 finalSupply = ud60x18(totalSupply).sub(_burnShare);
+ function previewRedeem(uint256 shares) public view returns (uint256 assets) {
+ UD60x18 totalShares = ud(totalSupply());
+ assets = SEMI_SLOPE.mul(totalShares.powu(2) - (totalShares - ud(shares)).powu(2)).unwrap();
+ }
- assets = _convertToAssets(finalSupply, ud60x18(totalSupply)).intoUint256();
- burnShare = _burnShare.intoUint256();
- fee = _fee.intoUint256();
+ function name() public pure override returns (string memory) {
+ return "Solaxy";
+ }
+
+ function symbol() public pure override returns (string memory) {
+ return "SLX";
}
/**
- * @dev Deposit/mint common workflow.
+ * @dev Deposit/mint common workflow. Updates vault balances and handles external to reserve asset contract
+ * Reverts if vault balances are not consistent with expectations, only handles consistency checks for vault account
*/
- function _deposit(address receiver, uint256 assets, uint256 shares) internal {
- if (assets == 0) revert CannotBeZero();
- if (shares == 0) revert CannotBeZero();
- if (!SDAI.transferFrom(msg.sender, address(this), assets)) {
- revert TransferError();
- }
- emit Deposit(msg.sender, receiver, assets, shares);
+ function _pump(address receiver, uint256 assets, uint256 shares) private nonReentrant {
+ (uint256 initialAssets, uint256 initialShares) = (totalAssets(), totalSupply());
+
+ require(assets > 0 && shares > 0, CannotBeZero());
+ require(Token(M3TER).balanceOf(receiver) > 0, RequiresM3ter());
+
+ RESERVE.safeTransferFrom(msg.sender, address(this), assets);
_mint(receiver, shares);
+
+ require(
+ totalAssets() == initialAssets + assets && totalSupply() == initialShares + shares, InconsistentBalances()
+ );
+ emit Deposit(msg.sender, receiver, assets, shares);
}
/**
- * @dev Withdraw/redeem common workflow.
+ * @dev Withdraw/redeem common workflow. Updates vault balances and handles external to reserve asset contract
+ * Collects a 7% tip on the underlying asset, taken in shares based on the price of shares after redemption/withdrawal
+ * Reverts if vault balances are not consistent with expectations, only handles consistency checks for vault account
+ * Tip is computed by finding Z which equal to 7% of X; given that assets is 93% of X, then get it's equivalent in assets
+ * i.e (7/93 * assets) / (finalSupply * slope)
*/
- function _withdraw(address receiver, address owner, uint256 assets, uint256 shares, uint256 fee) internal {
- if (fee == 0) revert CannotBeZero();
- if (assets == 0) revert CannotBeZero();
- if (shares == 0) revert CannotBeZero();
- if (totalAssets() < assets) revert Undersupply();
- if (totalSupply() < shares) revert Undersupply();
- if (msg.sender != owner) {
- _spendAllowance(owner, msg.sender, shares + fee);
- }
+ function _dump(address receiver, address owner, uint256 assets, uint256 shares) private nonReentrant {
+ (uint256 initialAssets, uint256 initialShares) = (totalAssets(), totalSupply());
+
+ uint256 tip = ud(7).div(ud(186)).mul(ud(assets)).div(SEMI_SLOPE.mul(ud(initialShares) - ud(shares))).unwrap();
+ require(tip > 0 && assets > 0 && shares > 0, CannotBeZero());
+ require(Token(M3TER).balanceOf(owner) > 0, RequiresM3ter());
+
+ if (msg.sender != owner) _spendAllowance(owner, msg.sender, shares + tip);
_burn(owner, shares);
- if (!transfer(FEE_ACCOUNT, fee)) revert TransferError();
- if (!SDAI.transfer(receiver, assets)) revert TransferError();
- emit Withdraw(msg.sender, receiver, owner, assets, shares);
- }
+ address accImpProxy = 0x55266d75D1a14E4572138116aF39863Ed6596E7F; // @ ERC6551 v0.3.1 account implementation proxy
+ (bool success, bytes memory rawTipAccount) = 0x000000006551c19487814612e58FE06813775758.staticcall( // @ ERC6551 v0.3.1 registry
+ abi.encodeWithSignature("account(address,bytes32,uint256,address,uint256)", accImpProxy, 0, 1, M3TER, 0));
+ require(success, StaticCallFailed());
- /**
- * @notice Computes assets as the area under a linear curve with a simplified form of the area of a trapezium,
- * f(x) = mx + c, and Area = 1/2 * (a + b) * h
- * where `a` and `b` can be both f(juniorSupply) or f(seniorSupply) depending if used in minting or redeeming.
- * Calculates area as (seniorSupply^2 - juniorSupply^2) * halfSlope, where halfSlope = (slope / 2)
- *
- * @param juniorSupply The smaller supply in the operation (the initial supply during mint,
- * or the final supply during a redeem operation).
- * @param seniorSupply The larger supply in the operation (the final supply during mint,
- * or the initial supply during a redeem operation).
- * @return assets The computed assets as an instance of UD60x18 (a fixed-point number).
- */
- function _convertToAssets(UD60x18 juniorSupply, UD60x18 seniorSupply) internal pure returns (UD60x18 assets) {
- UD60x18 sqrDiff = seniorSupply.powu(2).sub(juniorSupply.powu(2));
- return sqrDiff.mul(HALF_SLOPE);
+ _transfer(owner, abi.decode(rawTipAccount, (address)), tip);
+ RESERVE.safeTransfer(receiver, assets);
+
+ require(
+ totalAssets() == initialAssets - assets && totalSupply() == initialShares - shares, InconsistentBalances()
+ );
+ emit Withdraw(msg.sender, receiver, owner, assets, shares);
}
}
diff --git a/src/interfaces/ISolaxy.sol b/src/interfaces/ISolaxy.sol
index a39162c..416532e 100644
--- a/src/interfaces/ISolaxy.sol
+++ b/src/interfaces/ISolaxy.sol
@@ -1,27 +1,237 @@
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
+pragma solidity ^0.8.28;
-import {IERC4626} from "@openzeppelin/contracts@5.0.2/interfaces/IERC4626.sol";
-import {UD60x18} from "@prb/math@4.0.2/src/UD60x18.sol";
+interface IERC4626 {
+ event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);
-error Undersupply();
-error CannotBeZero();
-error SlippageError();
-error TransferError();
-error RequiresM3ter();
+ event Withdraw(
+ address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares
+ );
+
+ /**
+ * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.
+ *
+ * - MUST be an ERC-20 token contract.
+ * - MUST NOT revert.
+ */
+ function asset() external view returns (address assetTokenAddress);
+
+ /**
+ * @dev Returns the total amount of the underlying asset that is “managed” by Vault.
+ *
+ * - SHOULD include any compounding that occurs from yield.
+ * - MUST be inclusive of any fees that are charged against assets in the Vault.
+ * - MUST NOT revert.
+ */
+ function totalAssets() external view returns (uint256 totalManagedAssets);
+
+ /**
+ * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal
+ * scenario where all the conditions are met.
+ *
+ * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
+ * - MUST NOT show any variations depending on the caller.
+ * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
+ * - MUST NOT revert.
+ *
+ * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
+ * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
+ * from.
+ */
+ function convertToShares(uint256 assets) external view returns (uint256 shares);
+
+ /**
+ * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal
+ * scenario where all the conditions are met.
+ *
+ * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
+ * - MUST NOT show any variations depending on the caller.
+ * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
+ * - MUST NOT revert.
+ *
+ * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
+ * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
+ * from.
+ */
+ function convertToAssets(uint256 shares) external view returns (uint256 assets);
+
+ /**
+ * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,
+ * through a deposit call.
+ *
+ * - MUST return a limited value if receiver is subject to some deposit limit.
+ * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.
+ * - MUST NOT revert.
+ */
+ function maxDeposit(address receiver) external view returns (uint256 maxAssets);
+
+ /**
+ * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given
+ * current on-chain conditions.
+ *
+ * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit
+ * call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called
+ * in the same transaction.
+ * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the
+ * deposit would be accepted, regardless if the user has enough tokens approved, etc.
+ * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
+ * - MUST NOT revert.
+ *
+ * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in
+ * share price or some other type of condition, meaning the depositor will lose assets by depositing.
+ */
+ function previewDeposit(uint256 assets) external view returns (uint256 shares);
+
+ /**
+ * @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.
+ *
+ * - MUST emit the Deposit event.
+ * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
+ * deposit execution, and are accounted for during deposit.
+ * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not
+ * approving enough underlying tokens to the Vault contract, etc).
+ *
+ * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
+ */
+ function deposit(uint256 assets, address receiver) external returns (uint256 shares);
+
+ /**
+ * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.
+ * - MUST return a limited value if receiver is subject to some mint limit.
+ * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.
+ * - MUST NOT revert.
+ */
+ function maxMint(address receiver) external view returns (uint256 maxShares);
+
+ /**
+ * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given
+ * current on-chain conditions.
+ *
+ * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call
+ * in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the
+ * same transaction.
+ * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint
+ * would be accepted, regardless if the user has enough tokens approved, etc.
+ * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
+ * - MUST NOT revert.
+ *
+ * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in
+ * share price or some other type of condition, meaning the depositor will lose assets by minting.
+ */
+ function previewMint(uint256 shares) external view returns (uint256 assets);
+
+ /**
+ * @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.
+ *
+ * - MUST emit the Deposit event.
+ * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint
+ * execution, and are accounted for during mint.
+ * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not
+ * approving enough underlying tokens to the Vault contract, etc).
+ *
+ * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
+ */
+ function mint(uint256 shares, address receiver) external returns (uint256 assets);
+
+ /**
+ * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the
+ * Vault, through a withdraw call.
+ *
+ * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
+ * - MUST NOT revert.
+ */
+ function maxWithdraw(address owner) external view returns (uint256 maxAssets);
+
+ /**
+ * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,
+ * given current on-chain conditions.
+ *
+ * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw
+ * call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if
+ * called
+ * in the same transaction.
+ * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though
+ * the withdrawal would be accepted, regardless if the user has enough shares, etc.
+ * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
+ * - MUST NOT revert.
+ *
+ * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in
+ * share price or some other type of condition, meaning the depositor will lose assets by depositing.
+ */
+ function previewWithdraw(uint256 assets) external view returns (uint256 shares);
+
+ /**
+ * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.
+ *
+ * - MUST emit the Withdraw event.
+ * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
+ * withdraw execution, and are accounted for during withdraw.
+ * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner
+ * not having enough shares, etc).
+ *
+ * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
+ * Those methods should be performed separately.
+ */
+ function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);
+
+ /**
+ * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,
+ * through a redeem call.
+ *
+ * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
+ * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.
+ * - MUST NOT revert.
+ */
+ function maxRedeem(address owner) external view returns (uint256 maxShares);
+
+ /**
+ * @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,
+ * given current on-chain conditions.
+ *
+ * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call
+ * in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the
+ * same transaction.
+ * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the
+ * redemption would be accepted, regardless if the user has enough shares, etc.
+ * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
+ * - MUST NOT revert.
+ *
+ * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in
+ * share price or some other type of condition, meaning the depositor will lose assets by redeeming.
+ */
+ function previewRedeem(uint256 shares) external view returns (uint256 assets);
+
+ /**
+ * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.
+ *
+ * - MUST emit the Withdraw event.
+ * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
+ * redeem execution, and are accounted for during redeem.
+ * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner
+ * not having enough shares, etc).
+ *
+ * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
+ * Those methods should be performed separately.
+ */
+ function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);
+}
interface ISolaxy is IERC4626 {
+ error InconsistentBalances();
+ error StaticCallFailed();
+ error RequiresM3ter();
+ error SlippageError();
+ error CannotBeZero();
+
function safeDeposit(uint256 assets, address receiver, uint256 minSharesOut) external returns (uint256 shares);
+ function safeMint(uint256 shares, address receiver, uint256 maxAssetsIn) external returns (uint256 assets);
+
function safeWithdraw(uint256 assets, address receiver, address owner, uint256 maxSharesIn)
external
returns (uint256 shares);
- function safeMint(uint256 shares, address receiver, uint256 maxAssetsIn) external returns (uint256 assets);
-
function safeRedeem(uint256 shares, address receiver, address owner, uint256 minAssetsOut)
external
returns (uint256 assets);
-
- function currentPrice() external returns (UD60x18);
}
diff --git a/test/Solaxy.invariant.t.sol b/test/Solaxy.invariant.t.sol
index 8be2cf2..30056c2 100644
--- a/test/Solaxy.invariant.t.sol
+++ b/test/Solaxy.invariant.t.sol
@@ -1,106 +1,100 @@
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.19;
+pragma solidity ^0.8.28;
-import {CommonBase} from "forge-std/Base.sol";
-import {StdCheats} from "forge-std/StdCheats.sol";
-import {StdUtils} from "forge-std/StdUtils.sol";
import {Test} from "forge-std/Test.sol";
-
+import {IERC20} from "forge-std/interfaces/IERC20.sol";
import {Solaxy} from "../src/Solaxy.sol";
-import {IERC20} from "@openzeppelin/contracts@5.0.2/interfaces/IERC20.sol";
-import {CannotBeZero, Undersupply} from "../src/interfaces/ISolaxy.sol";
-uint256 constant sDAI_balanceOneBillion = 1e9 * 1e18;
+uint256 constant reserve_balanceOneBillion = 1e9 * 1e18;
+
+contract Handler is Test {
+ Solaxy immutable SLX;
+ IERC20 immutable RESERVE;
+ address immutable HERE;
-contract Handler is CommonBase, StdCheats, StdUtils {
- Solaxy private SLX;
- IERC20 private sDAI;
+ error CannotBeZero();
- constructor(Solaxy slx, IERC20 sdai) {
- SLX = slx;
- sDAI = sdai;
- sDAI.approve(address(slx), sDAI_balanceOneBillion);
+ constructor(Solaxy slx, IERC20 reserve) {
+ (SLX, RESERVE, HERE) = (slx, reserve, address(this));
+ RESERVE.approve(address(slx), reserve_balanceOneBillion);
}
function deposit(uint256 assets) public {
- assets = bound(assets, 1e8, 1e20);
+ assets = bound(assets, 0, 1e20);
if (assets == 0) vm.expectRevert(CannotBeZero.selector);
- if (assets > sDAI.balanceOf(address(this))) {
- vm.expectRevert(bytes("ERC20: transfer amount exceeds balance"));
- }
- SLX.deposit(assets, address(this));
+ if (assets > RESERVE.balanceOf(HERE)) vm.expectRevert();
+ SLX.deposit(assets, HERE);
}
function withdraw(uint256 assets) public {
- assets = bound(assets, 1e8, 1e20);
+ assets = bound(assets, 0, 1e20);
if (assets == 0) vm.expectRevert(CannotBeZero.selector);
- if (assets > SLX.totalAssets()) vm.expectRevert(Undersupply.selector);
- SLX.withdraw(assets, address(this), address(this));
+ SLX.withdraw(assets, HERE, HERE);
}
function mint(uint256 shares) public {
- shares = bound(shares, 1e8, 10e20);
- SLX.mint(shares, address(this));
+ shares = bound(shares, 0, 10e20);
+ if (shares == 0) vm.expectRevert(CannotBeZero.selector);
+ SLX.mint(shares, HERE);
}
function redeem(uint256 shares) public {
- shares = bound(shares, 1e8, 1e20);
- if (shares > SLX.totalSupply()) vm.expectRevert(Undersupply.selector);
- if (shares > SLX.balanceOf(address(this))) {
- vm.expectRevert(bytes("ERC20: burn amount exceeds balance"));
- }
- SLX.redeem(shares, address(this), address(this));
+ shares = bound(shares, 0, 1e20);
+ if (shares == 0) vm.expectRevert(CannotBeZero.selector);
+ if (shares > SLX.balanceOf(HERE)) vm.expectRevert(bytes4(0xf4d678b8));
+ SLX.redeem(shares, HERE, HERE);
}
}
contract SolaxyInvarantTest is Test {
- Handler public handler;
- Solaxy public SLX;
- IERC20 public sDAI;
- address public SLX_address;
- address public sDAI_address;
- address public handlerAddress;
+ Solaxy SLX;
+ IERC20 RESERVE;
+ address RESERVE_address;
+ address handlerAddress;
+ address constant M3TER_address = 0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03;
+
+ function tipAccount() private view returns (address account) {
+ address reg = 0x000000006551c19487814612e58FE06813775758;
+ address imp = 0x55266d75D1a14E4572138116aF39863Ed6596E7F;
+
+ (bool success, bytes memory data) = address(reg).staticcall(
+ abi.encodeWithSignature("account(address,bytes32,uint256,address,uint256)", imp, 0x0, 1, M3TER_address, 0)
+ );
+ account = success ? abi.decode(data, (address)) : address(0);
+ }
function setUp() public {
- string memory url = vm.rpcUrl("gnosis-mainnet");
+ string memory url = vm.rpcUrl("ethereum-mainnet");
vm.createSelectFork(url);
SLX = new Solaxy();
- SLX_address = address(SLX);
-
- sDAI_address = SLX.asset();
- sDAI = IERC20(sDAI_address);
+ RESERVE_address = SLX.asset();
+ RESERVE = IERC20(RESERVE_address);
+ handlerAddress = address(new Handler(SLX, RESERVE));
- handler = new Handler(SLX, sDAI);
- handlerAddress = address(handler);
-
- deal(sDAI_address, handlerAddress, sDAI_balanceOneBillion, true);
- dealERC721(address(SLX.M3TER()), handlerAddress, 0);
+ deal(RESERVE_address, handlerAddress, reserve_balanceOneBillion, true);
+ dealERC721(M3TER_address, handlerAddress, 0);
targetContract(handlerAddress);
}
- function invariantValuation() public {
- uint256 sDAI_balanceAfterTest = sDAI.balanceOf(handlerAddress);
- uint256 solaxyTVL = sDAI_balanceOneBillion - sDAI_balanceAfterTest;
- assertEq(SLX.totalAssets(), solaxyTVL, "Total value locked should be strictly equal to total reserve assets");
+ function invariantValuation() public view {
+ assertEq(
+ SLX.totalAssets(),
+ reserve_balanceOneBillion - RESERVE.balanceOf(handlerAddress),
+ "Total value locked should be strictly equal to total reserve assets"
+ );
- uint256 totalFees = SLX.balanceOf(SLX.FEE_ACCOUNT());
- uint256 totalHoldings = SLX.balanceOf(handlerAddress);
assertEq(
SLX.totalSupply(),
- totalHoldings + totalFees,
- "Total user holdings plus all fees collected should be strictly equal to the total token supply"
+ SLX.balanceOf(handlerAddress) + SLX.balanceOf(tipAccount()),
+ "Total handler holdings plus all fees collected should be strictly equal to the total token supply"
);
- assertGe(
- SLX.totalAssets() + 1 wei,
- SLX.convertToAssets(SLX.totalSupply()),
- "Total reserve assets must be enough to cover the converstion of all existing tokens with a margin of error of only 1e-18 sDAI"
+ assertApproxEqAbs(
+ SLX.totalAssets(),
+ SLX.previewRedeem(SLX.totalSupply()),
+ 0.000000002e18,
+ "Total reserve assets must be enough to cover the conversion of all existing tokens to less than a cent rounding error"
);
}
-
- function testKnowAccountBalance() public {
- uint256 knowHolderBalance = sDAI.balanceOf(sDAI_address);
- assertApproxEqAbs(knowHolderBalance, 30.5e18, 0.001e18, "sDAI balance should approximately equal 30.49 sDAI");
- }
}
diff --git a/test/Solaxy.t.sol b/test/Solaxy.t.sol
index a180ac8..60ed501 100644
--- a/test/Solaxy.t.sol
+++ b/test/Solaxy.t.sol
@@ -1,160 +1,181 @@
// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.19;
+pragma solidity ^0.8.28;
import {Test} from "forge-std/Test.sol";
+import {IERC20} from "forge-std/interfaces/IERC20.sol";
import {Solaxy} from "../src/Solaxy.sol";
-import {RequiresM3ter} from "../src/interfaces/ISolaxy.sol";
-import {IERC20} from "@openzeppelin/contracts@5.0.2/interfaces/IERC20.sol";
-import {IERC721} from "@openzeppelin/contracts@5.0.2/interfaces/IERC721.sol";
contract SolaxyUnitTest is Test {
- Solaxy public SLX;
- IERC20 public sDAI;
- address public here;
- address public SLX_address;
- address public sDAI_address;
- uint256 public constant SLX_amountIn = 6.795e18;
- uint256 public constant SLX_amountMinted = 10e18;
- uint256 public constant SLX_amountBurned = 5e18;
- uint256 public constant sDAI_amountDeposited = 0.125e18;
- uint256 public constant sDAI_amountWithdrawn = 0.09375e18;
- uint256 public constant sDAI_balanceOneMillion = 1e6 * 1e18;
+ Solaxy SLX;
+ IERC20 RESERVE;
+ address here;
+ address SLX_address;
+ address M3TER_address;
+ address RESERVE_address;
+ address constant M3TER = 0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03;
+ uint256 constant SLX_amountIn = 50_125.007569468e18;
+ uint256 constant SLX_amountMinted = 10_000_000e18;
+ uint256 constant SLX_amountBurned = 46_608.61816435866e18;
+ uint256 constant reserve_amountDeposited = 1_250_000_000e18;
+ uint256 constant reserve_amountWithdrawn = 11_625_000e18;
+ uint256 constant totalAssets = 1e28;
+
+ error RequiresM3ter();
+
+ function tipAccount() private view returns (address account) {
+ address reg = 0x000000006551c19487814612e58FE06813775758;
+ address imp = 0x55266d75D1a14E4572138116aF39863Ed6596E7F;
+
+ (bool success, bytes memory data) = address(reg).staticcall(
+ abi.encodeWithSignature("account(address,bytes32,uint256,address,uint256)", imp, 0x0, 1, M3TER_address, 0)
+ );
+ account = success ? abi.decode(data, (address)) : address(0);
+ }
function setUp() public {
- string memory url = vm.rpcUrl("gnosis-mainnet");
+ string memory url = vm.rpcUrl("ethereum-mainnet");
vm.createSelectFork(url);
here = address(this);
SLX = new Solaxy();
SLX_address = address(SLX);
+ M3TER_address = address(M3TER);
- sDAI_address = SLX.asset();
- sDAI = IERC20(sDAI_address);
- deal(sDAI_address, here, sDAI_balanceOneMillion, true);
- sDAI.approve(SLX_address, sDAI_balanceOneMillion);
+ RESERVE_address = SLX.asset();
+ RESERVE = IERC20(RESERVE_address);
+
+ deal(RESERVE_address, here, totalAssets, true);
+ RESERVE.approve(SLX_address, totalAssets);
}
- function testInitialBalanceWithNewSolaxyContract() public {
+ function test_InitialSupplyOfSolaxyIsZero() public view {
uint256 expected = 0;
uint256 actual = SLX.totalSupply();
assertEq(actual, expected, "New Solaxy contract should have 0 total supply");
}
- function testSendEtherToContract() public {
+ function test_RevertWhen_EtherIsTransferredToContract() public {
vm.expectRevert(); // expect a transaction revert during test.
+ uint256 initialEthBalance = SLX_address.balance;
payable(SLX_address).transfer(1 ether); // Sending 1 Ether to the contract
- assertEq(SLX_address.balance, 0 ether, "asset ether balance is still equal to zero");
+ assertEq(SLX_address.balance, initialEthBalance, "asset cannot receive ether transfer");
}
- function testNonM3terHolder() public {
+ function test_RevertWhen_CallerHoldsNoM3ter() public {
vm.expectRevert(RequiresM3ter.selector);
- SLX.deposit(sDAI_amountDeposited, here);
+ SLX.deposit(reserve_amountDeposited, here);
vm.expectRevert(RequiresM3ter.selector);
SLX.mint(SLX_amountMinted, here);
+
+ deal(SLX_address, here, SLX_amountMinted, true);
+
+ vm.expectRevert(RequiresM3ter.selector);
+ SLX.withdraw(reserve_amountWithdrawn, here, here);
+
+ vm.expectRevert(RequiresM3ter.selector);
+ SLX.redeem(SLX_amountBurned, here, here);
}
- function testM3terHolderDepositAndWithdraw() public {
- dealERC721(address(SLX.M3TER()), here, 0);
+ function test_M3terHolderCanDepositAndWithdraw() public {
+ dealERC721(M3TER_address, here, 0);
uint256 SLX_InitialBalance = SLX.balanceOf(here);
- uint256 sDAI_initialBalance = sDAI.balanceOf(SLX_address);
+ uint256 totalAssetsInitial = SLX.totalAssets();
+
+ assertEq(SLX_InitialBalance, 0, "SLX balance should be 0 before deposit");
+ assertEq(totalAssetsInitial, 0, "reserve balance should be 0 before deposit");
- // Deposit sDAI to Solaxy contract
- SLX.deposit(sDAI_amountDeposited, here);
+ // Deposit reserve to Solaxy contract
+ SLX.safeDeposit(reserve_amountDeposited, here, SLX_amountMinted);
uint256 SLX_supplyAfterDeposit = SLX.totalSupply();
uint256 SLX_balanceAfterDeposit = SLX.balanceOf(here);
- uint256 sDAI_balanceAfterDeposit = sDAI.balanceOf(SLX_address);
+ uint256 totalAssetsAfterDeposit = SLX.totalAssets();
- assertEq(SLX_InitialBalance, 0, "SLX balance should be 0 before deposit");
- assertEq(sDAI_initialBalance, 0, "sDAI balance should be 0 before deposit");
assertEq(SLX_supplyAfterDeposit, SLX_amountMinted, "SLX supply should increase after deposit");
assertEq(SLX_balanceAfterDeposit, SLX_amountMinted, "SLX balance should increase after deposit");
- assertEq(sDAI_balanceAfterDeposit, sDAI_amountDeposited, "sDAI balance should decrease after deposit");
-
- // convert to shares
- uint256 convertedShares = SLX.convertToShares(sDAI_amountDeposited);
- assertEq(convertedShares, SLX_amountMinted);
+ assertEq(totalAssetsAfterDeposit, reserve_amountDeposited, "reserve balance should decrease after deposit");
+ assertEq(SLX.convertToAssets(1e18), 250e18);
+ assertEq(SLX.convertToShares(250e18), 1e18);
- // Withdraw sDAI from Solaxy contract
- SLX.withdraw(sDAI_amountWithdrawn, here, here);
+ // Withdraw reserve from Solaxy contract
+ SLX.safeWithdraw(reserve_amountWithdrawn, here, here, SLX_amountIn);
uint256 SLX_supplyAfterWithdraw = SLX.totalSupply();
uint256 SLX_balanceAfterWithdraw = SLX.balanceOf(here);
- uint256 sDAI_balanceAfterWithdraw = sDAI.balanceOf(SLX_address);
+ uint256 totalAssetsAfterWithdraw = SLX.totalAssets();
- assertEq(
+ assertApproxEqAbs(
SLX_balanceAfterWithdraw,
SLX_balanceAfterDeposit - SLX_amountIn,
+ 0.000000002e18,
"SLX balance should decrease after withdrawal"
);
- assertEq(
+ assertApproxEqAbs(
SLX_supplyAfterWithdraw,
SLX_supplyAfterDeposit - SLX_amountBurned,
+ 0.000000002e18,
"SLX supply should decrease after withdrawal"
);
assertEq(
- sDAI_balanceAfterWithdraw,
- sDAI_balanceAfterDeposit - sDAI_amountWithdrawn,
- "sDAI balance should increase after withdrawal"
+ totalAssetsAfterWithdraw,
+ totalAssetsAfterDeposit - reserve_amountWithdrawn,
+ "reserve balance should increase after withdrawal"
+ );
+ assertApproxEqAbs(
+ SLX.balanceOf(tipAccount()),
+ SLX_amountIn - SLX_amountBurned,
+ 0.000000002e18,
+ "tip should be difference between all shares burnt vs shares spent"
);
-
- // Check for fees
- uint256 SLX_feeBalance = SLX.balanceOf(SLX.FEE_ACCOUNT());
- assertEq(SLX_feeBalance, 1795000000000000000);
}
- function testM3terHolderMintAndRedeem() public {
- dealERC721(address(SLX.M3TER()), here, 1);
+ function test_M3terHolderCanMintAndRedeem() public {
+ dealERC721(M3TER_address, here, 0);
uint256 SLX_initialBalance = SLX.balanceOf(here);
- uint256 sDAI_initialBalance = sDAI.balanceOf(SLX_address);
+ uint256 totalAssetsInitial = SLX.totalAssets();
// Mint new SLX tokens
- SLX.mint(SLX_amountMinted, here);
+ SLX.safeMint(SLX_amountMinted, here, reserve_amountDeposited);
uint256 SLX_supplyAfterMint = SLX.totalSupply();
uint256 SLX_balanceAfterMint = SLX.balanceOf(here);
- uint256 sDAI_balanceAfterMint = sDAI.balanceOf(SLX_address);
+ uint256 totalAssetsAfterMint = SLX.totalAssets();
assertEq(SLX_initialBalance, 0, "SLX balance should be 0 before minting");
- assertEq(sDAI_initialBalance, 0, "sDAI balance should be 0 before minting");
+ assertEq(totalAssetsInitial, 0, "reserve balance should be 0 before minting");
assertEq(SLX_supplyAfterMint, SLX_amountMinted, "SLX supply should increase after minting");
assertEq(SLX_balanceAfterMint, SLX_amountMinted, "SLX balance should increase after minting");
- assertEq(sDAI_balanceAfterMint, sDAI_amountDeposited, "sDAI balance should decrease after minting");
-
- // convert to assets
- uint256 convertedAssets = SLX.convertToAssets(SLX_amountMinted);
- assertEq(convertedAssets, sDAI_amountDeposited);
+ assertEq(totalAssetsAfterMint, reserve_amountDeposited, "reserve balance should decrease after minting");
+ assertEq(SLX.convertToAssets(1e18), 250e18);
+ assertEq(SLX.convertToShares(250e18), 1e18);
// Redeem SLX tokens
- SLX.redeem(SLX_amountIn, here, here);
+ SLX.safeRedeem(SLX_amountBurned, here, here, reserve_amountWithdrawn * 93 / 100);
uint256 SLX_supplyAfterRedeem = SLX.totalSupply();
uint256 SLX_balanceAfterRedeem = SLX.balanceOf(here);
- uint256 sDAI_balanceAfterRedeem = sDAI.balanceOf(SLX_address);
+ uint256 totalAssetsAfterRedeem = SLX.totalAssets();
assertApproxEqAbs(
SLX_balanceAfterRedeem,
SLX_balanceAfterMint - SLX_amountIn,
- 0.002e18,
+ 0.000000002e18,
"SLX balance should decrease after redeeming"
);
assertApproxEqAbs(
SLX_supplyAfterRedeem,
SLX_supplyAfterMint - SLX_amountBurned,
- 0.002e18,
+ 0.000000002e18,
"SLX supply should decrease after redeeming"
);
assertApproxEqAbs(
- sDAI_balanceAfterRedeem,
- sDAI_balanceAfterMint - sDAI_amountWithdrawn,
- 0.002e18,
- "sDAI balance should increase after redeeming"
+ totalAssetsAfterRedeem,
+ totalAssetsAfterMint - reserve_amountWithdrawn,
+ 0.00002e18,
+ "reserve balance should increase after redeeming"
+ );
+ assertApproxEqAbs(
+ SLX.balanceOf(tipAccount()),
+ SLX_amountIn - SLX_amountBurned,
+ 0.000000002e18,
+ "tip should be difference between all shares burnt vs shares spent"
);
-
- // Check for fees
- uint256 SLX_feeBalance = SLX.balanceOf(SLX.FEE_ACCOUNT());
- assertEq(SLX_feeBalance, 1793880000000000000);
- }
-
- function testKnowAccountBalance() public {
- uint256 knowHolderBalance = sDAI.balanceOf(sDAI_address);
- assertApproxEqAbs(knowHolderBalance, 30.5e18, 0.001e18, "sDAI balance should approximately equal 30.49 sDAI");
}
}