diff --git a/README.md b/README.md index 9265b45..880a0fa 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,134 @@ -## Foundry +# HR_Project_Web3Bridge -**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** +This repository contains the smart contracts and related scripts for the HR_Project_Web3Bridge, a blockchain-based solution for managing organizations and contracts. The project leverages [Foundry](https://book.getfoundry.sh/) for development, testing, and deployment of Solidity smart contracts. -Foundry consists of: +## Deployed Contracts (Sepolia Network) -- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). -- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. -- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. -- **Chisel**: Fast, utilitarian, and verbose solidity REPL. +- **OrganizationFactory**: [0xe1db6db5f799feeb969088ac1ec7072b295a55a0](https://sepolia-blockscout.lisk.com/address/0xe1db6db5f799feeb969088ac1ec7072b295a55a0) +- **OrganizationContract**: [0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b](https://sepolia-blockscout.lisk.com/address/0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b) -## Documentation +## Table of Contents -https://book.getfoundry.sh/ +- [Overview](#overview) +- [Project Structure](#project-structure) +- [Installation](#installation) +- [Usage](#usage) +- [Smart Contracts](#smart-contracts) +- [Testing](#testing) +- [Deployment](#deployment) +- [Contributing](#contributing) +- [License](#license) -## Usage +## Overview -### Build +HR_Project_Web3Bridge is a decentralized solution that enables organizations to manage their operations on the blockchain. The project consists of multiple smart contracts that handle organization creation, management, and token operations. -```shell -$ forge build -``` +### Key Features + +- Organization creation and management +- Token management system +- Secure contract interactions +- Full test coverage +- Foundry-based development environment -### Test +## Project Structure -```shell -$ forge test +``` +contracts/ +├── src/ +│ ├── contracts/ # Main contract implementations +│ ├── interfaces/ # Contract interfaces +│ └── libraries/ # Shared libraries and utilities +├── script/ # Deployment scripts +├── test/ # Contract test files +└── lib/ # Dependencies and libraries ``` -### Format +## Installation -```shell -$ forge fmt -``` +1. **Prerequisites** + - [Foundry](https://book.getfoundry.sh/getting-started/installation.html) + - Git -### Gas Snapshots +2. **Clone the Repository** + ```bash + git clone + cd HR_Project_Web3Bridge/contracts + ``` -```shell -$ forge snapshot -``` +3. **Install Dependencies** + ```bash + forge install + ``` -### Anvil +## Usage -```shell -$ anvil +### Compiling Contracts +```bash +forge build ``` -### Deploy +### Running Tests +```bash +forge test +``` -```shell -$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +### Deploying Contracts +```bash +forge script script/deploy.s.sol --rpc-url --private-key --broadcast ``` -### Cast +## Smart Contracts + +### OrganizationFactory +- Main contract for creating and managing organizations +- Handles organization deployment and registration +- Maintains organization registry + +### OrganizationContract +- Implements organization-specific logic +- Manages organization members and roles +- Handles organization-specific operations -```shell -$ cast +### Additional Components +- **IERC20.sol**: Standard ERC20 interface implementation +- **Tokens.sol**: Token management functionality +- **errors.sol**: Custom error definitions +- **structs.sol**: Shared data structures + +## Testing + +The project includes comprehensive tests for all smart contracts. Test files are located in the `test/` directory: + +- OrganizationContract.t.sol +- OrganizationFactory.t.sol +- Token.t.sol + +To run specific tests: +```bash +forge test --match-contract OrganizationFactoryTest ``` -### Help +## Deployment + +The project uses Foundry's deployment system through scripts in the `script/` directory. The main deployment script is `deploy.s.sol`. -```shell -$ forge --help -$ anvil --help -$ cast --help +### Deployment Commands +```bash +# Deploy to local network +forge script script/deploy.s.sol --fork-url http://localhost:8545 --broadcast + +# Deploy to testnet +forge script script/deploy.s.sol --rpc-url --private-key --broadcast --verify ``` + +### Verification Commands +Verification commands can be found in `verify_command.txt` + +## Contributing + +1. Fork the repository +2. Create a feature branch +3. Commit your changes +4. Push to the branch +5. Open a Pull Request diff --git a/broadcast/deploy.s.sol/4202/run-1745498012.json b/broadcast/deploy.s.sol/4202/run-1745498012.json new file mode 100644 index 0000000..b515115 --- /dev/null +++ b/broadcast/deploy.s.sol/4202/run-1745498012.json @@ -0,0 +1,240 @@ +{ + "transactions": [ + { + "hash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionType": "CREATE", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": null, + "arguments": [ + "0xCcB723EDa6201FB9655e0301AA1C2d73dd5aa51F" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "gas": "0x498758", + "value": "0x0", + "input": "0x608034608457601f6141c338819003918201601f19168301916001600160401b03831184841017608857808492602094604052833981010312608457516001600160a01b038116908190036084575f8054336001600160a01b0319818116928116929092171790915560038054909116919091179055604051614126908161009d8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a38111c14610da5575080631d16392314610d885780635a1f740614610ce65780635fa7b58414610bda57806361ba81d814610aae57806368c4ac2614610a765780636a2b20c214610a365780636f0fccab146109d157806374d27f341461092f57806375151b63146108d75780638da5cb5b146108b0578063a411ef20146103fb578063b0b22c2c146101d1578063be27432f14610117578063c415b95c146100ee5763e49fba6b146100ce575f80fd5b346100eb57806003193601126100eb576020600254604051908152f35b80fd5b50346100eb57806003193601126100eb576003546040516001600160a01b039091168152602090f35b50346100eb5760403660031901126100eb57610131610de4565b9061013a610dfa565b91610143610fca565b6001600160a01b039081168252600460205260408220541680156101c2578192813b156101be576040516301485b9d60e71b81526001600160a01b0390911660048201529082908290602490829084905af180156101b3576101a25750f35b816101ac91610e78565b6100eb5780f35b6040513d84823e3d90fd5b5050fd5b639551f8b360e01b8252600482fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f757610203903690600401610f5e565b61020b610dfa565b610213610fca565b61021b610fca565b8151156103e8576001600160a01b03169081156103d95781835260016020526102476040842054610e10565b6103ca57818352600160205260408320815167ffffffffffffffff81116103b6576102728254610e10565b601f811161037b575b506020601f821160011461031c5790806102a9928791610311575b508160011b915f199060031b1c19161790565b90555b6002545f1981146102fd577f7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a9160016102f79201600255604051918291602083526020830190610f3a565b0390a280f35b634e487b7160e01b84526011600452602484fd5b90508401515f610296565b82865280862090601f198316875b8181106103635750908360019493921061034b575b5050811b0190556102ac565b8501515f1960f88460031b161c191690555f8061033f565b9192602060018192868a01518155019401920161032a565b6103a69083875260208720601f840160051c810191602085106103ac575b601f0160051c0190610fb4565b5f61027b565b9091508190610399565b634e487b7160e01b85526041600452602485fd5b63c78e82ad60e01b8352600483fd5b630f58058360e11b8352600483fd5b6316c31e7760e21b8352600483fd5b5080fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f75761042d903690600401610f5e565b60243567ffffffffffffffff81116108ac5761044d903690600401610f5e565b9080511561089d5781511561088e57338352600460205260408320546001600160a01b031661087f5760035460405190613104808301916001600160a01b03169067ffffffffffffffff83118484101761086b57916104de918493610fed8539338252306020830152604082015260a060608201526104cf60a0820186610f3a565b90608081830391015285610f3a565b039084f080156108605760018060a01b03169133845260046020526040842060018060a01b0384166bffffffffffffffffffffffff60a01b82541617905560405160208101903360601b82524260348201526034815261053f605482610e78565b5190206040519061054f82610e48565b8152602081018381526040820183815260608301338152608084019142835260a0850193428552338a52600560205260408a2095518655600186019051805167ffffffffffffffff811161084c578b6105a88454610e10565b601f811161081c575b505060208c601f83116001146107ba57906105e093836106dc575b50508160011b915f199060031b1c19161790565b90555b518051600286019167ffffffffffffffff82116107a6579060209a83926106108c9a999897969554610e10565b601f8111610777575b508c91601f84116001146106e757836106c7999794600597947ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9c9a979461067494926106dc5750508160011b915f199060031b1c19161790565b90555b516003850180546001600160a01b0319166001600160a01b039290921691909117905551600484015551910155604051606080825290956106ba91870190610f3a565b9085820388870152610f3a565b924260408201528033940390a3604051908152f35b015190505f806105cc565b9190601f198416858452828420935b81811061075d575093600596937ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9b999693600193836106c79d9b9810610745575b505050811b019055610677565b01515f1960f88460031b161c191690555f8080610738565b8383015185558e9c50600190940193928f01928f016106f6565b6107a0908584528e8420601f860160051c810191602087106103ac57601f0160051c0190610fb4565b5f610619565b634e487b7160e01b8b52604160045260248bfd5b9192601f198416858452828420935b81811061080457509084600195949392106107ec575b505050811b0190556105e3565b01515f1960f88460031b161c191690555f80806107df565b929360206001819287860151815501950193016107c9565b60208286610845945220601f840160051c810191602085106103ac57601f0160051c0190610fb4565b8b5f6105b1565b634e487b7160e01b8c52604160045260248cfd5b6040513d85823e3d90fd5b634e487b7160e01b87526041600452602487fd5b6369c24f0b60e01b8352600483fd5b633e61080d60e01b8352600483fd5b636cc61e7360e11b8352600483fd5b8280fd5b50346100eb57806003193601126100eb57546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b036108f9610de4565b168015610920576040826109169260209452600184522054610e10565b1515604051908152f35b630f58058360e11b8252600482fd5b50346109be5760403660031901126109be57610949610de4565b610951610fca565b6001600160a01b039081165f908152600460205260409020541680156109c257803b156109be575f809160246040518094819363096a8ab760e01b8352833560048401525af180156109b3576109a5575080f35b6109b191505f90610e78565b005b6040513d5f823e3d90fd5b5f80fd5b639551f8b360e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b036109f2610de4565b168015610a27575f526001602052610a23610a0f60405f20610e9a565b604051918291602083526020830190610f3a565b0390f35b630f58058360e11b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610a57610de4565b165f526004602052602060018060a01b0360405f205416604051908152f35b346109be5760203660031901126109be576001600160a01b03610a97610de4565b165f526001602052610a23610a0f60405f20610e9a565b346109be5760203660031901126109be57610ac7610de4565b5f60a0604051610ad681610e48565b8281526060602082015260606040820152826060820152826080820152015260018060a01b0316805f52600560205260405f2054156109c2575f52600560205260405f20604051610b2681610e48565b81548152610b3660018301610e9a565b9160208201928352610b4a60028201610e9a565b6040830190815260018060a01b036003830154169160608401928352610bba60056004830154926080870193845201549260a08601938452610ba7604051978897602089525160208901525160c0604089015260e0880190610f3a565b9051868203601f19016060880152610f3a565b92516001600160a01b031660808501525160a08401525160c08301520390f35b346109be5760203660031901126109be57610bf3610de4565b610bfb610fca565b6001600160a01b03168015610cd757610c12610fca565b805f526001602052610c2760405f2054610e10565b15610cd757805f52600160205260405f20610c428154610e10565b9081610c94575b50506002548015610c80575f19016002557f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd35f80a2005b634e487b7160e01b5f52601160045260245ffd5b81601f5f9311600114610cab5750555b8180610c49565b81835260208320610cc791601f0160051c810190600101610fb4565b8082528160208120915555610ca4565b63c1ab6dc160e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610d07610de4565b165f52600560205260405f208054610d2160018301610e9a565b91610d2e60028201610e9a565b60018060a01b0360038301541691610d746005600483015492015492610d66604051978897885260c0602089015260c0880190610f3a565b908682036040880152610f3a565b926060850152608084015260a08301520390f35b346109be575f3660031901126109be576020600254604051908152f35b346109be5760203660031901126109be576020906001600160a01b03610dc9610de4565b165f9081526004835260409020546001600160a01b03168152f35b600435906001600160a01b03821682036109be57565b602435906001600160a01b03821682036109be57565b90600182811c92168015610e3e575b6020831014610e2a57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e1f565b60c0810190811067ffffffffffffffff821117610e6457604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e6457604052565b9060405191825f825492610ead84610e10565b8084529360018116908115610f185750600114610ed4575b50610ed292500383610e78565b565b90505f9291925260205f20905f915b818310610efc575050906020610ed2928201015f610ec5565b6020919350806001915483858901015201910190918492610ee3565b905060209250610ed294915060ff191682840152151560051b8201015f610ec5565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b81601f820112156109be5780359067ffffffffffffffff8211610e645760405192610f93601f8401601f191660200185610e78565b828452602083830101116109be57815f926020809301838601378301015290565b818110610fbf575050565b5f8155600101610fb4565b5f546001600160a01b03163303610fdd57565b631a27eac360e11b5f5260045ffdfe6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c0033a2646970667358221220f9218596c9dcf73850d7727d5f278b137477cbbc9554e8d05f0fc8a6b36c113464736f6c634300081c0033000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f", + "nonce": "0x1", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "createOrganization(string,string)", + "arguments": [ + "My Organization", + "This is a description of my organization." + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x3ba233", + "value": "0x0", + "input": "0xa411ef2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x106a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "initCode": "0x6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c00330000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e080000000000000000000000004e0b37378376bd17ff4736b006809d3168fc5b34000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "addToken(string,address)", + "arguments": [ + "MyToken", + "0x3677F7827760016702d034837bD2FB8E6Ba618DD" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x1852a", + "value": "0x0", + "input": "0xb0b22c2c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd00000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionType": "CALL", + "contractName": "OrganizationContract", + "contractAddress": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "function": "createRecipient(address,string,uint256)", + "arguments": [ + "0x8A912047689651E7119CD64453D78dBD42030fB5", + "John Doe", + "1000" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "gas": "0x4efa0", + "value": "0x0", + "input": "0x5c62c9670000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3943cb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionIndex": "0x1", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x388f7f", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": null, + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x13f500b3cba7", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x248ed" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x64703f", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0xf4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae", + "0x000000000000000000000000a9765e241283ca2f713a42f71b8bada7d21c7f6c", + "0x0000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e08" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000680a2d62000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000400000010000000800000000000000000000000001000000000000000000000000000000000000000000000000000001000000000000000200000000000400000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x2b2c74", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x42b63a4166", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x7a3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6589ff", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0x7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a", + "0x0000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000000020000000000001000000000000000000000000000400000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x119c0", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3697136fe4", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x691cd7", + "logs": [ + { + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "topics": [ + "0x407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea16063610908", + "0x8a492ea4a7ef7db258c33dbf618658527b53baad4e062111c4a93f9bcec3a67e", + "0x0000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00010000000000000000000000000000100000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000400000000100000000000000000000000000000000000000000000000000000000000000008000000008000000000000400000000000000000000000010000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x392d8", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3af2e6e227", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x6bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745498012, + "chain": 4202, + "commit": "cd6db15" +} \ No newline at end of file diff --git a/broadcast/deploy.s.sol/4202/run-1745498130.json b/broadcast/deploy.s.sol/4202/run-1745498130.json new file mode 100644 index 0000000..99e7e8c --- /dev/null +++ b/broadcast/deploy.s.sol/4202/run-1745498130.json @@ -0,0 +1,240 @@ +{ + "transactions": [ + { + "hash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionType": "CREATE", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": null, + "arguments": [ + "0xCcB723EDa6201FB9655e0301AA1C2d73dd5aa51F" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "gas": "0x498758", + "value": "0x0", + "input": "0x608034608457601f6141c338819003918201601f19168301916001600160401b03831184841017608857808492602094604052833981010312608457516001600160a01b038116908190036084575f8054336001600160a01b0319818116928116929092171790915560038054909116919091179055604051614126908161009d8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a38111c14610da5575080631d16392314610d885780635a1f740614610ce65780635fa7b58414610bda57806361ba81d814610aae57806368c4ac2614610a765780636a2b20c214610a365780636f0fccab146109d157806374d27f341461092f57806375151b63146108d75780638da5cb5b146108b0578063a411ef20146103fb578063b0b22c2c146101d1578063be27432f14610117578063c415b95c146100ee5763e49fba6b146100ce575f80fd5b346100eb57806003193601126100eb576020600254604051908152f35b80fd5b50346100eb57806003193601126100eb576003546040516001600160a01b039091168152602090f35b50346100eb5760403660031901126100eb57610131610de4565b9061013a610dfa565b91610143610fca565b6001600160a01b039081168252600460205260408220541680156101c2578192813b156101be576040516301485b9d60e71b81526001600160a01b0390911660048201529082908290602490829084905af180156101b3576101a25750f35b816101ac91610e78565b6100eb5780f35b6040513d84823e3d90fd5b5050fd5b639551f8b360e01b8252600482fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f757610203903690600401610f5e565b61020b610dfa565b610213610fca565b61021b610fca565b8151156103e8576001600160a01b03169081156103d95781835260016020526102476040842054610e10565b6103ca57818352600160205260408320815167ffffffffffffffff81116103b6576102728254610e10565b601f811161037b575b506020601f821160011461031c5790806102a9928791610311575b508160011b915f199060031b1c19161790565b90555b6002545f1981146102fd577f7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a9160016102f79201600255604051918291602083526020830190610f3a565b0390a280f35b634e487b7160e01b84526011600452602484fd5b90508401515f610296565b82865280862090601f198316875b8181106103635750908360019493921061034b575b5050811b0190556102ac565b8501515f1960f88460031b161c191690555f8061033f565b9192602060018192868a01518155019401920161032a565b6103a69083875260208720601f840160051c810191602085106103ac575b601f0160051c0190610fb4565b5f61027b565b9091508190610399565b634e487b7160e01b85526041600452602485fd5b63c78e82ad60e01b8352600483fd5b630f58058360e11b8352600483fd5b6316c31e7760e21b8352600483fd5b5080fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f75761042d903690600401610f5e565b60243567ffffffffffffffff81116108ac5761044d903690600401610f5e565b9080511561089d5781511561088e57338352600460205260408320546001600160a01b031661087f5760035460405190613104808301916001600160a01b03169067ffffffffffffffff83118484101761086b57916104de918493610fed8539338252306020830152604082015260a060608201526104cf60a0820186610f3a565b90608081830391015285610f3a565b039084f080156108605760018060a01b03169133845260046020526040842060018060a01b0384166bffffffffffffffffffffffff60a01b82541617905560405160208101903360601b82524260348201526034815261053f605482610e78565b5190206040519061054f82610e48565b8152602081018381526040820183815260608301338152608084019142835260a0850193428552338a52600560205260408a2095518655600186019051805167ffffffffffffffff811161084c578b6105a88454610e10565b601f811161081c575b505060208c601f83116001146107ba57906105e093836106dc575b50508160011b915f199060031b1c19161790565b90555b518051600286019167ffffffffffffffff82116107a6579060209a83926106108c9a999897969554610e10565b601f8111610777575b508c91601f84116001146106e757836106c7999794600597947ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9c9a979461067494926106dc5750508160011b915f199060031b1c19161790565b90555b516003850180546001600160a01b0319166001600160a01b039290921691909117905551600484015551910155604051606080825290956106ba91870190610f3a565b9085820388870152610f3a565b924260408201528033940390a3604051908152f35b015190505f806105cc565b9190601f198416858452828420935b81811061075d575093600596937ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9b999693600193836106c79d9b9810610745575b505050811b019055610677565b01515f1960f88460031b161c191690555f8080610738565b8383015185558e9c50600190940193928f01928f016106f6565b6107a0908584528e8420601f860160051c810191602087106103ac57601f0160051c0190610fb4565b5f610619565b634e487b7160e01b8b52604160045260248bfd5b9192601f198416858452828420935b81811061080457509084600195949392106107ec575b505050811b0190556105e3565b01515f1960f88460031b161c191690555f80806107df565b929360206001819287860151815501950193016107c9565b60208286610845945220601f840160051c810191602085106103ac57601f0160051c0190610fb4565b8b5f6105b1565b634e487b7160e01b8c52604160045260248cfd5b6040513d85823e3d90fd5b634e487b7160e01b87526041600452602487fd5b6369c24f0b60e01b8352600483fd5b633e61080d60e01b8352600483fd5b636cc61e7360e11b8352600483fd5b8280fd5b50346100eb57806003193601126100eb57546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b036108f9610de4565b168015610920576040826109169260209452600184522054610e10565b1515604051908152f35b630f58058360e11b8252600482fd5b50346109be5760403660031901126109be57610949610de4565b610951610fca565b6001600160a01b039081165f908152600460205260409020541680156109c257803b156109be575f809160246040518094819363096a8ab760e01b8352833560048401525af180156109b3576109a5575080f35b6109b191505f90610e78565b005b6040513d5f823e3d90fd5b5f80fd5b639551f8b360e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b036109f2610de4565b168015610a27575f526001602052610a23610a0f60405f20610e9a565b604051918291602083526020830190610f3a565b0390f35b630f58058360e11b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610a57610de4565b165f526004602052602060018060a01b0360405f205416604051908152f35b346109be5760203660031901126109be576001600160a01b03610a97610de4565b165f526001602052610a23610a0f60405f20610e9a565b346109be5760203660031901126109be57610ac7610de4565b5f60a0604051610ad681610e48565b8281526060602082015260606040820152826060820152826080820152015260018060a01b0316805f52600560205260405f2054156109c2575f52600560205260405f20604051610b2681610e48565b81548152610b3660018301610e9a565b9160208201928352610b4a60028201610e9a565b6040830190815260018060a01b036003830154169160608401928352610bba60056004830154926080870193845201549260a08601938452610ba7604051978897602089525160208901525160c0604089015260e0880190610f3a565b9051868203601f19016060880152610f3a565b92516001600160a01b031660808501525160a08401525160c08301520390f35b346109be5760203660031901126109be57610bf3610de4565b610bfb610fca565b6001600160a01b03168015610cd757610c12610fca565b805f526001602052610c2760405f2054610e10565b15610cd757805f52600160205260405f20610c428154610e10565b9081610c94575b50506002548015610c80575f19016002557f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd35f80a2005b634e487b7160e01b5f52601160045260245ffd5b81601f5f9311600114610cab5750555b8180610c49565b81835260208320610cc791601f0160051c810190600101610fb4565b8082528160208120915555610ca4565b63c1ab6dc160e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610d07610de4565b165f52600560205260405f208054610d2160018301610e9a565b91610d2e60028201610e9a565b60018060a01b0360038301541691610d746005600483015492015492610d66604051978897885260c0602089015260c0880190610f3a565b908682036040880152610f3a565b926060850152608084015260a08301520390f35b346109be575f3660031901126109be576020600254604051908152f35b346109be5760203660031901126109be576020906001600160a01b03610dc9610de4565b165f9081526004835260409020546001600160a01b03168152f35b600435906001600160a01b03821682036109be57565b602435906001600160a01b03821682036109be57565b90600182811c92168015610e3e575b6020831014610e2a57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e1f565b60c0810190811067ffffffffffffffff821117610e6457604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e6457604052565b9060405191825f825492610ead84610e10565b8084529360018116908115610f185750600114610ed4575b50610ed292500383610e78565b565b90505f9291925260205f20905f915b818310610efc575050906020610ed2928201015f610ec5565b6020919350806001915483858901015201910190918492610ee3565b905060209250610ed294915060ff191682840152151560051b8201015f610ec5565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b81601f820112156109be5780359067ffffffffffffffff8211610e645760405192610f93601f8401601f191660200185610e78565b828452602083830101116109be57815f926020809301838601378301015290565b818110610fbf575050565b5f8155600101610fb4565b5f546001600160a01b03163303610fdd57565b631a27eac360e11b5f5260045ffdfe6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c0033a2646970667358221220f9218596c9dcf73850d7727d5f278b137477cbbc9554e8d05f0fc8a6b36c113464736f6c634300081c0033000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f", + "nonce": "0x1", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "createOrganization(string,string)", + "arguments": [ + "My Organization", + "This is a description of my organization." + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x3ba233", + "value": "0x0", + "input": "0xa411ef2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x106a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "initCode": "0x6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c00330000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e080000000000000000000000004e0b37378376bd17ff4736b006809d3168fc5b34000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "addToken(string,address)", + "arguments": [ + "MyToken", + "0x3677F7827760016702d034837bD2FB8E6Ba618DD" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x1852a", + "value": "0x0", + "input": "0xb0b22c2c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd00000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionType": "CALL", + "contractName": "OrganizationContract", + "contractAddress": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "function": "createRecipient(address,string,uint256)", + "arguments": [ + "0x8A912047689651E7119CD64453D78dBD42030fB5", + "John Doe", + "1000" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "gas": "0x4efa0", + "value": "0x0", + "input": "0x5c62c9670000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3943cb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionIndex": "0x1", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x388f7f", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": null, + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x13f500b3cba7", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x248ed" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x64703f", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0xf4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae", + "0x000000000000000000000000a9765e241283ca2f713a42f71b8bada7d21c7f6c", + "0x0000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e08" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000680a2d62000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000400000010000000800000000000000000000000001000000000000000000000000000000000000000000000000000001000000000000000200000000000400000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x2b2c74", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x42b63a4166", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x7a3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6589ff", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0x7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a", + "0x0000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000000020000000000001000000000000000000000000000400000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x119c0", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3697136fe4", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x691cd7", + "logs": [ + { + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "topics": [ + "0x407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea16063610908", + "0x8a492ea4a7ef7db258c33dbf618658527b53baad4e062111c4a93f9bcec3a67e", + "0x0000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00010000000000000000000000000000100000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000400000000100000000000000000000000000000000000000000000000000000000000000008000000008000000000000400000000000000000000000010000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x392d8", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3af2e6e227", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x6bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745498130, + "chain": 4202, + "commit": "cd6db15" +} \ No newline at end of file diff --git a/broadcast/deploy.s.sol/4202/run-1745498326.json b/broadcast/deploy.s.sol/4202/run-1745498326.json new file mode 100644 index 0000000..eb8a573 --- /dev/null +++ b/broadcast/deploy.s.sol/4202/run-1745498326.json @@ -0,0 +1,240 @@ +{ + "transactions": [ + { + "hash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionType": "CREATE", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": null, + "arguments": [ + "0xCcB723EDa6201FB9655e0301AA1C2d73dd5aa51F" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "gas": "0x498758", + "value": "0x0", + "input": "0x608034608457601f6141c338819003918201601f19168301916001600160401b03831184841017608857808492602094604052833981010312608457516001600160a01b038116908190036084575f8054336001600160a01b0319818116928116929092171790915560038054909116919091179055604051614126908161009d8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a38111c14610da5575080631d16392314610d885780635a1f740614610ce65780635fa7b58414610bda57806361ba81d814610aae57806368c4ac2614610a765780636a2b20c214610a365780636f0fccab146109d157806374d27f341461092f57806375151b63146108d75780638da5cb5b146108b0578063a411ef20146103fb578063b0b22c2c146101d1578063be27432f14610117578063c415b95c146100ee5763e49fba6b146100ce575f80fd5b346100eb57806003193601126100eb576020600254604051908152f35b80fd5b50346100eb57806003193601126100eb576003546040516001600160a01b039091168152602090f35b50346100eb5760403660031901126100eb57610131610de4565b9061013a610dfa565b91610143610fca565b6001600160a01b039081168252600460205260408220541680156101c2578192813b156101be576040516301485b9d60e71b81526001600160a01b0390911660048201529082908290602490829084905af180156101b3576101a25750f35b816101ac91610e78565b6100eb5780f35b6040513d84823e3d90fd5b5050fd5b639551f8b360e01b8252600482fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f757610203903690600401610f5e565b61020b610dfa565b610213610fca565b61021b610fca565b8151156103e8576001600160a01b03169081156103d95781835260016020526102476040842054610e10565b6103ca57818352600160205260408320815167ffffffffffffffff81116103b6576102728254610e10565b601f811161037b575b506020601f821160011461031c5790806102a9928791610311575b508160011b915f199060031b1c19161790565b90555b6002545f1981146102fd577f7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a9160016102f79201600255604051918291602083526020830190610f3a565b0390a280f35b634e487b7160e01b84526011600452602484fd5b90508401515f610296565b82865280862090601f198316875b8181106103635750908360019493921061034b575b5050811b0190556102ac565b8501515f1960f88460031b161c191690555f8061033f565b9192602060018192868a01518155019401920161032a565b6103a69083875260208720601f840160051c810191602085106103ac575b601f0160051c0190610fb4565b5f61027b565b9091508190610399565b634e487b7160e01b85526041600452602485fd5b63c78e82ad60e01b8352600483fd5b630f58058360e11b8352600483fd5b6316c31e7760e21b8352600483fd5b5080fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f75761042d903690600401610f5e565b60243567ffffffffffffffff81116108ac5761044d903690600401610f5e565b9080511561089d5781511561088e57338352600460205260408320546001600160a01b031661087f5760035460405190613104808301916001600160a01b03169067ffffffffffffffff83118484101761086b57916104de918493610fed8539338252306020830152604082015260a060608201526104cf60a0820186610f3a565b90608081830391015285610f3a565b039084f080156108605760018060a01b03169133845260046020526040842060018060a01b0384166bffffffffffffffffffffffff60a01b82541617905560405160208101903360601b82524260348201526034815261053f605482610e78565b5190206040519061054f82610e48565b8152602081018381526040820183815260608301338152608084019142835260a0850193428552338a52600560205260408a2095518655600186019051805167ffffffffffffffff811161084c578b6105a88454610e10565b601f811161081c575b505060208c601f83116001146107ba57906105e093836106dc575b50508160011b915f199060031b1c19161790565b90555b518051600286019167ffffffffffffffff82116107a6579060209a83926106108c9a999897969554610e10565b601f8111610777575b508c91601f84116001146106e757836106c7999794600597947ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9c9a979461067494926106dc5750508160011b915f199060031b1c19161790565b90555b516003850180546001600160a01b0319166001600160a01b039290921691909117905551600484015551910155604051606080825290956106ba91870190610f3a565b9085820388870152610f3a565b924260408201528033940390a3604051908152f35b015190505f806105cc565b9190601f198416858452828420935b81811061075d575093600596937ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9b999693600193836106c79d9b9810610745575b505050811b019055610677565b01515f1960f88460031b161c191690555f8080610738565b8383015185558e9c50600190940193928f01928f016106f6565b6107a0908584528e8420601f860160051c810191602087106103ac57601f0160051c0190610fb4565b5f610619565b634e487b7160e01b8b52604160045260248bfd5b9192601f198416858452828420935b81811061080457509084600195949392106107ec575b505050811b0190556105e3565b01515f1960f88460031b161c191690555f80806107df565b929360206001819287860151815501950193016107c9565b60208286610845945220601f840160051c810191602085106103ac57601f0160051c0190610fb4565b8b5f6105b1565b634e487b7160e01b8c52604160045260248cfd5b6040513d85823e3d90fd5b634e487b7160e01b87526041600452602487fd5b6369c24f0b60e01b8352600483fd5b633e61080d60e01b8352600483fd5b636cc61e7360e11b8352600483fd5b8280fd5b50346100eb57806003193601126100eb57546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b036108f9610de4565b168015610920576040826109169260209452600184522054610e10565b1515604051908152f35b630f58058360e11b8252600482fd5b50346109be5760403660031901126109be57610949610de4565b610951610fca565b6001600160a01b039081165f908152600460205260409020541680156109c257803b156109be575f809160246040518094819363096a8ab760e01b8352833560048401525af180156109b3576109a5575080f35b6109b191505f90610e78565b005b6040513d5f823e3d90fd5b5f80fd5b639551f8b360e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b036109f2610de4565b168015610a27575f526001602052610a23610a0f60405f20610e9a565b604051918291602083526020830190610f3a565b0390f35b630f58058360e11b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610a57610de4565b165f526004602052602060018060a01b0360405f205416604051908152f35b346109be5760203660031901126109be576001600160a01b03610a97610de4565b165f526001602052610a23610a0f60405f20610e9a565b346109be5760203660031901126109be57610ac7610de4565b5f60a0604051610ad681610e48565b8281526060602082015260606040820152826060820152826080820152015260018060a01b0316805f52600560205260405f2054156109c2575f52600560205260405f20604051610b2681610e48565b81548152610b3660018301610e9a565b9160208201928352610b4a60028201610e9a565b6040830190815260018060a01b036003830154169160608401928352610bba60056004830154926080870193845201549260a08601938452610ba7604051978897602089525160208901525160c0604089015260e0880190610f3a565b9051868203601f19016060880152610f3a565b92516001600160a01b031660808501525160a08401525160c08301520390f35b346109be5760203660031901126109be57610bf3610de4565b610bfb610fca565b6001600160a01b03168015610cd757610c12610fca565b805f526001602052610c2760405f2054610e10565b15610cd757805f52600160205260405f20610c428154610e10565b9081610c94575b50506002548015610c80575f19016002557f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd35f80a2005b634e487b7160e01b5f52601160045260245ffd5b81601f5f9311600114610cab5750555b8180610c49565b81835260208320610cc791601f0160051c810190600101610fb4565b8082528160208120915555610ca4565b63c1ab6dc160e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610d07610de4565b165f52600560205260405f208054610d2160018301610e9a565b91610d2e60028201610e9a565b60018060a01b0360038301541691610d746005600483015492015492610d66604051978897885260c0602089015260c0880190610f3a565b908682036040880152610f3a565b926060850152608084015260a08301520390f35b346109be575f3660031901126109be576020600254604051908152f35b346109be5760203660031901126109be576020906001600160a01b03610dc9610de4565b165f9081526004835260409020546001600160a01b03168152f35b600435906001600160a01b03821682036109be57565b602435906001600160a01b03821682036109be57565b90600182811c92168015610e3e575b6020831014610e2a57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e1f565b60c0810190811067ffffffffffffffff821117610e6457604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e6457604052565b9060405191825f825492610ead84610e10565b8084529360018116908115610f185750600114610ed4575b50610ed292500383610e78565b565b90505f9291925260205f20905f915b818310610efc575050906020610ed2928201015f610ec5565b6020919350806001915483858901015201910190918492610ee3565b905060209250610ed294915060ff191682840152151560051b8201015f610ec5565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b81601f820112156109be5780359067ffffffffffffffff8211610e645760405192610f93601f8401601f191660200185610e78565b828452602083830101116109be57815f926020809301838601378301015290565b818110610fbf575050565b5f8155600101610fb4565b5f546001600160a01b03163303610fdd57565b631a27eac360e11b5f5260045ffdfe6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c0033a2646970667358221220f9218596c9dcf73850d7727d5f278b137477cbbc9554e8d05f0fc8a6b36c113464736f6c634300081c0033000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f", + "nonce": "0x1", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "createOrganization(string,string)", + "arguments": [ + "My Organization", + "This is a description of my organization." + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x3ba233", + "value": "0x0", + "input": "0xa411ef2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x106a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "initCode": "0x6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c00330000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e080000000000000000000000004e0b37378376bd17ff4736b006809d3168fc5b34000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "addToken(string,address)", + "arguments": [ + "MyToken", + "0x3677F7827760016702d034837bD2FB8E6Ba618DD" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x1852a", + "value": "0x0", + "input": "0xb0b22c2c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd00000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionType": "CALL", + "contractName": "OrganizationContract", + "contractAddress": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "function": "createRecipient(address,string,uint256)", + "arguments": [ + "0x8A912047689651E7119CD64453D78dBD42030fB5", + "John Doe", + "1000" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "gas": "0x4efa0", + "value": "0x0", + "input": "0x5c62c9670000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3943cb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionIndex": "0x1", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x388f7f", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": null, + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x13f500b3cba7", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x248ed" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x64703f", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0xf4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae", + "0x000000000000000000000000a9765e241283ca2f713a42f71b8bada7d21c7f6c", + "0x0000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e08" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000680a2d62000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000400000010000000800000000000000000000000001000000000000000000000000000000000000000000000000000001000000000000000200000000000400000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x2b2c74", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x42b63a4166", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x7a3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6589ff", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0x7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a", + "0x0000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000000020000000000001000000000000000000000000000400000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x119c0", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3697136fe4", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x691cd7", + "logs": [ + { + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "topics": [ + "0x407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea16063610908", + "0x8a492ea4a7ef7db258c33dbf618658527b53baad4e062111c4a93f9bcec3a67e", + "0x0000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00010000000000000000000000000000100000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000400000000100000000000000000000000000000000000000000000000000000000000000008000000008000000000000400000000000000000000000010000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x392d8", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3af2e6e227", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x6bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745498326, + "chain": 4202, + "commit": "cd6db15" +} \ No newline at end of file diff --git a/broadcast/deploy.s.sol/4202/run-1745498368.json b/broadcast/deploy.s.sol/4202/run-1745498368.json new file mode 100644 index 0000000..8c249d3 --- /dev/null +++ b/broadcast/deploy.s.sol/4202/run-1745498368.json @@ -0,0 +1,240 @@ +{ + "transactions": [ + { + "hash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionType": "CREATE", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": null, + "arguments": [ + "0xCcB723EDa6201FB9655e0301AA1C2d73dd5aa51F" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "gas": "0x498758", + "value": "0x0", + "input": "0x608034608457601f6141c338819003918201601f19168301916001600160401b03831184841017608857808492602094604052833981010312608457516001600160a01b038116908190036084575f8054336001600160a01b0319818116928116929092171790915560038054909116919091179055604051614126908161009d8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a38111c14610da5575080631d16392314610d885780635a1f740614610ce65780635fa7b58414610bda57806361ba81d814610aae57806368c4ac2614610a765780636a2b20c214610a365780636f0fccab146109d157806374d27f341461092f57806375151b63146108d75780638da5cb5b146108b0578063a411ef20146103fb578063b0b22c2c146101d1578063be27432f14610117578063c415b95c146100ee5763e49fba6b146100ce575f80fd5b346100eb57806003193601126100eb576020600254604051908152f35b80fd5b50346100eb57806003193601126100eb576003546040516001600160a01b039091168152602090f35b50346100eb5760403660031901126100eb57610131610de4565b9061013a610dfa565b91610143610fca565b6001600160a01b039081168252600460205260408220541680156101c2578192813b156101be576040516301485b9d60e71b81526001600160a01b0390911660048201529082908290602490829084905af180156101b3576101a25750f35b816101ac91610e78565b6100eb5780f35b6040513d84823e3d90fd5b5050fd5b639551f8b360e01b8252600482fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f757610203903690600401610f5e565b61020b610dfa565b610213610fca565b61021b610fca565b8151156103e8576001600160a01b03169081156103d95781835260016020526102476040842054610e10565b6103ca57818352600160205260408320815167ffffffffffffffff81116103b6576102728254610e10565b601f811161037b575b506020601f821160011461031c5790806102a9928791610311575b508160011b915f199060031b1c19161790565b90555b6002545f1981146102fd577f7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a9160016102f79201600255604051918291602083526020830190610f3a565b0390a280f35b634e487b7160e01b84526011600452602484fd5b90508401515f610296565b82865280862090601f198316875b8181106103635750908360019493921061034b575b5050811b0190556102ac565b8501515f1960f88460031b161c191690555f8061033f565b9192602060018192868a01518155019401920161032a565b6103a69083875260208720601f840160051c810191602085106103ac575b601f0160051c0190610fb4565b5f61027b565b9091508190610399565b634e487b7160e01b85526041600452602485fd5b63c78e82ad60e01b8352600483fd5b630f58058360e11b8352600483fd5b6316c31e7760e21b8352600483fd5b5080fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f75761042d903690600401610f5e565b60243567ffffffffffffffff81116108ac5761044d903690600401610f5e565b9080511561089d5781511561088e57338352600460205260408320546001600160a01b031661087f5760035460405190613104808301916001600160a01b03169067ffffffffffffffff83118484101761086b57916104de918493610fed8539338252306020830152604082015260a060608201526104cf60a0820186610f3a565b90608081830391015285610f3a565b039084f080156108605760018060a01b03169133845260046020526040842060018060a01b0384166bffffffffffffffffffffffff60a01b82541617905560405160208101903360601b82524260348201526034815261053f605482610e78565b5190206040519061054f82610e48565b8152602081018381526040820183815260608301338152608084019142835260a0850193428552338a52600560205260408a2095518655600186019051805167ffffffffffffffff811161084c578b6105a88454610e10565b601f811161081c575b505060208c601f83116001146107ba57906105e093836106dc575b50508160011b915f199060031b1c19161790565b90555b518051600286019167ffffffffffffffff82116107a6579060209a83926106108c9a999897969554610e10565b601f8111610777575b508c91601f84116001146106e757836106c7999794600597947ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9c9a979461067494926106dc5750508160011b915f199060031b1c19161790565b90555b516003850180546001600160a01b0319166001600160a01b039290921691909117905551600484015551910155604051606080825290956106ba91870190610f3a565b9085820388870152610f3a565b924260408201528033940390a3604051908152f35b015190505f806105cc565b9190601f198416858452828420935b81811061075d575093600596937ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9b999693600193836106c79d9b9810610745575b505050811b019055610677565b01515f1960f88460031b161c191690555f8080610738565b8383015185558e9c50600190940193928f01928f016106f6565b6107a0908584528e8420601f860160051c810191602087106103ac57601f0160051c0190610fb4565b5f610619565b634e487b7160e01b8b52604160045260248bfd5b9192601f198416858452828420935b81811061080457509084600195949392106107ec575b505050811b0190556105e3565b01515f1960f88460031b161c191690555f80806107df565b929360206001819287860151815501950193016107c9565b60208286610845945220601f840160051c810191602085106103ac57601f0160051c0190610fb4565b8b5f6105b1565b634e487b7160e01b8c52604160045260248cfd5b6040513d85823e3d90fd5b634e487b7160e01b87526041600452602487fd5b6369c24f0b60e01b8352600483fd5b633e61080d60e01b8352600483fd5b636cc61e7360e11b8352600483fd5b8280fd5b50346100eb57806003193601126100eb57546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b036108f9610de4565b168015610920576040826109169260209452600184522054610e10565b1515604051908152f35b630f58058360e11b8252600482fd5b50346109be5760403660031901126109be57610949610de4565b610951610fca565b6001600160a01b039081165f908152600460205260409020541680156109c257803b156109be575f809160246040518094819363096a8ab760e01b8352833560048401525af180156109b3576109a5575080f35b6109b191505f90610e78565b005b6040513d5f823e3d90fd5b5f80fd5b639551f8b360e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b036109f2610de4565b168015610a27575f526001602052610a23610a0f60405f20610e9a565b604051918291602083526020830190610f3a565b0390f35b630f58058360e11b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610a57610de4565b165f526004602052602060018060a01b0360405f205416604051908152f35b346109be5760203660031901126109be576001600160a01b03610a97610de4565b165f526001602052610a23610a0f60405f20610e9a565b346109be5760203660031901126109be57610ac7610de4565b5f60a0604051610ad681610e48565b8281526060602082015260606040820152826060820152826080820152015260018060a01b0316805f52600560205260405f2054156109c2575f52600560205260405f20604051610b2681610e48565b81548152610b3660018301610e9a565b9160208201928352610b4a60028201610e9a565b6040830190815260018060a01b036003830154169160608401928352610bba60056004830154926080870193845201549260a08601938452610ba7604051978897602089525160208901525160c0604089015260e0880190610f3a565b9051868203601f19016060880152610f3a565b92516001600160a01b031660808501525160a08401525160c08301520390f35b346109be5760203660031901126109be57610bf3610de4565b610bfb610fca565b6001600160a01b03168015610cd757610c12610fca565b805f526001602052610c2760405f2054610e10565b15610cd757805f52600160205260405f20610c428154610e10565b9081610c94575b50506002548015610c80575f19016002557f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd35f80a2005b634e487b7160e01b5f52601160045260245ffd5b81601f5f9311600114610cab5750555b8180610c49565b81835260208320610cc791601f0160051c810190600101610fb4565b8082528160208120915555610ca4565b63c1ab6dc160e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610d07610de4565b165f52600560205260405f208054610d2160018301610e9a565b91610d2e60028201610e9a565b60018060a01b0360038301541691610d746005600483015492015492610d66604051978897885260c0602089015260c0880190610f3a565b908682036040880152610f3a565b926060850152608084015260a08301520390f35b346109be575f3660031901126109be576020600254604051908152f35b346109be5760203660031901126109be576020906001600160a01b03610dc9610de4565b165f9081526004835260409020546001600160a01b03168152f35b600435906001600160a01b03821682036109be57565b602435906001600160a01b03821682036109be57565b90600182811c92168015610e3e575b6020831014610e2a57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e1f565b60c0810190811067ffffffffffffffff821117610e6457604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e6457604052565b9060405191825f825492610ead84610e10565b8084529360018116908115610f185750600114610ed4575b50610ed292500383610e78565b565b90505f9291925260205f20905f915b818310610efc575050906020610ed2928201015f610ec5565b6020919350806001915483858901015201910190918492610ee3565b905060209250610ed294915060ff191682840152151560051b8201015f610ec5565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b81601f820112156109be5780359067ffffffffffffffff8211610e645760405192610f93601f8401601f191660200185610e78565b828452602083830101116109be57815f926020809301838601378301015290565b818110610fbf575050565b5f8155600101610fb4565b5f546001600160a01b03163303610fdd57565b631a27eac360e11b5f5260045ffdfe6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c0033a2646970667358221220f9218596c9dcf73850d7727d5f278b137477cbbc9554e8d05f0fc8a6b36c113464736f6c634300081c0033000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f", + "nonce": "0x1", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "createOrganization(string,string)", + "arguments": [ + "My Organization", + "This is a description of my organization." + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x3ba233", + "value": "0x0", + "input": "0xa411ef2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "nonce": "0x2", + "chainId": "0x106a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "initCode": "0x6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c00330000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e080000000000000000000000004e0b37378376bd17ff4736b006809d3168fc5b34000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "function": "addToken(string,address)", + "arguments": [ + "MyToken", + "0x3677F7827760016702d034837bD2FB8E6Ba618DD" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "gas": "0x1852a", + "value": "0x0", + "input": "0xb0b22c2c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd00000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionType": "CALL", + "contractName": "OrganizationContract", + "contractAddress": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "function": "createRecipient(address,string,uint256)", + "arguments": [ + "0x8A912047689651E7119CD64453D78dBD42030fB5", + "John Doe", + "1000" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "gas": "0x4efa0", + "value": "0x0", + "input": "0x5c62c9670000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "nonce": "0x4", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3943cb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xba186b5e258644010da513f80bac36826403973448e110f2fb4013ecad78df0a", + "transactionIndex": "0x1", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x388f7f", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": null, + "contractAddress": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x13f500b3cba7", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x248ed" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x64703f", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0xf4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae", + "0x000000000000000000000000a9765e241283ca2f713a42f71b8bada7d21c7f6c", + "0x0000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e08" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000680a2d62000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000400000010000000800000000000000000000000001000000000000000000000000000000000000000000000000000001000000000000000200000000000400000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0xec38dabd51dd1a3078655ed33a94e7642e32e9915fdddb1f9652a354caefeaec", + "transactionIndex": "0x2", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x2b2c74", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x42b63a4166", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x7a3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6589ff", + "logs": [ + { + "address": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "topics": [ + "0x7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a", + "0x0000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000010000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100000000000000000020000000000001000000000000000000000000000400000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd01526c3d74a73d4c09f9ba85a21a48506b7e3f7877060e18853525c29a99137", + "transactionIndex": "0x3", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x119c0", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0x4e0b37378376bd17ff4736b006809d3168fc5b34", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3697136fe4", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x691cd7", + "logs": [ + { + "address": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "topics": [ + "0x407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea16063610908", + "0x8a492ea4a7ef7db258c33dbf618658527b53baad4e062111c4a93f9bcec3a67e", + "0x0000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00010000000000000000000000000000100000000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000400000000100000000000000000000000000000000000000000000000000000000000000008000000008000000000000400000000000000000000000010000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2da24b62dc783283073d7cce6c448cc6648a4f31934e34ae4ace6c23d672990c", + "transactionIndex": "0x4", + "blockHash": "0x3a0c1c830e905b6441944fa557e9835b1829b4ae6b95a2e57202c5ba554abb4b", + "blockNumber": "0x1329541", + "gasUsed": "0x392d8", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xa9765e241283ca2f713a42f71b8bada7d21c7f6c", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3af2e6e227", + "l1GasPrice": "0x31a09d4e1", + "l1GasUsed": "0x6bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745498368, + "chain": 4202, + "commit": "cd6db15" +} \ No newline at end of file diff --git a/broadcast/deploy.s.sol/4202/run-latest.json b/broadcast/deploy.s.sol/4202/run-latest.json new file mode 100644 index 0000000..57cc201 --- /dev/null +++ b/broadcast/deploy.s.sol/4202/run-latest.json @@ -0,0 +1,240 @@ +{ + "transactions": [ + { + "hash": "0x0467d572bd05ccfcc8fcf4a0acab311644210dea505c48982f0c2641d73dbf9b", + "transactionType": "CREATE", + "contractName": "OrganizationFactory", + "contractAddress": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "function": null, + "arguments": [ + "0xCcB723EDa6201FB9655e0301AA1C2d73dd5aa51F" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "gas": "0x498758", + "value": "0x0", + "input": "0x608034608457601f6141c338819003918201601f19168301916001600160401b03831184841017608857808492602094604052833981010312608457516001600160a01b038116908190036084575f8054336001600160a01b0319818116928116929092171790915560038054909116919091179055604051614126908161009d8239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a38111c14610da5575080631d16392314610d885780635a1f740614610ce65780635fa7b58414610bda57806361ba81d814610aae57806368c4ac2614610a765780636a2b20c214610a365780636f0fccab146109d157806374d27f341461092f57806375151b63146108d75780638da5cb5b146108b0578063a411ef20146103fb578063b0b22c2c146101d1578063be27432f14610117578063c415b95c146100ee5763e49fba6b146100ce575f80fd5b346100eb57806003193601126100eb576020600254604051908152f35b80fd5b50346100eb57806003193601126100eb576003546040516001600160a01b039091168152602090f35b50346100eb5760403660031901126100eb57610131610de4565b9061013a610dfa565b91610143610fca565b6001600160a01b039081168252600460205260408220541680156101c2578192813b156101be576040516301485b9d60e71b81526001600160a01b0390911660048201529082908290602490829084905af180156101b3576101a25750f35b816101ac91610e78565b6100eb5780f35b6040513d84823e3d90fd5b5050fd5b639551f8b360e01b8252600482fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f757610203903690600401610f5e565b61020b610dfa565b610213610fca565b61021b610fca565b8151156103e8576001600160a01b03169081156103d95781835260016020526102476040842054610e10565b6103ca57818352600160205260408320815167ffffffffffffffff81116103b6576102728254610e10565b601f811161037b575b506020601f821160011461031c5790806102a9928791610311575b508160011b915f199060031b1c19161790565b90555b6002545f1981146102fd577f7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a9160016102f79201600255604051918291602083526020830190610f3a565b0390a280f35b634e487b7160e01b84526011600452602484fd5b90508401515f610296565b82865280862090601f198316875b8181106103635750908360019493921061034b575b5050811b0190556102ac565b8501515f1960f88460031b161c191690555f8061033f565b9192602060018192868a01518155019401920161032a565b6103a69083875260208720601f840160051c810191602085106103ac575b601f0160051c0190610fb4565b5f61027b565b9091508190610399565b634e487b7160e01b85526041600452602485fd5b63c78e82ad60e01b8352600483fd5b630f58058360e11b8352600483fd5b6316c31e7760e21b8352600483fd5b5080fd5b50346100eb5760403660031901126100eb5760043567ffffffffffffffff81116103f75761042d903690600401610f5e565b60243567ffffffffffffffff81116108ac5761044d903690600401610f5e565b9080511561089d5781511561088e57338352600460205260408320546001600160a01b031661087f5760035460405190613104808301916001600160a01b03169067ffffffffffffffff83118484101761086b57916104de918493610fed8539338252306020830152604082015260a060608201526104cf60a0820186610f3a565b90608081830391015285610f3a565b039084f080156108605760018060a01b03169133845260046020526040842060018060a01b0384166bffffffffffffffffffffffff60a01b82541617905560405160208101903360601b82524260348201526034815261053f605482610e78565b5190206040519061054f82610e48565b8152602081018381526040820183815260608301338152608084019142835260a0850193428552338a52600560205260408a2095518655600186019051805167ffffffffffffffff811161084c578b6105a88454610e10565b601f811161081c575b505060208c601f83116001146107ba57906105e093836106dc575b50508160011b915f199060031b1c19161790565b90555b518051600286019167ffffffffffffffff82116107a6579060209a83926106108c9a999897969554610e10565b601f8111610777575b508c91601f84116001146106e757836106c7999794600597947ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9c9a979461067494926106dc5750508160011b915f199060031b1c19161790565b90555b516003850180546001600160a01b0319166001600160a01b039290921691909117905551600484015551910155604051606080825290956106ba91870190610f3a565b9085820388870152610f3a565b924260408201528033940390a3604051908152f35b015190505f806105cc565b9190601f198416858452828420935b81811061075d575093600596937ff4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae9b999693600193836106c79d9b9810610745575b505050811b019055610677565b01515f1960f88460031b161c191690555f8080610738565b8383015185558e9c50600190940193928f01928f016106f6565b6107a0908584528e8420601f860160051c810191602087106103ac57601f0160051c0190610fb4565b5f610619565b634e487b7160e01b8b52604160045260248bfd5b9192601f198416858452828420935b81811061080457509084600195949392106107ec575b505050811b0190556105e3565b01515f1960f88460031b161c191690555f80806107df565b929360206001819287860151815501950193016107c9565b60208286610845945220601f840160051c810191602085106103ac57601f0160051c0190610fb4565b8b5f6105b1565b634e487b7160e01b8c52604160045260248cfd5b6040513d85823e3d90fd5b634e487b7160e01b87526041600452602487fd5b6369c24f0b60e01b8352600483fd5b633e61080d60e01b8352600483fd5b636cc61e7360e11b8352600483fd5b8280fd5b50346100eb57806003193601126100eb57546040516001600160a01b039091168152602090f35b50346100eb5760203660031901126100eb576001600160a01b036108f9610de4565b168015610920576040826109169260209452600184522054610e10565b1515604051908152f35b630f58058360e11b8252600482fd5b50346109be5760403660031901126109be57610949610de4565b610951610fca565b6001600160a01b039081165f908152600460205260409020541680156109c257803b156109be575f809160246040518094819363096a8ab760e01b8352833560048401525af180156109b3576109a5575080f35b6109b191505f90610e78565b005b6040513d5f823e3d90fd5b5f80fd5b639551f8b360e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b036109f2610de4565b168015610a27575f526001602052610a23610a0f60405f20610e9a565b604051918291602083526020830190610f3a565b0390f35b630f58058360e11b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610a57610de4565b165f526004602052602060018060a01b0360405f205416604051908152f35b346109be5760203660031901126109be576001600160a01b03610a97610de4565b165f526001602052610a23610a0f60405f20610e9a565b346109be5760203660031901126109be57610ac7610de4565b5f60a0604051610ad681610e48565b8281526060602082015260606040820152826060820152826080820152015260018060a01b0316805f52600560205260405f2054156109c2575f52600560205260405f20604051610b2681610e48565b81548152610b3660018301610e9a565b9160208201928352610b4a60028201610e9a565b6040830190815260018060a01b036003830154169160608401928352610bba60056004830154926080870193845201549260a08601938452610ba7604051978897602089525160208901525160c0604089015260e0880190610f3a565b9051868203601f19016060880152610f3a565b92516001600160a01b031660808501525160a08401525160c08301520390f35b346109be5760203660031901126109be57610bf3610de4565b610bfb610fca565b6001600160a01b03168015610cd757610c12610fca565b805f526001602052610c2760405f2054610e10565b15610cd757805f52600160205260405f20610c428154610e10565b9081610c94575b50506002548015610c80575f19016002557f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd35f80a2005b634e487b7160e01b5f52601160045260245ffd5b81601f5f9311600114610cab5750555b8180610c49565b81835260208320610cc791601f0160051c810190600101610fb4565b8082528160208120915555610ca4565b63c1ab6dc160e01b5f5260045ffd5b346109be5760203660031901126109be576001600160a01b03610d07610de4565b165f52600560205260405f208054610d2160018301610e9a565b91610d2e60028201610e9a565b60018060a01b0360038301541691610d746005600483015492015492610d66604051978897885260c0602089015260c0880190610f3a565b908682036040880152610f3a565b926060850152608084015260a08301520390f35b346109be575f3660031901126109be576020600254604051908152f35b346109be5760203660031901126109be576020906001600160a01b03610dc9610de4565b165f9081526004835260409020546001600160a01b03168152f35b600435906001600160a01b03821682036109be57565b602435906001600160a01b03821682036109be57565b90600182811c92168015610e3e575b6020831014610e2a57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610e1f565b60c0810190811067ffffffffffffffff821117610e6457604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e6457604052565b9060405191825f825492610ead84610e10565b8084529360018116908115610f185750600114610ed4575b50610ed292500383610e78565b565b90505f9291925260205f20905f915b818310610efc575050906020610ed2928201015f610ec5565b6020919350806001915483858901015201910190918492610ee3565b905060209250610ed294915060ff191682840152151560051b8201015f610ec5565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b81601f820112156109be5780359067ffffffffffffffff8211610e645760405192610f93601f8401601f191660200185610e78565b828452602083830101116109be57815f926020809301838601378301015290565b818110610fbf575050565b5f8155600101610fb4565b5f546001600160a01b03163303610fdd57565b631a27eac360e11b5f5260045ffdfe6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c0033a2646970667358221220f9218596c9dcf73850d7727d5f278b137477cbbc9554e8d05f0fc8a6b36c113464736f6c634300081c0033000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f", + "nonce": "0x5", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x64785c2d51a24f5ebd91684279ad1aaa959fbffdb0ece29ad2d4cb4178668846", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "function": "createOrganization(string,string)", + "arguments": [ + "My Organization", + "This is a description of my organization." + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "gas": "0x3ba233", + "value": "0x0", + "input": "0xa411ef2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "nonce": "0x6", + "chainId": "0x106a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b", + "initCode": "0x6080806040523461048a57613104803803809161001c828561048e565b8339810160a08282031261048a57610033826104b1565b90610040602084016104b1565b61004c604085016104b1565b60608501519094906001600160401b03811161048a578361006e9183016104c5565b60808201519093906001600160401b03811161048a5761008e92016104c5565b926001600160a01b03811691821561047b576001600160a01b031694851561047b576001600160a01b031694851561047b5783511561046c5784511561045d578260018060a01b03195f5416175f5560018060a01b03196001541617600155604051602081019160018060601b03199060601b1682524260348201526034815261011960548261048e565b5190206040519093909260c084016001600160401b0381118582101761036057604052848452806020850152604084019182526060840192835260a06080850194428652019442865260035580519060018060401b0382116103605760045490600182811c92168015610453575b60208310146103425781601f8493116103e5575b50602090601f831160011461037f575f92610374575b50508160011b915f199060031b1c1916176004555b518051906001600160401b0382116103605760055490600182811c92168015610356575b60208310146103425781601f8493116102f1575b50602090601f831160011461028b575f92610280575b50508160011b915f199060031b1c1916176005555b60018060a01b0390511660018060a01b031960065416176006555160075551600855603260105560018060a01b0319600254161760025567016345785d8a0000600f556001601155604051612be9908161051b8239f35b015190505f80610214565b60055f9081528281209350601f198516905b8181106102d957509084600195949392106102c1575b505050811b01600555610229565b01515f1960f88460031b161c191690555f80806102b3565b9293602060018192878601518155019501930161029d565b90915060055f5260205f20601f840160051c81019160208510610338575b90601f859493920160051c01905b81811061032a57506101fe565b5f815584935060010161031d565b909150819061030f565b634e487b7160e01b5f52602260045260245ffd5b91607f16916101ea565b634e487b7160e01b5f52604160045260245ffd5b015190505f806101b1565b60045f9081528281209350601f198516905b8181106103cd57509084600195949392106103b5575b505050811b016004556101c6565b01515f1960f88460031b161c191690555f80806103a7565b92936020600181928786015181550195019301610391565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043b575061019b565b5f815584935060010161042e565b9091508190610420565b91607f1691610187565b633e61080d60e01b5f5260045ffd5b636cc61e7360e11b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036057604052565b51906001600160a01b038216820361048a57565b81601f8201121561048a578051906001600160401b03821161036057604051926104f9601f8401601f19166020018561048e565b8284526020838301011161048a57815f9260208093018386015e830101529056fe60806040526004361015610011575f80fd5b5f3560e01c8063096a8ab71461214c578063150d2ce8146120e5578063182dafff14611e9c57806322eabb8e14611e7f57806325ffb76714611c7d57806341e0c42714611c0557806348f1e4b514611ac45780634e2727d6146117725780635c62c9671461172b57806362812a39146115dd57806371b6d224146115bf57806375151b631461159257806376c751c6146112095780637e9a8de014610c6457806388a72a6f14610c475780638d7942c214610bc65780638da5cb5b14610b9f57806392d5d7fe14610b0e57806399a5d74714610ae85780639ed3edf014610acb578063a42dce8014610a55578063a5e047b8146109f1578063c415b95c146109c9578063c45a0155146109a1578063cc2fd93014610955578063cc5b8baf1461091d578063cef34b9814610900578063dd06ab5f146106c4578063e077c07814610573578063e30909b9146103af578063e894d0a2146102be578063eb820312146102185763f8defa3c14610184575f80fd5b34610214575f366003190112610214576009546101a081612549565b906101ae6040519283612281565b8082526020820160095f527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af5f915b8383106101f657604051806101f2878261248a565b0390f35b60046020600192610206856126b6565b8152019201920191906101dd565b5f80fd5b34610214576020366003190112610214576001600160a01b036102396121b0565b165f52600a60205260405f208054600182015491610259600282016123c8565b600382015491600481015460018060a01b03600583015416906102a06007600685015494015494604051988998895260208901526101006040890152610100880190612466565b946060870152608086015260a085015260c084015260e08301520390f35b34610214575f366003190112610214575f60a06040516102dd81612266565b8281526060602082015260606040820152826060820152826080820152015260405161030881612266565b60035481526103156122a2565b9060208101918252610325612346565b6040820190815260018060a01b036006541690606083019182526007546080840190815261038f6008549260a0860193845261037c604051978897602089525160208901525160c0604089015260e0880190612466565b9051868203601f19016060880152612466565b92516001600160a01b031660808501525160a08401525160c08301520390f35b34610214576040366003190112610214576103c86121b0565b6024356001600160401b038111610214576103e79036906004016124f4565b906103f0612b60565b6001600160a01b0316801561056457805f52600a60205260405f20541561055557815115610546575f52600a60205260405f206002810182516001600160401b0381116105325761044182546121dc565b601f81116104ed575b506020601f821160011461048c57819293945f92610481575b50508160011b915f199060031b1c19161790555b6007429101555f80f35b015190508480610463565b601f19821690835f52805f20915f5b8181106104d5575095836001959697106104bd575b505050811b019055610477565b01515f1960f88460031b161c191690558480806104b0565b9192602060018192868b01518155019401920161049b565b825f5260205f20601f830160051c81019160208410610528575b601f0160051c01905b81811061051d575061044a565b5f8155600101610510565b9091508190610507565b634e487b7160e01b5f52604160045260245ffd5b636cc61e7360e11b5f5260045ffd5b6366a21ffb60e01b5f5260045ffd5b63e6c4247b60e01b5f5260045ffd5b34610214576060366003190112610214576004356001600160401b038111610214576105a3903690600401612560565b6024356001600160401b03811161021457366023820112156102145780600401356105cd81612549565b916105db6040519384612281565b8183526024602084019260051b820101903682116102145760248101925b8284106106955785856044356001600160401b038111610214576106219036906004016125ce565b9161062a612b60565b8051825103610686578051835103610686575f5b81518110156106845760019061067d6001600160a01b0361065f83866126a2565b511661066b83876126a2565b5161067684896126a2565b51916126f4565b500161063e565b005b63b4fa3fb360e01b5f5260045ffd5b83356001600160401b038111610214576020916106b98392602436918701016124f4565b8152019301926105f9565b34610214575f366003190112610214576106dc612b60565b5f5f600d54905b81811061083e575061070d6106f783612549565b926107056040519485612281565b808452612549565b602083019190601f19013683375f5f5b828110610771578385604051918291602083019060208452518091526040830191905f5b81811061074f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610741565b60018060a01b0381165f52600b60205260405f2060405161079181612214565b600460018060a01b0383541692838352600181015460208401526002810154604084015260038101546060840152015460ff811615918215608082015260c060ff8360081c161592831560a084015260018060a01b039060101c169101528215159182610836575b508161082e575b5061080f575b5060010161071d565b826108279161082160019495896126a2565b52612694565b9190610806565b905087610800565b9150886107f9565b60018060a01b0381165f52600b60205260405f206040519061085f82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549060ff821615928315608082015260c060ff8460081c161593841560a084015260018060a01b039060101c16910152151591826108f8575b50816108f0575b506108dc575b6001016106e3565b916108e8600191612694565b9290506108d4565b9050846108ce565b9150856108c7565b34610214575f366003190112610214576020600e54604051908152f35b34610214576020366003190112610214576001600160a01b0361093e6121b0565b165f52600c602052602060405f2054604051908152f35b34610214576020366003190112610214577f6d34b3f6f48575724889e5dc1271a918c090c0ccd4fb6c361d25585debef14066020600435610994612b60565b80600f55604051908152a1005b34610214575f366003190112610214576001546040516001600160a01b039091168152602090f35b34610214575f366003190112610214576002546040516001600160a01b039091168152602090f35b346102145760203660031901126102145760043560095481101561021457610a1a60809161262b565b50805460018201546002830154600390930154604080516001600160a01b039485168152929093166020830152918101929092526060820152f35b3461021457602036600319011261021457610a6e6121b0565b610a76612b3d565b6001600160a01b03168015610564576020817fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f926bffffffffffffffffffffffff60a01b6002541617600255604051908152a1005b34610214575f366003190112610214576020601054604051908152f35b34610214576020366003190112610214576020610b06600435612b21565b604051908152f35b34610214576020366003190112610214576001600160a01b03610b2f6121b0565b165f52600b60205260e060405f2060018060a01b03815416906001810154906002810154600460038301549201549260405194855260208501526040840152606083015260ff81161515608083015260ff8160081c16151560a083015260018060a01b039060101c1660c0820152f35b34610214575f366003190112610214575f546040516001600160a01b039091168152602090f35b3461021457604036600319011261021457610bdf6121b0565b60243590610beb612b60565b6001600160a01b031690811561056457815f52600a60205260405f2054156105555760207fce085fc5aeaa5dba9675c29e7f91ffb489df67981b590b65a48b1457a1fc308c91835f52600c82528060405f2055604051908152a2005b34610214575f366003190112610214576020600f54604051908152f35b3461021457606036600319011261021457610c7d6121b0565b6024356001600160401b03811161021457610c9c903690600401612560565b906044356001600160401b03811161021457610cbc9036906004016125ce565b916002601154146111fa576002601155610cd4612b60565b8051835103610686576001600160a01b03821691821561056457610cf790612a2c565b156111eb5782905f915f93825194610d0e86612549565b95610d1c6040519788612281565b808752610d2b601f1991612549565b013660208801375f5b8451811015610ecc57610d4781856126a2565b5115610e64576001600160a01b03610d5f82876126a2565b511615610564576001600160a01b03610d7882876126a2565b51165f52600a60205260405f209586541561055557610da0610d9a83876126a2565b516129e4565b610da981612b21565b610db381836129d7565b610dbd85896126a2565b5103610e9257610dd2610dd89260049461265b565b9461265b565b960154908115610e735781610ded82876126a2565b511115610e6457610e0a600192610e0483886126a2565b516129d7565b610e14828a6126a2565b525b610e5b828060a01b03610e2983896126a2565b5116610e3583886126a2565b5160405191610e438361222f565b82528660208301526040820152426060820152612a87565b01949094610d34565b63162908e360e11b5f5260045ffd5b60019150610e8181866126a2565b51610e8c828a6126a2565b52610e16565b60405162461bcd60e51b81526020600482015260126024820152712332b29036b4b9b1b0b631bab630ba34b7b760711b6044820152606490fd5b50928592946040516370a0823160e01b8152336004820152602081602481875afa801561104a5782915f916111b6575b5010610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f91611181575b5010611172575f5b82518110156110b5576001600160a01b03610f5682856126a2565b511690815f52600a602052600460405f200154611055575b610fb46020610f7d83896126a2565b516040516323b872dd60e01b81523360048201526001600160a01b0386166024820152604481019190915291829081906064820190565b03815f8a5af190811561104a575f9161101c575b501561100d57600191857f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf176020610fff858d6126a2565b51604051908152a301610f3b565b6312171d8360e31b5f5260045ffd5b61103d915060203d8111611043575b6110358183612281565b81019061267c565b89610fc8565b503d61102b565b6040513d5f823e3d90fd5b5f828152600a602090815260408083206004908101805490859055600b84529382902001805461ff0019166101001790555191825283917fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d9190a2610f6e565b50908480611101575b507feb4c91d1e20aae92fc74a1fe60fe3b5060d372d51c3e08869baa24f84874dccb91604091519082519182526020820152a26001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f885af190811561104a575f91611153575b501561100d57836110be565b61116c915060203d602011611043576110358183612281565b84611147565b6365ba6fc360e01b5f5260045ffd5b9150506020813d6020116111ae575b8161119d60209383612281565b810103126102145781905188610f33565b3d9150611190565b9150506020813d6020116111e3575b816111d260209383612281565b810103126102145781905188610efc565b3d91506111c5565b633dd1b30560e01b5f5260045ffd5b6306fda65d60e31b5f5260045ffd5b34610214576060366003190112610214576112226121b0565b61122a6121c6565b6044356002601154146111fa576002601155611244612b60565b6001600160a01b038316918215610564576001600160a01b038116938415610564578215610e645761127590612a2c565b156111eb57835f52600a60205260405f209081541561055557611297836129e4565b916112a183612b21565b926112ac84826129d7565b85810361154d576040516112dc916112c38261222f565b8982528860208301526040820152426060820152612a87565b6040516370a0823160e01b81523360048201526020816024818a5afa801561104a5782915f91611518575b5010610e6457604051636eb1769f60e11b81523360048201523060248201526020816044818a5afa90811561104a575f916114e6575b501061117257600401805484918161146f575b50506040516323b872dd60e01b81523360048201526001600160a01b039092166024830152604482015260208180606481015b03815f885af190811561104a575f91611450575b501561100d57806113df575b5060207f0f64b92a091214409b5000aa33869d5a13c5f95c0b777e4e90ba90aa1d0caf1791604051908152a36001601155602060405160018152f35b6002546040516323b872dd60e01b81523360048201526001600160a01b03909116602482015260448101919091526020816064815f875af190811561104a575f91611431575b501561100d57836113a3565b61144a915060203d602011611043576110358183612281565b84611425565b611469915060203d602011611043576110358183612281565b85611397565b90809250851115610e645761138392877fdf350d510bb8ebdfe431d9cd8936d9adcde99cd7a55657d251e1fc9fc08af27d6020855f6114af83988c6129d7565b9655835f52600b82525f6004604082208281558260018201558260028201558260038201550155604051908152a292819250611350565b90506020813d602011611510575b8161150160209383612281565b8101031261021457518861133d565b3d91506114f4565b9150506020813d602011611545575b8161153460209383612281565b810103126102145781905189611307565b3d9150611527565b60405162461bcd60e51b815260206004820152601b60248201527f4d69736d6174636820696e206665652063616c63756c6174696f6e00000000006044820152606490fd5b346102145760203660031901126102145760206115b56115b06121b0565b612a2c565b6040519015158152f35b34610214576020366003190112610214576020610b066004356129e4565b34610214576020366003190112610214576115f66121b0565b5f60e06040516116058161224a565b828152826020820152606060408201528260608201528260808201528260a08201528260c0820152015260018060a01b0316801561056457805f52600a60205260405f205415610555575f52600a60205260405f206040516116668161224a565b8154815260018201549160208201928352611683600282016123c8565b604083019081526003820154916060840192835260048101546080850190815260018060a01b036005830154169060a086019182526116fe600760068501549460c0890195865201549460e0880195865260405198899860208a525160208a0152516040890152516101006060890152610120880190612466565b945160808701525160a0860152516001600160a01b031660c08501525160e0840152516101008301520390f35b34610214576060366003190112610214576117446121b0565b6024356001600160401b03811161021457602091611769610b069236906004016124f4565b604435916126f4565b34610214576040366003190112610214576004356001600160401b038111610214576117a29036906004016124f4565b6024356001600160401b038111610214576117c19036906004016124f4565b6117c9612b60565b81511561054657805115611ab5578151916001600160401b038311610532576117f36004546121dc565b601f8111611a4d575b50602092601f81116001146119e157809192935f916119d6575b508160011b915f199060031b1c1916176004555b81516001600160401b038111610532576118456005546121dc565b601f811161196e575b506020601f82116001146118dc5791816118be927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da945f916118d1575b508160011b915f199060031b1c1916176005555b426008556118cc60035494604051938493604085526040850190612466565b908382036020850152612466565b0390a2005b90508501518661188b565b601f1982169060055f525f516020612b745f395f51905f52915f5b8181106119565750927f860b8b881bb84f47cb86ac440df8baf77920bf8351874ea568c06605c50cf6da9492600192826118be961061193e575b5050811b0160055561189f565b8701515f1960f88460031b161c191690558680611931565b9192602060018192868a0151815501940192016118f7565b60055f52601f820160051c5f516020612b745f395f51905f520190602083106119c1575b601f0160051c5f516020612b745f395f51905f5201905b8181106119b6575061184e565b5f81556001016119a9565b5f516020612b745f395f51905f529150611992565b905082015184611816565b601f1981169360045f525f516020612b945f395f51905f52905f5b868110611a35575082600194959610611a1d575b5050811b0160045561182a565b8401515f1960f88460031b161c191690558480611a10565b909160206001819285880151815501930191016119fc565b60045f52601f840160051c5f516020612b945f395f51905f52019060208510611aa0575b601f0160051c5f516020612b945f395f51905f5201905b818110611a9557506117fc565b5f8155600101611a88565b5f516020612b945f395f51905f529150611a71565b633e61080d60e01b5f5260045ffd5b3461021457602036600319011261021457611add6121b0565b6009545f916001600160a01b0316825b828110611bce5750611afe83612549565b92611b0c6040519485612281565b808452611b1b601f1991612549565b015f5b818110611b9f5750505f905f5b838110611b4057604051806101f2878261248a565b81611b4a8261262b565b50546001600160a01b031614611b63575b600101611b2b565b91611b97600191611b7c611b768661262b565b506126b6565b611b8682896126a2565b52611b9181886126a2565b50612694565b929050611b5b565b602090604051611bae8161222f565b5f81525f838201525f60408201525f606082015282828801015201611b1e565b81611bd88261262b565b50546001600160a01b031614611bf1575b600101611aed565b92611bfd600191612694565b939050611be9565b34610214575f36600319011261021457600354611c206122a2565b90611c29612346565b60018060a01b036006541690600754611c6960085492611c5b604051978897885260c0602089015260c0880190612466565b908682036040880152612466565b926060850152608084015260a08301520390f35b3461021457604036600319011261021457600435611c996121c6565b335f52600a60205260405f20541561055557611cb481612a2c565b15611e70578115610e6457335f52600c60205260405f20548211610e6457335f52600b60205260405f2060405190611ceb82612214565b600460018060a01b038254169182845260018101546020850152600281015460408501526003810154606085015201549160ff83161515608082015260c060ff8460081c161593841560a084015260018060a01b039060101c1691015215159081611e68575b50611e595760405190611d6382612214565b3380835260208084018581524260408087019182525f606088018181526080890182815260a08a018381526001600160a01b03998a1660c08c01908152988452600b90975292909120975188546001600160a01b0319169716969096178755915160018701555160028601559251600385015591516004939093018054925191516001600160b01b031990931660ff941515949094169390931790151560081b61ff00161760109190911b62010000600160b01b0316179055600e54611e2890612694565b600e556040519081527f19a703b7248cc8f4116eef5d65eb2a9b4a83bd8d37c962f33d021f019278075b60203392a2005b6341abc80160e01b5f5260045ffd5b905083611d51565b63c1ab6dc160e01b5f5260045ffd5b34610214575f366003190112610214576020600d54604051908152f35b3461021457602036600319011261021457611eb56121b0565b6002601154146111fa576002601155611ecc612b60565b6001600160a01b03168015610564575f818152600b6020526040902080546001600160a01b0316908115611e5957600481019182549060ff82166120d6575f52600a60205260405f2054156105555760019060ff191617825542600382015560018101918254845f52600a602052611f4c600460405f200191825461265b565b9055546040516370a0823160e01b815233600482015260109190911c6001600160a01b031692602082602481875afa91821561104a575f926120a2575b5054809110610e6457604051636eb1769f60e11b8152336004820152306024820152602081604481875afa801561104a5782915f9161206d575b50106111725790546040516323b872dd60e01b81523360048201526001600160a01b039091166024820152604481019190915290602090829060649082905f905af190811561104a575f9161204e575b501561100d576040516020917f5a1d60dbcb373a8c141fa80faf8e10467f6bcdfedfa593edc0feb21be4aa111f5f80a2600160115560018152f35b612067915060203d602011611043576110358183612281565b82612013565b9150506020813d60201161209a575b8161208960209383612281565b810103126102145781905186611fc3565b3d915061207c565b9091506020813d6020116120ce575b816120be60209383612281565b8101031261021457519085611f89565b3d91506120b1565b63080fc0bd60e11b5f5260045ffd5b34610214576040366003190112610214576120fe6121b0565b6024359061210a612b60565b6001600160a01b0316801561056457805f52600a60205260405f205415610555578115610e64575f52600a60205260405f209060038201556007429101555f80f35b3461021457602036600319011261021457600435612168612b3d565b605081116121a1576020817f21ea14061974d1886e13e854a8a738e5177a587170a7f767a2b182a3f8b8dcdf92601055604051908152a1005b6358d620b360e01b5f5260045ffd5b600435906001600160a01b038216820361021457565b602435906001600160a01b038216820361021457565b90600182811c9216801561220a575b60208310146121f657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916121eb565b60e081019081106001600160401b0382111761053257604052565b608081019081106001600160401b0382111761053257604052565b61010081019081106001600160401b0382111761053257604052565b60c081019081106001600160401b0382111761053257604052565b90601f801991011681019081106001600160401b0382111761053257604052565b604051905f82600454916122b5836121dc565b808352926001811690811561232757506001146122db575b6122d992500383612281565b565b5060045f90815290915f516020612b945f395f51905f525b81831061230b5750509060206122d9928201016122cd565b60209193508060019154838589010152019101909184926122f3565b602092506122d994915060ff191682840152151560051b8201016122cd565b604051905f8260055491612359836121dc565b8083529260018116908115612327575060011461237c576122d992500383612281565b5060055f90815290915f516020612b745f395f51905f525b8183106123ac5750509060206122d9928201016122cd565b6020919350806001915483858901015201910190918492612394565b9060405191825f8254926123db846121dc565b80845293600181169081156124445750600114612400575b506122d992500383612281565b90505f9291925260205f20905f915b8183106124285750509060206122d9928201015f6123f3565b602091935080600191548385890101520191019091849261240f565b9050602092506122d994915060ff191682840152151560051b8201015f6123f3565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60206040818301928281528451809452019201905f5b8181106124ad5750505090565b825180516001600160a01b039081168652602082810151909116818701526040808301519087015260609182015191860191909152608090940193909201916001016124a0565b81601f82011215610214578035906001600160401b0382116105325760405192612528601f8401601f191660200185612281565b8284526020838301011161021457815f926020809301838601378301015290565b6001600160401b0381116105325760051b60200190565b9080601f830112156102145781359061257882612549565b926125866040519485612281565b82845260208085019360051b82010191821161021457602001915b8183106125ae5750505090565b82356001600160a01b0381168103610214578152602092830192016125a1565b9080601f830112156102145781356125e581612549565b926125f36040519485612281565b81845260208085019260051b82010192831161021457602001905b82821061261b5750505090565b813581526020918201910161260e565b6009548110156126475760095f5260205f209060021b01905f90565b634e487b7160e01b5f52603260045260245ffd5b9190820180921161266857565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610214575180151581036102145790565b5f1981146126685760010190565b80518210156126475760209160051b010190565b906040516126c38161222f565b82546001600160a01b0390811682526001840154166020820152600283015460408201526003909201546060830152565b9291926126ff612b60565b815115610546576001600160a01b03811690811561056457815f52600a60205260405f20546129c85760405160208101916bffffffffffffffffffffffff199060601b1682524260348201526034815261275a605482612281565b519020916003546040519061276e8261224a565b84825260208201908152604082019683885260608301908152608083015f815260a084019086825260c085019242845260e0860194428652885f52600a60205260405f2096518755516001870155600286019a519a8b516001600160401b03811161053257601f9c6127e083546121dc565b9d8e11612982575b8b9c9d505f9b9a9b50602090601f83116001146128c95792827f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089b9996936128b89b999693600799965f926128be575b50508160011b915f199060031b1c19161790555b516003870155516004860155516005850180546001600160a01b0319166001600160a01b039290921691909117905551600684015551910155600d5461289190612694565b600d55600f54855f52600c60205260405f2055604051918291602083526020830190612466565b0390a390565b015190505f80612838565b601f9b9a9998979695949392919b19821690835f528c5f20915f5b81811061294e5750926007989694927f407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea160636109089d9e600193836128b89f9e9d9b999710612936575b505050811b01905561284c565b01515f1960f88460031b161c191690555f8080612929565b939597999b9d9496989a9c5090916020600181928786015181550195019301908f9c9a98969492919d9b999795939d6128e4565b825f5260205f20601f830160051c81019e602084106129be575b601f0160051c019d8e5b81106129b257506127e8565b5f81556001018e6129a6565b909e508e9061299c565b63d8abd7e760e01b5f5260045ffd5b9190820391821161266857565b6127108102908082046127101490151715612668576010549081612710039161271083116126685761271014612a18570490565b634e487b7160e01b5f52601260045260245ffd5b6001546040516375151b6360e01b81526001600160a01b0392831660048201529160209183916024918391165afa90811561104a575f91612a6b575090565b612a84915060203d602011611043576110358183612281565b90565b6009546801000000000000000081101561053257600181016009556009548110156126475760095f5260021b7f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190805182546001600160a01b03199081166001600160a01b0392831617845560208301516001850180549092169216919091179055604081015160028301556060015160039190910155565b6010549081810291818304149015171561266857612710900490565b6001546001600160a01b03163303612b5157565b631a27eac360e11b5f5260045ffd5b5f546001600160a01b03163303612b515756fe036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba264697066735822122008232c4962bd90900d091417d61b64f45394bf3531eaf11a4b2716ab5b9cd10164736f6c634300081c00330000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e08000000000000000000000000e1db6db5f799feeb969088ac1ec7072b295a55a0000000000000000000000000ccb723eda6201fb9655e0301aa1c2d73dd5aa51f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x4e2f72cbf2431e15c6213c6cae3d7ceb316fb1bd49b7b5006f8b5a82b3d1ad36", + "transactionType": "CALL", + "contractName": "OrganizationFactory", + "contractAddress": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "function": "addToken(string,address)", + "arguments": [ + "MyToken", + "0x3677F7827760016702d034837bD2FB8E6Ba618DD" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "gas": "0x1852a", + "value": "0x0", + "input": "0xb0b22c2c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd00000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "nonce": "0x7", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7ebd9d35d3a155fd657025710810a017bf6c85bc2e069833caccc09f97a77e6e", + "transactionType": "CALL", + "contractName": "OrganizationContract", + "contractAddress": "0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b", + "function": "createRecipient(address,string,uint256)", + "arguments": [ + "0x8A912047689651E7119CD64453D78dBD42030fB5", + "John Doe", + "1000" + ], + "transaction": { + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b", + "gas": "0x4efa0", + "value": "0x0", + "input": "0x5c62c9670000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "nonce": "0x8", + "chainId": "0x106a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3943cb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0467d572bd05ccfcc8fcf4a0acab311644210dea505c48982f0c2641d73dbf9b", + "transactionIndex": "0x1", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "gasUsed": "0x388f7f", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": null, + "contractAddress": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x15d783ab91ea", + "l1GasPrice": "0x36507b418", + "l1GasUsed": "0x248ed" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x64703f", + "logs": [ + { + "address": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "topics": [ + "0xf4b9821f6bc54fe8ce60a727c514af1fe81e7be7f09ba6b32b23e7da12fb92ae", + "0x000000000000000000000000e90d6a043c34ab9c03f541e99c21dbe48d14e92b", + "0x0000000000000000000000005d2d8a217f9523b40ea569d07b8840d005234e08" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000680a31e0000000000000000000000000000000000000000000000000000000000000000f4d79204f7267616e697a6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029546869732069732061206465736372697074696f6e206f66206d79206f7267616e697a6174696f6e2e0000000000000000000000000000000000000000000000", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "transactionHash": "0x64785c2d51a24f5ebd91684279ad1aaa959fbffdb0ece29ad2d4cb4178668846", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000004000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000012000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000001000000000200000000000000000000000000000000000800000000000000000", + "type": "0x2", + "transactionHash": "0x64785c2d51a24f5ebd91684279ad1aaa959fbffdb0ece29ad2d4cb4178668846", + "transactionIndex": "0x2", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "gasUsed": "0x2b2c74", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x490327486f", + "l1GasPrice": "0x36507b418", + "l1GasUsed": "0x7a3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6589ff", + "logs": [ + { + "address": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "topics": [ + "0x7afee0f1b802cc0f66c67890e26b4566251859cf2cd8de79b86aed7251d9756a", + "0x0000000000000000000000003677f7827760016702d034837bd2fb8e6ba618dd" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "transactionHash": "0x4e2f72cbf2431e15c6213c6cae3d7ceb316fb1bd49b7b5006f8b5a82b3d1ad36", + "transactionIndex": "0x3", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000010000000000000010000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000001000000000000000000000100000000000000000020000000000000000000000000000000000000000000000000000040000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4e2f72cbf2431e15c6213c6cae3d7ceb316fb1bd49b7b5006f8b5a82b3d1ad36", + "transactionIndex": "0x3", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "gasUsed": "0x119c0", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xe1db6db5f799feeb969088ac1ec7072b295a55a0", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x3bbeedfbac", + "l1GasPrice": "0x36507b418", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x691cd7", + "logs": [ + { + "address": "0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b", + "topics": [ + "0x407385dc1873eabb5f992b55d2de317c1f69aac3f03d91e49a6ea16063610908", + "0xa714c5d46f7c69a01a9517a8fbfb263dc3deb3cc6ac05b0821ddfe56ef38e84a", + "0x0000000000000000000000008a912047689651e7119cd64453d78dbd42030fb5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000084a6f686e20446f65000000000000000000000000000000000000000000000000", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "transactionHash": "0x7ebd9d35d3a155fd657025710810a017bf6c85bc2e069833caccc09f97a77e6e", + "transactionIndex": "0x4", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000800000000000000000000200000000000000100000000000800000000000000000000000800000000000000000000000000000000000008000002000000400000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7ebd9d35d3a155fd657025710810a017bf6c85bc2e069833caccc09f97a77e6e", + "transactionIndex": "0x4", + "blockHash": "0x7699538d055afdcdf261bf3368fa96832a011c5ac71924ff660644b36c837da1", + "blockNumber": "0x1329780", + "gasUsed": "0x392d8", + "effectiveGasPrice": "0xfe", + "from": "0x5d2d8a217f9523b40ea569d07b8840d005234e08", + "to": "0xe90d6a043c34ab9c03f541e99c21dbe48d14e92b", + "contractAddress": null, + "l1BaseFeeScalar": "0x2af8", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x109618", + "l1Fee": "0x40842352cd", + "l1GasPrice": "0x36507b418", + "l1GasUsed": "0x6bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1745498593, + "chain": 4202, + "commit": "cd6db15" +} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index ded6f72..566fd5e 100644 --- a/foundry.toml +++ b/foundry.toml @@ -3,5 +3,8 @@ src = "src" out = "out" libs = ["lib"] solc = "0.8.28" +via_ir = true +optimizer = true +optimizer_runs = 200 # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000..83fbb69 --- /dev/null +++ b/remappings.txt @@ -0,0 +1 @@ +forge-std/=lib/forge-std/src/ \ No newline at end of file diff --git a/script/deploy.s.sol b/script/deploy.s.sol new file mode 100644 index 0000000..50d7c34 --- /dev/null +++ b/script/deploy.s.sol @@ -0,0 +1,42 @@ +//SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +import "forge-std/Script.sol"; +import "forge-std/Vm.sol"; +import "forge-std/console.sol"; +import {OrganizationFactory} from "../src/contracts/OrganizationFactory.sol"; +import {OrganizationContract} from "../src/contracts/OrganizationContract.sol"; + +contract OrganizationScript is Script { + address public organizationAddress; + address public recipientAddress; + address public tokenAddress; + + function setUp() public { + // organizationAddress = vm.envAddress("ORGANIZATION_ADDRESS"); + recipientAddress = vm.envAddress("RECIPIENT_ADDRESS"); + tokenAddress = vm.envAddress("TOKEN_ADDRESS"); + } + + function run() public { + vm.startBroadcast(); + // Deploy the OrganizationFactory contract + OrganizationFactory organizationFactory = new OrganizationFactory(vm.envAddress("FEE_COLLECTOR_ADDRESS")); + console.log("OrganizationFactory deployed at:", address(organizationFactory)); + + // Create a new organization + organizationAddress = + organizationFactory.createOrganization("My Organization", "This is a description of my organization."); + console.log("Organization created at:", organizationAddress); + + // Add a token to the organization + organizationFactory.addToken("MyToken", tokenAddress); + console.log("Token added:", tokenAddress); + + // Create a new recipient + OrganizationContract(organizationAddress).createRecipient(recipientAddress, "John Doe", 1000); + console.log("Recipient created at:", recipientAddress); + + vm.stopBroadcast(); + } +} diff --git a/script_command.txt b/script_command.txt new file mode 100644 index 0000000..b6277c6 --- /dev/null +++ b/script_command.txt @@ -0,0 +1,3 @@ +forge script script/deploy.s.sol:OrganizationScript --chain-id 4202 --rpc-url https://rpc.sepolia-api.lisk.com \ + --etherscan-api-key 123 --verifier-url https://sepolia-blockscout.lisk.com/api \ + --broadcast --verify --verifier blockscout --account PRIVATE_KEY -vvvv diff --git a/src/contracts/OrganizationContract.sol b/src/contracts/OrganizationContract.sol index 306ab43..ef80210 100644 --- a/src/contracts/OrganizationContract.sol +++ b/src/contracts/OrganizationContract.sol @@ -17,28 +17,64 @@ contract OrganizationContract { Structs.Organization public organizationInfo; Structs.Payment[] public paymentHistory; - + mapping(address => Structs.Recipient) public recipients; mapping(address => Structs.AdvanceRequest) public advanceRequests; mapping(address => uint256) public recipientAdvanceLimit; uint256 public recipientCount; - uint256 public advanceRequestCount; + uint256 public advanceRequestCount; uint256 public defaultAdvanceLimit; uint256 public transactionFee; - + // Reentrancy guard state variable + uint256 private constant _NOT_ENTERED = 1; + uint256 private constant _ENTERED = 2; + uint256 private _status; + + // Events event RecipientCreated(bytes32 indexed recipientId, address indexed walletAddress, string name); + event RecipientUpdated(bytes32 indexed recipientId, address indexed walletAddress, string name); event TokenDisbursed(address indexed tokenAddress, address indexed recipient, uint256 amount); event BatchDisbursement(address indexed tokenAddress, uint256 recipientCount, uint256 totalAmount); event AdvanceRequested(address indexed recipient, uint256 amount); event AdvanceApproved(address indexed recipient); - event AdvanceRepaid(uint256 indexed requestId); + event AdvanceRepaid(address indexed recipient, uint256 amount); + event AdvanceLimitSet(address indexed recipient, uint256 amount); + event DefaultAdvanceLimitSet(uint256 amount); event PayslipGenerated(address indexed recipient, uint256 indexed paymentId, string uri); event TransactionFeeUpdated(uint256 newFee); event FeeCollectorUpdated(address newCollector); + event OrganizationInfoUpdated(bytes32 indexed organizationId, string name, string description); + + /** + * @dev Modifier to prevent reentrancy attacks + */ + modifier nonReentrant() { + // On the first call to nonReentrant, _status will be _NOT_ENTERED + if (_status == _ENTERED) revert CustomErrors.ReentrantCall(); + + // Any calls to nonReentrant after this point will fail + _status = _ENTERED; - constructor(address _owner, address _factory, address _factoryFeeCollector, string memory _name, string memory _description) { + _; + + // By storing the original value once again, a refund is triggered + _status = _NOT_ENTERED; + } + + constructor( + address _owner, + address _factory, + address _factoryFeeCollector, + string memory _name, + string memory _description + ) { + if (_owner == address(0)) revert CustomErrors.InvalidAddress(); + if (_factory == address(0)) revert CustomErrors.InvalidAddress(); + if (_factoryFeeCollector == address(0)) revert CustomErrors.InvalidAddress(); + if (bytes(_name).length == 0) revert CustomErrors.NameRequired(); + if (bytes(_description).length == 0) revert CustomErrors.DescriptionRequired(); owner = _owner; factory = _factory; @@ -54,6 +90,7 @@ contract OrganizationContract { transactionFee = 50; feeCollector = _factoryFeeCollector; defaultAdvanceLimit = 0.1 ether; + _status = _NOT_ENTERED; } /** @@ -62,7 +99,7 @@ contract OrganizationContract { */ function setTransactionFee(uint256 _fee) external { _onlyFactory(); - require(_fee <= 80, "Fee too high"); + if (_fee > 80) revert CustomErrors.InvalidFee(); transactionFee = _fee; emit TransactionFeeUpdated(_fee); } @@ -130,59 +167,85 @@ contract OrganizationContract { } } + /** + * @dev Calculates the fee for a given amount + * @param _amount Amount to calculate fee for + * @return Fee amount + */ + function calculateFee(uint256 _amount) public view returns (uint256) { + return (_amount * transactionFee) / 10000; + } + /** + * @dev Calculates the gross amount for a given net amount + * @param _netAmount Net amount to calculate gross amount for + * @return Gross amount + */ + + function calculateGrossAmount(uint256 _netAmount) public view returns (uint256) { + return (_netAmount * 10000) / (10000 - transactionFee); + } + /** * @dev Disburses tokens to a single recipient * @param _tokenAddress Address of the token to disburse * @param _recipient Recipient address - * @param _amount Amount to disburse + * @param _netAmount Amount to disburse * @return True if successful */ - function disburseToken(address _tokenAddress, address _recipient, uint256 _amount) public returns (bool) { + function disburseToken(address _tokenAddress, address _recipient, uint256 _netAmount) + public + nonReentrant + returns (bool) + { _onlyOwner(); if (_tokenAddress == address(0)) revert CustomErrors.InvalidAddress(); if (_recipient == address(0)) revert CustomErrors.InvalidAddress(); - if (_amount == 0) revert CustomErrors.InvalidAmount(); + if (_netAmount == 0) revert CustomErrors.InvalidAmount(); if (!isTokenSupported(_tokenAddress)) revert CustomErrors.TokenNotSupported(); - if (recipients[_recipient].recipientId == 0) revert CustomErrors.RecipientNotFound(); + Structs.Recipient storage recipient = recipients[_recipient]; + if (recipient.recipientId == 0) revert CustomErrors.RecipientNotFound(); + + uint256 grossAmount = calculateGrossAmount(_netAmount); + uint256 fee = calculateFee(grossAmount); + uint256 amountAfterFee = grossAmount - fee; - uint256 fee = (_amount * transactionFee) / 10000; - uint256 amountAfterFee = _amount + fee; + require(amountAfterFee == _netAmount, "Mismatch in fee calculation"); // optional safety + // Log payment Structs.Payment memory payment = Structs.Payment({ recipient: _recipient, tokenAddress: _tokenAddress, amount: amountAfterFee, timestamp: block.timestamp }); - paymentHistory.push(payment); IERC20 token = IERC20(_tokenAddress); + if (token.balanceOf(msg.sender) < grossAmount) revert CustomErrors.InvalidAmount(); + if (token.allowance(msg.sender, address(this)) < grossAmount) revert CustomErrors.InvalidAllowance(); - if (token.balanceOf(msg.sender) < amountAfterFee) revert CustomErrors.InvalidAmount(); - if (token.allowance(msg.sender, address(this)) < amountAfterFee) revert CustomErrors.InvalidAllowance(); + uint256 transferAmount = _netAmount; - if (recipients[_recipient].advanceCollected > 0) { - if (!token.transferFrom(msg.sender, _recipient, _amount - recipients[_recipient].advanceCollected)) { - revert CustomErrors.TransferFailed(); - } - // Mark advance as repaid - advanceRequests[_recipient].repaid = true; - } else { - if (!token.transferFrom(msg.sender, _recipient, _amount)) { - revert CustomErrors.TransferFailed(); + if (recipient.advanceCollected > 0) { + if (_netAmount <= recipient.advanceCollected) { + revert CustomErrors.InvalidAmount(); } + transferAmount = _netAmount - recipient.advanceCollected; + uint256 repaidAmount = recipient.advanceCollected; + recipient.advanceCollected = 0; + delete advanceRequests[_recipient]; + emit AdvanceRepaid(_recipient, repaidAmount); } + bool success = token.transferFrom(msg.sender, _recipient, transferAmount); + if (!success) revert CustomErrors.TransferFailed(); + if (fee > 0) { - if (!token.transferFrom(msg.sender, feeCollector, fee)) { - revert CustomErrors.TransferFailed(); - } + success = token.transferFrom(msg.sender, feeCollector, fee); + if (!success) revert CustomErrors.TransferFailed(); } - recipients[_recipient].advanceCollected = 0; - - emit TokenDisbursed(_tokenAddress, _recipient, _amount); + emit TokenDisbursed(_tokenAddress, _recipient, _netAmount); return true; } @@ -190,80 +253,85 @@ contract OrganizationContract { * @dev Disburses tokens to multiple recipients * @param _tokenAddress Address of the token to disburse * @param _recipients Array of recipient addresses - * @param _amounts Array of amounts to disburse + * @param _netAmounts Array of amounts to disburse * @return True if successful */ - function batchDisburseToken(address _tokenAddress, address[] memory _recipients, uint256[] memory _amounts) + function batchDisburseToken(address _tokenAddress, address[] memory _recipients, uint256[] memory _netAmounts) public + nonReentrant returns (bool) { _onlyOwner(); - if (_recipients.length != _amounts.length) revert CustomErrors.InvalidInput(); - - uint256 totalAmount = 0; - - for (uint256 i = 0; i < _recipients.length; i++) { - if (recipients[_recipients[i]].advanceCollected > 0) { - if (_recipients[i] == address(0)) revert CustomErrors.InvalidAddress(); - if (!isTokenSupported(_tokenAddress)) revert CustomErrors.TokenNotSupported(); - // if (_amounts[i] - recipients[_recipients[i]].advanceCollected == 0) revert CustomErrors.InvalidAmount(); - totalAmount += _amounts[i] - recipients[_recipients[i]].advanceCollected; - continue; - } else { - if (_amounts[i] == 0) revert CustomErrors.InvalidAmount(); - } - - totalAmount += _amounts[i]; - } - - IERC20 token = IERC20(_tokenAddress); - if (token.balanceOf(msg.sender) < totalAmount) revert CustomErrors.InvalidAmount(); - if (token.allowance(msg.sender, address(this)) < totalAmount) revert CustomErrors.InvalidAllowance(); - if (!token.transferFrom(msg.sender, address(this), totalAmount)) revert CustomErrors.TransferFailed(); - if (token.balanceOf(address(this)) < totalAmount) revert CustomErrors.TransferFailed(); + if (_recipients.length != _netAmounts.length) revert CustomErrors.InvalidInput(); + if (_tokenAddress == address(0)) revert CustomErrors.InvalidAddress(); + if (!isTokenSupported(_tokenAddress)) revert CustomErrors.TokenNotSupported(); + uint256 totalGrossAmount = 0; uint256 totalFees = 0; + uint256[] memory actualTransferAmounts = new uint256[](_recipients.length); for (uint256 i = 0; i < _recipients.length; i++) { - address recipient = _recipients[i]; - uint256 amount = _amounts[i]; + if (_netAmounts[i] == 0) revert CustomErrors.InvalidAmount(); + if (_recipients[i] == address(0)) revert CustomErrors.InvalidAddress(); + Structs.Recipient storage recipient = recipients[_recipients[i]]; + if (recipient.recipientId == 0) revert CustomErrors.RecipientNotFound(); + + uint256 grossAmount = calculateGrossAmount(_netAmounts[i]); + uint256 fee = calculateFee(grossAmount); + uint256 amountAfterFee = grossAmount - fee; - if (recipients[recipient].recipientId == 0) revert CustomErrors.RecipientNotFound(); + require(amountAfterFee == _netAmounts[i], "Fee miscalculation"); - uint256 fee = (amount * transactionFee) / 10000; - uint256 amountAfterFee = amount - fee; + totalGrossAmount += grossAmount; totalFees += fee; + // Check if this payment would cover any advance + if (recipient.advanceCollected > 0) { + if (_netAmounts[i] <= recipient.advanceCollected) { + revert CustomErrors.InvalidAmount(); + } + actualTransferAmounts[i] = _netAmounts[i] - recipient.advanceCollected; + } else { + actualTransferAmounts[i] = _netAmounts[i]; + } + Structs.Payment memory payment = Structs.Payment({ - recipient: recipient, + recipient: _recipients[i], tokenAddress: _tokenAddress, - amount: amountAfterFee, + amount: _netAmounts[i], timestamp: block.timestamp }); paymentHistory.push(payment); + } + + IERC20 token = IERC20(_tokenAddress); + if (token.balanceOf(msg.sender) < totalGrossAmount) revert CustomErrors.InvalidAmount(); + if (token.allowance(msg.sender, address(this)) < totalGrossAmount) revert CustomErrors.InvalidAllowance(); + + for (uint256 i = 0; i < _recipients.length; i++) { + address recipient = _recipients[i]; + // Repay advance if needed if (recipients[recipient].advanceCollected > 0) { - if (!token.transfer(recipient, amount - recipients[recipient].advanceCollected)) { - revert CustomErrors.TransferFailed(); - } - } else { - if (!token.transfer(recipient, amount)) { - revert CustomErrors.TransferFailed(); - } + uint256 repaidAmount = recipients[recipient].advanceCollected; + recipients[recipient].advanceCollected = 0; + advanceRequests[recipient].repaid = true; + emit AdvanceRepaid(recipient, repaidAmount); } - recipients[recipient].advanceCollected = 0; - emit TokenDisbursed(_tokenAddress, recipient, amountAfterFee); + bool success = token.transferFrom(msg.sender, recipient, actualTransferAmounts[i]); + if (!success) revert CustomErrors.TransferFailed(); + + emit TokenDisbursed(_tokenAddress, recipient, _netAmounts[i]); } if (totalFees > 0) { - if (!token.transfer(feeCollector, totalFees)) { - revert CustomErrors.TransferFailed(); - } + bool success = token.transferFrom(msg.sender, feeCollector, totalFees); + if (!success) revert CustomErrors.TransferFailed(); } - emit BatchDisbursement(_tokenAddress, _recipients.length, totalAmount); + emit BatchDisbursement(_tokenAddress, _recipients.length, totalGrossAmount); return true; } @@ -294,6 +362,22 @@ contract OrganizationContract { recipient.updatedAt = block.timestamp; } + /** + * @dev Updates recipient salary amount + * @param _address Recipient address + * @param _salaryAmount New salary amount + */ + function updateRecipientSalary(address _address, uint256 _salaryAmount) public { + _onlyOwner(); + if (_address == address(0)) revert CustomErrors.InvalidAddress(); + if (recipients[_address].recipientId == 0) revert CustomErrors.RecipientNotFound(); + if (_salaryAmount == 0) revert CustomErrors.InvalidAmount(); + + Structs.Recipient storage recipient = recipients[_address]; + recipient.salaryAmount = _salaryAmount; + recipient.updatedAt = block.timestamp; + } + /** * @dev Returns the organization information * @return Organization information @@ -315,6 +399,8 @@ contract OrganizationContract { organizationInfo.name = _name; organizationInfo.description = _description; organizationInfo.updatedAt = block.timestamp; + + emit OrganizationInfoUpdated(organizationInfo.organizationId, _name, _description); } /** @@ -324,6 +410,7 @@ contract OrganizationContract { function setDefaultAdvanceLimit(uint256 _limit) public { _onlyOwner(); defaultAdvanceLimit = _limit; + emit DefaultAdvanceLimitSet(_limit); } /** @@ -333,28 +420,34 @@ contract OrganizationContract { */ function setRecipientAdvanceLimit(address _recipient, uint256 _limit) public { _onlyOwner(); + if (_recipient == address(0)) revert CustomErrors.InvalidAddress(); if (recipients[_recipient].recipientId == 0) revert CustomErrors.RecipientNotFound(); recipientAdvanceLimit[_recipient] = _limit; + emit AdvanceLimitSet(_recipient, _limit); } /** * @dev Creates a new advance request * @param _amount Amount requested - * @param _repaymentDate Expected repayment date * @param _tokenAddress Token address for the advance */ - function requestAdvance(uint256 _amount, uint256 _repaymentDate, address _tokenAddress) public { + function requestAdvance(uint256 _amount, address _tokenAddress) public { if (recipients[msg.sender].recipientId == bytes32(0)) revert CustomErrors.RecipientNotFound(); + if (!isTokenSupported(_tokenAddress)) revert CustomErrors.InvalidToken(); if (_amount == 0) revert CustomErrors.InvalidAmount(); if (_amount > recipientAdvanceLimit[msg.sender]) revert CustomErrors.InvalidAmount(); - if (_repaymentDate <= block.timestamp) revert CustomErrors.InvalidInput(); + + // Check for existing active advance request + Structs.AdvanceRequest memory existingRequest = advanceRequests[msg.sender]; + if (existingRequest.recipient != address(0) && !existingRequest.repaid) { + revert CustomErrors.InvalidRequest(); + } Structs.AdvanceRequest memory newRequest = Structs.AdvanceRequest({ recipient: msg.sender, amount: _amount, requestDate: block.timestamp, approvalDate: 0, - repaymentDate: _repaymentDate, approved: false, repaid: false, tokenAddress: _tokenAddress @@ -371,23 +464,26 @@ contract OrganizationContract { * @param _recipientAddress Recipient address to be approved advance * @return True if successful */ - function approveAdvance(address _recipientAddress) public returns (bool) { + function approveAdvance(address _recipientAddress) public nonReentrant returns (bool) { _onlyOwner(); if (_recipientAddress == address(0)) revert CustomErrors.InvalidAddress(); Structs.AdvanceRequest storage request = advanceRequests[_recipientAddress]; + if (request.recipient == address(0)) revert CustomErrors.InvalidRequest(); if (request.approved) revert CustomErrors.AlreadyApproved(); if (recipients[request.recipient].recipientId == 0) revert CustomErrors.RecipientNotFound(); request.approved = true; request.approvalDate = block.timestamp; + // Update the recipient's advance collected + recipients[_recipientAddress].advanceCollected += request.amount; + IERC20 token = IERC20(request.tokenAddress); if (token.balanceOf(msg.sender) < request.amount) revert CustomErrors.InvalidAmount(); if (token.allowance(msg.sender, address(this)) < request.amount) revert CustomErrors.InvalidAllowance(); - if (!token.transferFrom(msg.sender, request.recipient, request.amount)) { - revert CustomErrors.TransferFailed(); - } + bool success = token.transferFrom(msg.sender, request.recipient, request.amount); + if (!success) revert CustomErrors.TransferFailed(); emit AdvanceApproved(_recipientAddress); return true; @@ -427,6 +523,39 @@ contract OrganizationContract { return result; } + /** + * @dev Returns pending advance requests + * @return Array of pending advance requests + */ + function getPendingAdvanceRequests() public view returns (address[] memory) { + _onlyOwner(); + uint256 count = 0; + + // Count pending requests + for (uint256 i = 0; i < recipientCount; i++) { + address recipient = address(uint160(i)); // This is just for iteration and needs to be replaced + Structs.AdvanceRequest memory request = advanceRequests[recipient]; + if (request.recipient != address(0) && !request.approved && !request.repaid) { + count++; + } + } + + address[] memory pendingRequests = new address[](count); + uint256 index = 0; + + // Fill pending requests + for (uint256 i = 0; i < recipientCount; i++) { + address recipient = address(uint160(i)); // This is just for iteration and needs to be replaced + Structs.AdvanceRequest memory request = advanceRequests[recipient]; + if (request.recipient != address(0) && !request.approved && !request.repaid) { + pendingRequests[index] = request.recipient; + index++; + } + } + + return pendingRequests; + } + /** * @dev Checks if a token is supported by the factory * @param _tokenAddress Token address @@ -447,7 +576,6 @@ contract OrganizationContract { /** * @dev Checks if the caller is the factory deployer of the organization */ - function _onlyFactory() internal view { if (msg.sender != factory) revert CustomErrors.UnauthorizedAccess(); } diff --git a/src/contracts/OrganizationFactory.sol b/src/contracts/OrganizationFactory.sol index a87bd28..c1588aa 100644 --- a/src/contracts/OrganizationFactory.sol +++ b/src/contracts/OrganizationFactory.sol @@ -18,14 +18,9 @@ contract OrganizationFactory is TokenRegistry { mapping(address => Structs.Organization) public organizations; event OrganizationCreated( - address indexed organizationAddress, - address indexed owner, - string name, - string description, - uint256 createdAt + address indexed organizationAddress, address indexed owner, string name, string description, uint256 createdAt ); - constructor(address _feeCollector) { owner = msg.sender; feeCollector = _feeCollector; @@ -42,13 +37,8 @@ contract OrganizationFactory is TokenRegistry { if (bytes(_description).length == 0) revert CustomErrors.DescriptionRequired(); if (organizationContracts[msg.sender] != address(0)) revert CustomErrors.OrganizationAlreadyExists(); - OrganizationContract newOrganization = new OrganizationContract( - msg.sender, - address(this), - feeCollector, - _name, - _description - ); + OrganizationContract newOrganization = + new OrganizationContract(msg.sender, address(this), feeCollector, _name, _description); address orgAddress = address(newOrganization); organizationContracts[msg.sender] = orgAddress; @@ -63,13 +53,7 @@ contract OrganizationFactory is TokenRegistry { updatedAt: block.timestamp }); - emit OrganizationCreated( - orgAddress, - msg.sender, - _name, - _description, - block.timestamp - ); + emit OrganizationCreated(orgAddress, msg.sender, _name, _description, block.timestamp); return orgAddress; } @@ -122,7 +106,7 @@ contract OrganizationFactory is TokenRegistry { _onlyOwner(); address orgAddress = organizationContracts[_orgOwner]; if (orgAddress == address(0)) revert CustomErrors.OrganizationNotFound(); - + OrganizationContract org = OrganizationContract(orgAddress); org.setTransactionFee(_newFee); } @@ -136,7 +120,7 @@ contract OrganizationFactory is TokenRegistry { _onlyOwner(); address orgAddress = organizationContracts[_orgOwner]; if (orgAddress == address(0)) revert CustomErrors.OrganizationNotFound(); - + OrganizationContract org = OrganizationContract(orgAddress); org.setFeeCollector(_newCollector); } diff --git a/src/contracts/Tokens.sol b/src/contracts/Tokens.sol index 2cb74e3..4242c36 100644 --- a/src/contracts/Tokens.sol +++ b/src/contracts/Tokens.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.28; +import "../libraries/errors.sol"; + /** * @title TokenRegistry * @dev Manages the registry of supported tokens for payments @@ -14,7 +16,7 @@ contract TokenRegistry { event TokenRemoved(address indexed tokenAddress); function _onlyOwner() internal view { - require(msg.sender == owner, "Not authorized"); + if (msg.sender != owner) revert CustomErrors.UnauthorizedAccess(); } constructor() { @@ -28,9 +30,9 @@ contract TokenRegistry { */ function addToken(string memory _tokenName, address _tokenAddress) public virtual { _onlyOwner(); - require(bytes(_tokenName).length > 0, "Token name is required"); - require(_tokenAddress != address(0), "Invalid token address"); - require(bytes(supportedTokens[_tokenAddress]).length == 0, "Token already exists"); + if (bytes(_tokenName).length == 0) revert CustomErrors.InvalidTokenName(); + if (_tokenAddress == address(0)) revert CustomErrors.InvalidTokenAddress(); + if (bytes(supportedTokens[_tokenAddress]).length != 0) revert CustomErrors.TokenAlreadySupported(); supportedTokens[_tokenAddress] = _tokenName; supportedTokensCount++; @@ -44,7 +46,7 @@ contract TokenRegistry { * @return Token name */ function getTokenName(address _tokenAddress) public view returns (string memory) { - require(_tokenAddress != address(0), "Invalid token address"); + if (_tokenAddress == address(0)) revert CustomErrors.InvalidTokenAddress(); return supportedTokens[_tokenAddress]; } @@ -54,8 +56,8 @@ contract TokenRegistry { */ function removeToken(address _tokenAddress) public virtual { _onlyOwner(); - require(_tokenAddress != address(0), "Invalid token address"); - require(bytes(supportedTokens[_tokenAddress]).length > 0, "Token does not exist"); + if (_tokenAddress == address(0)) revert CustomErrors.InvalidTokenAddress(); + if (bytes(supportedTokens[_tokenAddress]).length == 0) revert CustomErrors.InvalidToken(); delete supportedTokens[_tokenAddress]; supportedTokensCount--; @@ -69,7 +71,7 @@ contract TokenRegistry { * @return True if the token is supported, false otherwise */ function isTokenSupported(address _tokenAddress) public view returns (bool) { - require(_tokenAddress != address(0), "Invalid token address"); + if (_tokenAddress == address(0)) revert CustomErrors.InvalidTokenAddress(); return bytes(supportedTokens[_tokenAddress]).length > 0; } diff --git a/src/libraries/errors.sol b/src/libraries/errors.sol index fd7feba..019acec 100644 --- a/src/libraries/errors.sol +++ b/src/libraries/errors.sol @@ -3,6 +3,11 @@ pragma solidity 0.8.28; library CustomErrors { error InvalidAddress(); + error InvalidFee(); + error ReentrantCall(); + error InvalidTokenName(); + error InvalidTokenAddress(); + error TokenAlreadySupported(); error InvalidToken(); error InvalidOrganization(); error InvalidRecipient(); @@ -20,4 +25,5 @@ library CustomErrors { error InvalidAllowance(); error TransferFailed(); error AlreadyApproved(); + error InvalidRequest(); } diff --git a/src/libraries/structs.sol b/src/libraries/structs.sol index 93c2df2..6c8eeb3 100644 --- a/src/libraries/structs.sol +++ b/src/libraries/structs.sol @@ -34,7 +34,6 @@ library Structs { uint256 amount; uint256 requestDate; uint256 approvalDate; - uint256 repaymentDate; bool approved; bool repaid; address tokenAddress; diff --git a/test/OrganizationContract.t.sol b/test/OrganizationContract.t.sol index 2557cce..16cd5d2 100644 --- a/test/OrganizationContract.t.sol +++ b/test/OrganizationContract.t.sol @@ -9,59 +9,64 @@ import "../src/libraries/structs.sol" as StructLib; import "../src/libraries/errors.sol"; contract MockERC20 is IERC20 { - mapping(address => uint256) private _balances; - mapping(address => mapping(address => uint256)) private _allowances; - uint256 private _totalSupply; + mapping(address => uint256) internal _balances; + mapping(address => mapping(address => uint256)) internal _allowances; + uint256 internal _totalSupply; - function totalSupply() external view returns (uint256) { + function totalSupply() external view virtual override returns (uint256) { return _totalSupply; } - function balanceOf(address account) external view returns (uint256) { + function balanceOf(address account) external view virtual override returns (uint256) { return _balances[account]; } - function transfer(address to, uint256 amount) external returns (bool) { + function transfer(address to, uint256 amount) external virtual override returns (bool) { require(_balances[msg.sender] >= amount, "Insufficient balance"); require(to != address(0), "Transfer to zero address"); - + _balances[msg.sender] -= amount; _balances[to] += amount; return true; } - function allowance(address owner, address spender) external view returns (uint256) { + function allowance(address owner, address spender) external view virtual override returns (uint256) { return _allowances[owner][spender]; } - - function transferFrom(address from, address to, uint256 amount) external returns (bool) { + + function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) { require(_balances[from] >= amount, "Insufficient balance"); require(_allowances[from][msg.sender] >= amount, "Insufficient allowance"); require(to != address(0), "Transfer to zero address"); - + _allowances[from][msg.sender] -= amount; _balances[from] -= amount; _balances[to] += amount; return true; } - - function approve(address spender, uint256 amount) external returns (bool) { + + function approve(address spender, uint256 amount) external virtual override returns (bool) { require(spender != address(0), "Approve to zero address"); - + _allowances[msg.sender][spender] = amount; return true; } // Helper function for testing - function mint(address account, uint256 amount) external { + function mint(address account, uint256 amount) external virtual { require(account != address(0), "Mint to zero address"); - + _balances[account] += amount; _totalSupply += amount; } } contract OrganizationContractTest is Test { + // Events from OrganizationContract for testing + event RecipientCreated(bytes32 indexed recipientId, address indexed walletAddress, string name); + event TokenDisbursed(address indexed tokenAddress, address indexed recipient, uint256 amount); + event BatchDisbursement(address indexed tokenAddress, uint256 recipientCount, uint256 totalAmount); + OrganizationFactory public factory; OrgContract.OrganizationContract public org; MockERC20 public token; @@ -75,17 +80,17 @@ contract OrganizationContractTest is Test { user = address(1); recipient = address(2); feeCollector = address(3); - + factory = new OrganizationFactory(feeCollector); address orgAddress = factory.createOrganization("Test Org", "Test Description"); org = OrgContract.OrganizationContract(orgAddress); - + token = new MockERC20(); - + // Set up initial token balances token.mint(owner, 1000 ether); token.mint(user, 1000 ether); - + // Approve organization to spend tokens token.approve(address(org), type(uint256).max); @@ -96,10 +101,10 @@ contract OrganizationContractTest is Test { function testCreateRecipient() public { string memory name = "Test Recipient"; uint256 salary = 1000; - + bytes32 recipientId = org.createRecipient(recipient, name, salary); assertTrue(recipientId != bytes32(0), "Recipient ID should not be zero"); - + StructLib.Structs.Recipient memory recipientInfo = org.getRecipient(recipient); assertEq(recipientInfo.salaryAmount, salary, "Salary should be set correctly"); } @@ -107,78 +112,84 @@ contract OrganizationContractTest is Test { function testDisburseToken() public { // Create recipient first org.createRecipient(recipient, "Test Recipient", 1000); - + // Disburse tokens uint256 amount = 100; bool success = org.disburseToken(address(token), recipient, amount); assertTrue(success, "Token disbursement should succeed"); - + // Check balances uint256 fee = (amount * org.transactionFee()) / 10000; assertEq(token.balanceOf(recipient), amount - fee, "Recipient should receive correct amount"); assertEq(token.balanceOf(feeCollector), fee, "Fee collector should receive correct fee"); + + StructLib.Structs.Payment[] memory payments = org.getRecipientPayments(recipient); + assertEq(payments[0].amount, amount - fee, "Payment history should record amount minus fee"); } function testRequestAdvance() public { // Create recipient first org.createRecipient(recipient, "Test Recipient", 1000); - + // Set advance limit org.setRecipientAdvanceLimit(recipient, 500); - + // Request advance uint256 amount = 300; - uint256 repaymentDate = block.timestamp + 30 days; - + vm.prank(recipient); - org.requestAdvance(amount, repaymentDate, address(token)); - + org.requestAdvance(amount, address(token)); + // Advance time by 1 second to ensure approval date is after request date vm.warp(block.timestamp + 1); - + // Approve the advance request org.approveAdvance(recipient); - + // Get advance request ( address requestRecipient, uint256 requestAmount, uint256 requestDate, uint256 approvalDate, - uint256 expectedRepaymentDate, bool approved, bool repaid, address requestToken ) = org.advanceRequests(recipient); - + // Verify advance request details assertEq(requestRecipient, recipient, "Recipient address mismatch"); assertEq(requestAmount, amount, "Request amount mismatch"); assertEq(requestToken, address(token), "Token address mismatch"); assertTrue(approved, "Request should be approved"); assertFalse(repaid, "Request should not be repaid yet"); - assertEq(expectedRepaymentDate, repaymentDate, "Repayment date mismatch"); assertGt(approvalDate, requestDate, "Approval date should be after request date"); } + function test_RevertWhen_RequestAdvanceWithUnsupportedToken() public { + org.createRecipient(recipient, "Test Recipient", 1000); + vm.prank(recipient); + vm.expectRevert(CustomErrors.InvalidToken.selector); + org.requestAdvance(100, address(999)); + } + function testApproveAdvance() public { // Create recipient first org.createRecipient(recipient, "Test Recipient", 1000); - + // Set advance limit org.setRecipientAdvanceLimit(recipient, 500); - + // Request advance uint256 amount = 300; - uint256 repaymentDate = block.timestamp + 30 days; - + vm.prank(recipient); - org.requestAdvance(amount, repaymentDate, address(token)); - + org.requestAdvance(amount, address(token)); + // Approve advance bool success = org.approveAdvance(recipient); assertTrue(success, "Advance approval should succeed"); - + // Verify balances assertEq(token.balanceOf(recipient), amount, "Recipient should receive advance amount"); } @@ -200,19 +211,19 @@ contract OrganizationContractTest is Test { address[] memory addresses = new address[](2); string[] memory names = new string[](2); uint256[] memory salaries = new uint256[](2); - + addresses[0] = address(1); addresses[1] = address(2); names[0] = "Recipient 1"; names[1] = "Recipient 2"; salaries[0] = 1000; salaries[1] = 2000; - + org.batchCreateRecipients(addresses, names, salaries); - + StructLib.Structs.Recipient memory recipient1 = org.getRecipient(addresses[0]); StructLib.Structs.Recipient memory recipient2 = org.getRecipient(addresses[1]); - + assertEq(recipient1.salaryAmount, 1000, "Salary should be set correctly for recipient 1"); assertEq(recipient2.salaryAmount, 2000, "Salary should be set correctly for recipient 2"); } @@ -222,36 +233,48 @@ contract OrganizationContractTest is Test { address[] memory recipients = new address[](2); string[] memory names = new string[](2); uint256[] memory amounts = new uint256[](2); - + recipients[0] = address(1); recipients[1] = address(2); names[0] = "Recipient 1"; names[1] = "Recipient 2"; - amounts[0] = 100; - amounts[1] = 200; - + amounts[0] = 100 * 10 ** 18; // 100 tokens with 18 decimals + amounts[1] = 200 * 10 ** 18; // 200 tokens with 18 decimals + org.batchCreateRecipients(recipients, names, amounts); - + // Calculate total amount including fees - uint256 totalAmount = amounts[0] + amounts[1]; - uint256 fee = (totalAmount * org.transactionFee()) / 10000; - uint256 totalWithFees = totalAmount + fee; - - // Mint and approve tokens - token.mint(owner, totalWithFees); - token.approve(address(org), totalWithFees); - + uint256 totalNetAmount = amounts[0] + amounts[1]; + uint256 totalGrossAmount = (totalNetAmount * 10000) / (10000 - org.transactionFee()); + uint256 totalFees = totalGrossAmount - totalNetAmount; + + // Store initial balances + uint256 initialBalance1 = token.balanceOf(recipients[0]); + uint256 initialBalance2 = token.balanceOf(recipients[1]); + uint256 initialFeeCollectorBalance = token.balanceOf(feeCollector); + + // Mint and approve tokens for gross amount + token.mint(owner, totalGrossAmount); + token.approve(address(org), totalGrossAmount); + // Disburse tokens bool success = org.batchDisburseToken(address(token), recipients, amounts); assertTrue(success, "Batch disbursement should succeed"); - - // Check balances - assertEq(token.balanceOf(recipients[0]), amounts[0], "Recipient 1 should receive correct amount"); - assertEq(token.balanceOf(recipients[1]), amounts[1], "Recipient 2 should receive correct amount"); - assertEq(token.balanceOf(feeCollector), fee, "Fee collector should receive correct fee"); + + // Check balance differences + assertEq( + token.balanceOf(recipients[0]) - initialBalance1, amounts[0], "Recipient 1 should receive correct amount" + ); + assertEq( + token.balanceOf(recipients[1]) - initialBalance2, amounts[1], "Recipient 2 should receive correct amount" + ); + assertEq( + token.balanceOf(feeCollector) - initialFeeCollectorBalance, + totalFees - 1, + "Fee collector should receive correct fee" + ); } - function testSetRecipientAdvanceLimit() public { org.createRecipient(recipient, "Test Recipient", 1000); uint256 newLimit = 200; @@ -259,61 +282,22 @@ contract OrganizationContractTest is Test { assertEq(org.recipientAdvanceLimit(recipient), newLimit, "Advance limit should be updated"); } - function testAdvanceRepayment() public { - // Create recipient and request advance - org.createRecipient(recipient, "Test Recipient", 1000); - org.setRecipientAdvanceLimit(recipient, 500); - - uint256 amount = 300; - uint256 repaymentDate = block.timestamp + 30 days; - - vm.prank(recipient); - org.requestAdvance(amount, repaymentDate, address(token)); - - // Mint and approve tokens for advance - token.mint(owner, amount); - token.approve(address(org), amount); - - // Approve advance - org.approveAdvance(recipient); - - // Mint and approve tokens for salary - uint256 salary = 1000; - uint256 fee = (salary * org.transactionFee()) / 10000; - uint256 totalAmount = salary + fee; - - token.mint(owner, totalAmount); - token.approve(address(org), totalAmount); - - // Disburse salary which should deduct the advance - bool success = org.disburseToken(address(token), recipient, salary); - assertTrue(success, "Disbursement should succeed"); - - // Verify advance is marked as repaid - (,,,,,,bool repaid,) = org.advanceRequests(recipient); - assertTrue(repaid, "Advance should be marked as repaid"); - - // Verify recipient received correct amount (salary - advance) - assertEq(token.balanceOf(recipient), salary - amount, "Recipient should receive salary minus advance"); - } - function test_RevertWhen_DisburseTokenWithUnpaidAdvance() public { org.createRecipient(recipient, "Test Recipient", 1000); org.setRecipientAdvanceLimit(recipient, 500); - + uint256 amount = 300; - uint256 repaymentDate = block.timestamp + 30 days; - + vm.prank(recipient); - org.requestAdvance(amount, repaymentDate, address(token)); - + org.requestAdvance(amount, address(token)); + // Approve advance org.approveAdvance(recipient); - + // Ensure we have enough tokens for the disbursement but not enough to cover the advance token.mint(owner, amount - 1); token.approve(address(org), amount - 1); - + // Try to disburse less than the advance amount vm.expectRevert(); org.disburseToken(address(token), recipient, amount - 1); @@ -327,7 +311,7 @@ contract OrganizationContractTest is Test { function test_RevertWhen_SetTransactionFeeTooHigh() public { uint256 newFee = 81; - vm.expectRevert("Fee too high"); + vm.expectRevert(CustomErrors.InvalidFee.selector); factory.updateOrganizationTransactionFee(owner, newFee); } @@ -346,7 +330,7 @@ contract OrganizationContractTest is Test { address[] memory addresses = new address[](2); string[] memory names = new string[](1); uint256[] memory salaries = new uint256[](2); - + vm.expectRevert(); org.batchCreateRecipients(addresses, names, salaries); } @@ -354,7 +338,7 @@ contract OrganizationContractTest is Test { function test_RevertWhen_BatchDisburseTokenInvalidInput() public { address[] memory recipients = new address[](2); uint256[] memory amounts = new uint256[](1); - + vm.expectRevert(); org.batchDisburseToken(address(token), recipients, amounts); } @@ -374,14 +358,226 @@ contract OrganizationContractTest is Test { function test_RevertWhen_RequestAdvanceExceedsLimit() public { org.createRecipient(recipient, "Test Recipient", 1000); org.setRecipientAdvanceLimit(recipient, 500); - + vm.prank(recipient); vm.expectRevert(); - org.requestAdvance(501, block.timestamp + 30 days, address(token)); + org.requestAdvance(501, address(token)); } function test_RevertWhen_ApproveAdvanceForNonExistentRecipient() public { vm.expectRevert(); org.approveAdvance(recipient); } -} \ No newline at end of file + + function testUpdateOrganizationInfo() public { + string memory newName = "Updated Org"; + string memory newDesc = "Updated Description"; + + // Store initial timestamp + StructLib.Structs.Organization memory initialInfo = org.getOrganizationInfo(); + + // Advance time by 1 second + vm.warp(block.timestamp + 1); + + org.updateOrganizationInfo(newName, newDesc); + + StructLib.Structs.Organization memory info = org.getOrganizationInfo(); + assertEq(info.name, newName, "Organization name should be updated"); + assertEq(info.description, newDesc, "Organization description should be updated"); + assertTrue(info.updatedAt > initialInfo.createdAt, "Updated timestamp should be greater than created timestamp"); + } + + function test_RevertWhen_UpdateOrgInfoEmptyName() public { + vm.expectRevert(CustomErrors.NameRequired.selector); + org.updateOrganizationInfo("", "Valid Description"); + } + + function test_RevertWhen_UpdateOrgInfoEmptyDescription() public { + vm.expectRevert(CustomErrors.DescriptionRequired.selector); + org.updateOrganizationInfo("Valid Name", ""); + } + + function test_RevertWhen_UnauthorizedUpdateOrgInfo() public { + vm.prank(user); + vm.expectRevert(CustomErrors.UnauthorizedAccess.selector); + org.updateOrganizationInfo("New Name", "New Description"); + } + + function testUpdateRecipient() public { + org.createRecipient(recipient, "Original Name", 1000); + + // Store initial timestamp + StructLib.Structs.Recipient memory initial = org.getRecipient(recipient); + + // Advance time by 1 second + vm.warp(block.timestamp + 1); + + org.updateRecipient(recipient, "Updated Name"); + + StructLib.Structs.Recipient memory updated = org.getRecipient(recipient); + assertEq(updated.name, "Updated Name", "Recipient name should be updated"); + assertTrue(updated.updatedAt > initial.createdAt, "Updated timestamp should be greater than created timestamp"); + } + + function test_RevertWhen_UpdateNonExistentRecipient() public { + vm.expectRevert(CustomErrors.RecipientNotFound.selector); + org.updateRecipient(address(999), "New Name"); + } + + function test_RevertWhen_UpdateRecipientEmptyName() public { + org.createRecipient(recipient, "Original Name", 1000); + vm.expectRevert(CustomErrors.NameRequired.selector); + org.updateRecipient(recipient, ""); + } + + function test_RevertWhen_CreateDuplicateRecipient() public { + org.createRecipient(recipient, "Original Name", 1000); + vm.expectRevert(CustomErrors.RecipientAlreadyExists.selector); + org.createRecipient(recipient, "Another Name", 2000); + } + + function testGetAllPayments() public { + // Create two recipients + address recipient1 = address(4); + address recipient2 = address(5); + org.createRecipient(recipient1, "Recipient 1", 1000); + org.createRecipient(recipient2, "Recipient 2", 2000); + + // Make payments + uint256 amount1 = 100 ether; + uint256 amount2 = 200 ether; + + token.mint(owner, 1000 ether); + token.approve(address(org), type(uint256).max); + + org.disburseToken(address(token), recipient1, amount1); + org.disburseToken(address(token), recipient2, amount2); + + StructLib.Structs.Payment[] memory payments = org.getAllPayments(); + assertEq(payments.length, 2, "Should have two payments"); + + assertEq(payments[0].amount, amount1, "First payment amount should be correct"); + assertEq(payments[0].recipient, recipient1, "First payment recipient should be correct"); + + assertEq(payments[1].amount, amount2, "Second payment amount should be correct"); + assertEq(payments[1].recipient, recipient2, "Second payment recipient should be correct"); + } + + function testGetRecipientPayments() public { + // Create recipient and make multiple payments + org.createRecipient(recipient, "Test Recipient", 1000); + + token.mint(owner, 1000 ether); + token.approve(address(org), type(uint256).max); + + uint256[] memory amounts = new uint256[](3); + amounts[0] = 100 ether; + amounts[1] = 200 ether; + amounts[2] = 300 ether; + + for (uint256 i = 0; i < amounts.length; i++) { + org.disburseToken(address(token), recipient, amounts[i]); + } + + StructLib.Structs.Payment[] memory payments = org.getRecipientPayments(recipient); + assertEq(payments.length, 3, "Should have three payments"); + + for (uint256 i = 0; i < payments.length; i++) { + assertEq(payments[i].amount, amounts[i], "Payment amount should be correct"); + assertEq(payments[i].recipient, recipient, "Payment recipient should be correct"); + } + } + + function testMultipleAdvanceRequests() public { + org.createRecipient(recipient, "Test Recipient", 1000); + org.setRecipientAdvanceLimit(recipient, 500 ether); + + // First advance request + vm.startPrank(recipient); + org.requestAdvance(200 ether, address(token)); + + // Should not be able to make another request before first is processed + vm.expectRevert(CustomErrors.InvalidRequest.selector); + org.requestAdvance(100 ether, address(token)); + vm.stopPrank(); + + // Approve first advance + uint256 advanceAmount = 200 ether; + uint256 advanceGrossAmount = (advanceAmount * 10000) / (10000 - org.transactionFee()); + token.mint(owner, advanceGrossAmount); + token.approve(address(org), advanceGrossAmount); + org.approveAdvance(recipient); + + // Make salary payment to clear advance + uint256 salaryNet = 1000 ether; + uint256 salaryGross = (salaryNet * 10000) / (10000 - org.transactionFee()); + token.mint(owner, salaryGross); + token.approve(address(org), salaryGross); + org.disburseToken(address(token), recipient, salaryNet); + + // Should be able to request new advance after repayment + vm.prank(recipient); + org.requestAdvance(300 ether, address(token)); + } + + function testSetDefaultAdvanceLimit() public { + uint256 newLimit = 1000 ether; + org.setDefaultAdvanceLimit(newLimit); + + // Create new recipient and verify they get new default limit + address newRecipient = address(6); + org.createRecipient(newRecipient, "New Recipient", 2000); + assertEq(org.recipientAdvanceLimit(newRecipient), newLimit, "New recipient should get default advance limit"); + } + + function test_RevertWhen_RequestZeroAdvance() public { + org.createRecipient(recipient, "Test Recipient", 1000); + org.setRecipientAdvanceLimit(recipient, 500 ether); + + vm.prank(recipient); + vm.expectRevert(CustomErrors.InvalidAmount.selector); + org.requestAdvance(0, address(token)); + } + + function testRecipientCreatedEvent() public { + vm.expectEmit(true, true, false, true); + emit RecipientCreated( + bytes32(keccak256(abi.encodePacked(recipient, block.timestamp))), recipient, "Test Recipient" + ); + org.createRecipient(recipient, "Test Recipient", 1000); + } + + function testTokenDisbursedEvent() public { + org.createRecipient(recipient, "Test Recipient", 1000); + uint256 amount = 100 ether; + + vm.expectEmit(true, true, false, true); + emit TokenDisbursed(address(token), recipient, amount); + org.disburseToken(address(token), recipient, amount); + } + + function testBatchDisbursementEvent() public { + address[] memory recipients = new address[](2); + string[] memory names = new string[](2); + uint256[] memory amounts = new uint256[](2); + + recipients[0] = address(1); + recipients[1] = address(2); + names[0] = "Recipient 1"; + names[1] = "Recipient 2"; + amounts[0] = 100 ether; + amounts[1] = 200 ether; + + org.batchCreateRecipients(recipients, names, amounts); + + uint256 totalNetAmount = amounts[0] + amounts[1]; + uint256 totalGrossAmount = (totalNetAmount * 10000) / (10000 - org.transactionFee()); + + token.mint(owner, totalGrossAmount); + token.approve(address(org), totalGrossAmount); + + vm.expectEmit(true, false, false, true); + emit BatchDisbursement(address(token), 2, totalGrossAmount - 1); // Account for rounding down + org.batchDisburseToken(address(token), recipients, amounts); + } +} diff --git a/test/OrganizationFactory.t.sol b/test/OrganizationFactory.t.sol index af27994..b7bd86d 100644 --- a/test/OrganizationFactory.t.sol +++ b/test/OrganizationFactory.t.sol @@ -5,6 +5,7 @@ import "forge-std/Test.sol"; import "../src/contracts/OrganizationFactory.sol"; import "../src/contracts/OrganizationContract.sol" as OrgContract; import "../src/libraries/structs.sol"; +import "../src/libraries/errors.sol"; contract OrganizationFactoryTest is Test { OrganizationFactory public factory; @@ -18,17 +19,17 @@ contract OrganizationFactoryTest is Test { user = address(1); token = address(2); feeCollector = address(3); - + factory = new OrganizationFactory(feeCollector); } function testCreateOrganization() public { string memory name = "Test Org"; string memory description = "Test Description"; - + address orgAddress = factory.createOrganization(name, description); assertTrue(orgAddress != address(0), "Organization address should not be zero"); - + // Verify organization contract details OrgContract.OrganizationContract org = OrgContract.OrganizationContract(orgAddress); assertEq(org.owner(), owner, "Owner should be set correctly"); @@ -45,7 +46,7 @@ contract OrganizationFactoryTest is Test { function testAddToken() public { string memory tokenName = "Test Token"; - + factory.addToken(tokenName, token); assertTrue(factory.isTokenSupported(token), "Token should be supported"); assertEq(factory.getTokenName(token), tokenName, "Token name should be set correctly"); @@ -53,83 +54,83 @@ contract OrganizationFactoryTest is Test { function testRemoveToken() public { string memory tokenName = "Test Token"; - + factory.addToken(tokenName, token); factory.removeToken(token); - + assertFalse(factory.isTokenSupported(token), "Token should not be supported"); assertEq(bytes(factory.getTokenName(token)).length, 0, "Token name should be removed"); } function testGetSupportedTokensCount() public { assertEq(factory.getSupportedTokensCount(), 0, "Initial count should be 0"); - + factory.addToken("Token 1", address(1)); assertEq(factory.getSupportedTokensCount(), 1, "Count should increase after adding token"); - + factory.addToken("Token 2", address(2)); assertEq(factory.getSupportedTokensCount(), 2, "Count should increase after adding another token"); - + factory.removeToken(address(1)); assertEq(factory.getSupportedTokensCount(), 1, "Count should decrease after removing token"); } function test_RevertWhen_CreateOrganizationWithEmptyName() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.NameRequired.selector); factory.createOrganization("", "Test Description"); } function test_RevertWhen_CreateOrganizationWithEmptyDescription() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.DescriptionRequired.selector); factory.createOrganization("Test Org", ""); } function test_RevertWhen_AddTokenWithEmptyName() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.InvalidTokenName.selector); factory.addToken("", token); } function test_RevertWhen_AddTokenWithZeroAddress() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); factory.addToken("Test Token", address(0)); } function test_RevertWhen_AddExistingToken() public { factory.addToken("Test Token", token); - vm.expectRevert(); + vm.expectRevert(CustomErrors.TokenAlreadySupported.selector); factory.addToken("Test Token", token); } function test_RevertWhen_RemoveNonExistentToken() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.InvalidToken.selector); factory.removeToken(token); } function test_RevertWhen_RemoveTokenWithZeroAddress() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.InvalidToken.selector); factory.removeToken(address(0)); } function test_RevertWhen_GetTokenNameWithZeroAddress() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); factory.getTokenName(address(0)); } function test_RevertWhen_IsTokenSupportedWithZeroAddress() public { - vm.expectRevert(); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); factory.isTokenSupported(address(0)); } - function testUpdateOrganizationTransactionFee() public { + function testUpdateOrganizationTransactionFee() public { // Create an organization first address orgOwner = address(1); vm.prank(orgOwner); address orgAddress = factory.createOrganization("Test Org", "Test Description"); - + // Update transaction fee uint256 newFee = 30; factory.updateOrganizationTransactionFee(orgOwner, newFee); - + // Verify the fee was updated OrgContract.OrganizationContract org = OrgContract.OrganizationContract(orgAddress); assertEq(org.transactionFee(), newFee, "Transaction fee should be updated"); @@ -140,11 +141,11 @@ contract OrganizationFactoryTest is Test { address orgOwner = address(1); vm.prank(orgOwner); address orgAddress = factory.createOrganization("Test Org", "Test Description"); - + // Update fee collector address newCollector = address(2); factory.updateOrganizationFeeCollector(orgOwner, newCollector); - + // Verify the fee collector was updated OrgContract.OrganizationContract org = OrgContract.OrganizationContract(orgAddress); assertEq(org.feeCollector(), newCollector, "Fee collector should be updated"); @@ -155,10 +156,10 @@ contract OrganizationFactoryTest is Test { address orgOwner = address(1); vm.prank(orgOwner); factory.createOrganization("Test Org", "Test Description"); - + // Try to update fee as non-owner vm.prank(address(2)); - vm.expectRevert("Not authorized"); + vm.expectRevert(CustomErrors.UnauthorizedAccess.selector); factory.updateOrganizationTransactionFee(orgOwner, 30); } @@ -167,10 +168,10 @@ contract OrganizationFactoryTest is Test { address orgOwner = address(1); vm.prank(orgOwner); factory.createOrganization("Test Org", "Test Description"); - + // Try to update fee collector as non-owner vm.prank(address(2)); - vm.expectRevert("Not authorized"); + vm.expectRevert(CustomErrors.UnauthorizedAccess.selector); factory.updateOrganizationFeeCollector(orgOwner, address(3)); } @@ -188,4 +189,4 @@ contract OrganizationFactoryTest is Test { vm.expectRevert(CustomErrors.OrganizationNotFound.selector); factory.getOrganizationDetails(address(1)); } -} \ No newline at end of file +} diff --git a/test/Token.t.sol b/test/Token.t.sol index 67ab2b3..b96f4e3 100644 --- a/test/Token.t.sol +++ b/test/Token.t.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.28; import "forge-std/Test.sol"; import "../src/contracts/Tokens.sol"; +import "../src/libraries/errors.sol"; contract TokenTest is Test { TokenRegistry public tokenRegistry; @@ -14,7 +15,7 @@ contract TokenTest is Test { owner = address(this); token1 = address(1); token2 = address(2); - + tokenRegistry = new TokenRegistry(); } @@ -25,7 +26,7 @@ contract TokenTest is Test { function testAddToken() public { string memory tokenName = "Test Token"; tokenRegistry.addToken(tokenName, token1); - + assertEq(tokenRegistry.supportedTokensCount(), 1, "Supported tokens count should increase"); assertEq(tokenRegistry.getTokenName(token1), tokenName, "Token name should be set correctly"); assertTrue(tokenRegistry.isTokenSupported(token1), "Token should be supported"); @@ -35,47 +36,47 @@ contract TokenTest is Test { string memory tokenName = "Test Token"; tokenRegistry.addToken(tokenName, token1); tokenRegistry.removeToken(token1); - + assertEq(tokenRegistry.supportedTokensCount(), 0, "Supported tokens count should decrease"); assertEq(bytes(tokenRegistry.getTokenName(token1)).length, 0, "Token name should be removed"); assertFalse(tokenRegistry.isTokenSupported(token1), "Token should not be supported"); } function test_RevertWhen_AddTokenWithEmptyName() public { - vm.expectRevert("Token name is required"); + vm.expectRevert(CustomErrors.InvalidTokenName.selector); tokenRegistry.addToken("", token1); } function test_RevertWhen_AddTokenWithZeroAddress() public { - vm.expectRevert("Invalid token address"); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); tokenRegistry.addToken("Test Token", address(0)); } function test_RevertWhen_AddExistingToken() public { string memory tokenName = "Test Token"; tokenRegistry.addToken(tokenName, token1); - - vm.expectRevert("Token already exists"); + + vm.expectRevert(CustomErrors.TokenAlreadySupported.selector); tokenRegistry.addToken(tokenName, token1); } function test_RevertWhen_RemoveNonExistentToken() public { - vm.expectRevert("Token does not exist"); + vm.expectRevert(CustomErrors.InvalidToken.selector); tokenRegistry.removeToken(token1); } function test_RevertWhen_RemoveTokenWithZeroAddress() public { - vm.expectRevert("Invalid token address"); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); tokenRegistry.removeToken(address(0)); } function test_RevertWhen_GetTokenNameWithZeroAddress() public { - vm.expectRevert("Invalid token address"); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); tokenRegistry.getTokenName(address(0)); } function test_RevertWhen_IsTokenSupportedWithZeroAddress() public { - vm.expectRevert("Invalid token address"); + vm.expectRevert(CustomErrors.InvalidTokenAddress.selector); tokenRegistry.isTokenSupported(address(0)); } -} \ No newline at end of file +} diff --git a/verify_command.txt b/verify_command.txt new file mode 100644 index 0000000..2be6d05 --- /dev/null +++ b/verify_command.txt @@ -0,0 +1 @@ +forge script script/deploy.s.sol:OrganizationScript --rpc-url https://rpc.sepolia-api.lisk.com --verify --verifier blockscout --verifier-url https://sepolia-blockscout.lisk.com/api --etherscan-api-key 123 \ --account PRIVATE_KEY --resume