[ { "inputs": [ { "internalType": "string", "name": "_param", "type": "string" }, { "internalType": "address", "name": "_address", "type": "address" } ], "name": "AddressInvalid", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "_param", "type": "string" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "AmountInvalid", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_length1", "type": "uint256" }, { "internalType": "uint256", "name": "_length2", "type": "uint256" } ], "name": "ArrayLengthMismatch", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_maxDepositPerUser", "type": "uint256" }, { "internalType": "uint256", "name": "_minDepositPerUser", "type": "uint256" } ], "name": "DepositAmountInvalid", "type": "error" }, { "inputs": [], "name": "DepositClosed", "type": "error" }, { "inputs": [], "name": "DepositStarted", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "required", "type": "uint256" }, { "internalType": "uint256", "name": "current", "type": "uint256" } ], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientFunds", "type": "error" }, { "inputs": [], "name": "InvalidData", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_length", "type": "uint256" } ], "name": "Max4TokensAllowed", "type": "error" }, { "inputs": [], "name": "MaxTokensMinted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "MaxTokensMintedForUser", "type": "error" }, { "inputs": [], "name": "MintingNotOpen", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "NoAccess", "type": "error" }, { "inputs": [], "name": "NotERC20Template", "type": "error" }, { "inputs": [], "name": "NotWhitelisted", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_totalRaiseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxDepositPerUser", "type": "uint256" } ], "name": "RaiseAmountInvalid", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emitterContractAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20DaoDetails", "outputs": [ { "internalType": "string", "name": "DaoName", "type": "string" }, { "internalType": "string", "name": "DaoSymbol", "type": "string" }, { "internalType": "uint256", "name": "quorum", "type": "uint256" }, { "internalType": "uint256", "name": "threshold", "type": "uint256" }, { "internalType": "bool", "name": "isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "isTransferable", "type": "bool" }, { "internalType": "bool", "name": "onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factoryAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC20DAOdetails", "outputs": [ { "components": [ { "internalType": "string", "name": "DaoName", "type": "string" }, { "internalType": "string", "name": "DaoSymbol", "type": "string" }, { "internalType": "uint256", "name": "quorum", "type": "uint256" }, { "internalType": "uint256", "name": "threshold", "type": "uint256" }, { "internalType": "bool", "name": "isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "isTransferable", "type": "bool" }, { "internalType": "bool", "name": "onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "internalType": "struct Helper.ERC20DAOdetails", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_refundModule", "type": "address" } ], "name": "grantRefundModule", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_emitter", "type": "address" }, { "internalType": "string", "name": "_DaoName", "type": "string" }, { "internalType": "string", "name": "_DaoSymbol", "type": "string" }, { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, { "internalType": "uint256", "name": "_threshold", "type": "uint256" }, { "internalType": "bool", "name": "_isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "_isTransferable", "type": "bool" }, { "internalType": "address", "name": "_ownerAddress", "type": "address" }, { "internalType": "bool", "name": "onlyAllowWhitelist", "type": "bool" } ], "name": "initializeERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_amountArray", "type": "uint256[]" }, { "internalType": "address[]", "name": "_userAddress", "type": "address[]" } ], "name": "mintGTToAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "mintToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleOnlyAllowWhitelist", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_nft", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "transferNft", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isGovernanceActive", "type": "bool" } ], "name": "updateGovernanceActive", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, { "internalType": "uint256", "name": "_threshold", "type": "uint256" } ], "name": "updateGovernanceSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "updateProposalAndExecution", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isTokenTransferable", "type": "bool" } ], "name": "updateTokenTransferability", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080806040523461001b576001606655612e0f90816100218239f35b600080fdfe60e080604052600436101561001d575b50361561001b57600080fd5b005b6000908160c052813560e01c90816301ffc9a71461224d5750806306fdde031461219a578063095ea7b314612174578063150b7a021461210b57806318160ddd146120eb57806323b872dd1461202e578063248a9ca314611ffd5780632f2ff15d14611f8c578063313ce56714611f6e57806336568abe14611edc5780633950935114611e875780634c1ff9ab14611dcc578063515f0c1414611bfa578063667ab70314611ac6578063668132c9146119ab5780636ffc166f1461157857806370a082311461153c5780638728c87d1461150957806391d14854146114bb57806395d89b41146113d3578063966dae0e146113a85780639dc29fac1461109f578063a0619e3714611074578063a217fddf14611056578063a457c2d714610fb0578063a9059cbb14610f6e578063b3cda50d14610d9f578063b8cd71f914610d25578063d11eccd614610c39578063d547741f14610bf8578063dd62ed3e14610ba8578063e6f002a814610b70578063f67b6cbd146104385763f68890ee0361000f5734610432576060366003190112610432576101b96122ea565b60443591906001600160401b03808411610432573660238501121561043257836004013581811161043257602494858260051b8201013681116104325760ff606d5460101c16610279575b50505050905060018060a01b036068541633148015610270575b156102365761022e913590612b1c565b60c051604051f35b60405162461bcd60e51b815260206004820152601381840152724f6e6c7920666163746f7279206f722064616f60681b6044820152606490fd5b5030331461021e565b606854604051633b188ab560e01b815230600482015261018091829082908b9082906001600160a01b03165afa908115610425576101009260c051926103f8575b50500151956040516020958682019260018060601b03198960601b168452601483526040830191838310908311176103e55750604052519020916102fd846124ca565b9361030b60405195866123ea565b84528701848085015b8383106103d557505050509260c051935b825185101561038b576103388584612b08565b5160c0518183101561037d57509060c051528352604060c051205b9360001981146103665760010193610325565b86634e487b7160e01b60c05152601160045260c051fd5b528352604060c05120610353565b915093919250036103a0578080808493610204565b606490600f846040519262461bcd60e51b845260048401528201526e24b731b7b93932b1ba10383937b7b360891b6044820152fd5b8235815291810191869101610314565b634e487b7160e01b815260416004528a90fd5b6104179250803d1061041e575b61040f81836123ea565b810190612a43565b38806102ba565b503d610405565b6040513d60c051823e3d90fd5b60c05180fd5b503461043257610140366003190112610432576104536122ea565b61045b612305565b6044356001600160401b0381116104325761047a903690600401612542565b926064356001600160401b0381116104325761049a903690600401612542565b9260c435918215158303610b655760e4358015158103610b6c5761010435926001600160a01b0384168403610b685761012435928315158403610b65575060c051549560ff8760081c161596878098610b58575b8015610b41575b15610ae55760c05160ff19821660011781559088610ad3575b5050606880546001600160a01b039384166001600160a01b03199182161790915560678054929093169116179055604051936105498561238a565b87855260208501879052608435604086015260a435606086015215156080850152151560a0840152151560c08301526001600160a01b031660e082015283516001600160401b038111610872576105a1606954612350565b601f8111610a8b575b508060c051602090601f8311600114610a22575060c05191610a17575b508160011b916000199060031b1c1916176069555b60208101518051906001600160401b0382116108725781906105ff606a54612350565b601f81116109c2575b5060c05190602091601f8411600114610954575060c05192610949575b50508160011b916000199060031b1c191617606a555b6040810151606b556060810151606c556080810151151590606d5461ff0060a0830151151560081b169060ff62ff000060c0850151151560101b169360e06301000000600160b81b0391015160181b1694169060018060b81b03191617171717606d556106b960ff60c0515460081c166106b4816129c2565b6129c2565b82516001600160401b038111610872576106d4603654612350565b601f81116108fd575b5060c051602090601f831160011461089557508192939460c0519261088a575b50508160011b916000199060031b1c1916176036555b81516001600160401b0381116108725761072e603754612350565b601f8111610826575b5060c05192602090601f83116001146107c0578293945060c051926107b5575b50508160011b916000199060031b1c1916176037555b6107795760c051604051f35b60c05161ff001981541690557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a161022e565b015190503880610757565b906037601f198416955260c0519160208320925b86811061080e57508360019596106107f5575b505050811b0160375561076d565b015160001960f88460031b161c191690553880806107e7565b919260206001819286850151815501940192016107d4565b603760c0515260c05160208120601f840160051c81019260208510610868575b601f0160051c01915b82811061085d575050610737565b81815560010161084f565b9092508290610846565b634e487b7160e01b60c051526041600452602460c051fd5b0151905038806106fd565b6036905260c051602081209190601f198416905b8181106108e5575095836001959697106108cc575b505050811b01603655610713565b015160001960f88460031b161c191690553880806108be565b9192602060018192868b0151815501940192016108a9565b603660c0515260c05160208120601f840160051c8101926020851061093f575b601f0160051c01915b8281106109345750506106dd565b818155600101610926565b909250829061091d565b015190503880610625565b606a9194505260c051906020822091935b601f19841685106109a7576001945083601f1981161061098e575b505050811b01606a5561063b565b015160001960f88460031b161c19169055388080610980565b81810151835560209485019460019093019290910190610965565b909150606a60c0515260c05160208120601f850160051c810160208610610a10575b9085949392915b601f840160051c82018110610a0257505050610608565b8281558695506001016109eb565b50806109e4565b9050850151386105c7565b60699193505260c0516020812090925b601f1983168410610a73576001935082601f19811610610a5a575b5050811b016069556105dc565b87015160001960f88460031b161c191690553880610a4d565b87810151825560209384019360019092019101610a32565b606960c0515260c05160208120601f840160051c810160208510610acc575b601f840160051c82018110610ac1575050506105aa565b828155600101610aaa565b5080610aaa565b61ffff1916610101179055388061050e565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104f55750600160ff8216146104f5565b50600160ff8216106104ee565b80fd5b8280fd5b5080fd5b60c05180600319360112610b6557303303610b6557606d5462ff000060ff8260101c161560101b169062ff0000191617606d55604051f35b5034610432576040366003190112610432576040602091610bc76122ea565b610bcf612305565b60c080516001600160a01b03938416905260348652518490209116825283522054604051908152f35b346104325760403660031901126104325761022e600435610c17612305565b908060c051526065602052610c346001604060c051200154612685565b612827565b3461043257610c473661231b565b91303303610432576001600160a01b03908116918215610cf25716918215610cc057813b156104325760405192632142170760e11b8452306004850152602484015260448301528160648160c05180945af1801561042557610cab5760c051604051f35b610cb4906123bc565b60c051801561022e5780fd5b6084836040519063045a4b3160e01b82526040600483015260036044830152625f746f60e81b60648301526024820152fd5b6084836040519063045a4b3160e01b825260406004830152600460448301526317db999d60e21b60648301526024820152fd5b602036600319011261043257610d396124e1565b303303610432571515606d5461ff008260081b169061ff00191617606d5560018060a01b0360675416803b15610432576040519163089a084f60e21b835230600484015260248301528160448160c05180945af1801561042557610cab5760c051604051f35b3461043257604036600319011261043257610db86122ea565b60249081356001600160401b038111610432573660238201121561043257610de9903690848160040135910161250b565b606854604051633b188ab560e01b81523060048201529193916001600160a01b039161018090819083908690829087165afa801561042557839260e09260c05192610f51575b50500151163303610f1f57600260665414610edb57600260665582168015610ea457505060c05191829182602083519301915af13d15610e9f573d610e73816124f0565b90610e8160405192836123ea565b815260c0513d916020013e5b1561043257600160665560c051604051f35b610e8d565b608492506040519163045a4b3160e01b835260406004840152600960448401526817d8dbdb9d1c9858dd60ba1b6064840152820152fd5b60405162461bcd60e51b815260206004820152601f818401527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b60405162461bcd60e51b815260206004820152600b818401526a4f6e6c7920476e6f73697360a81b6044820152606490fd5b610f679250803d1061041e5761040f81836123ea565b8780610e2f565b3461043257604036600319011261043257610fa5610f8a6122ea565b610f9b60ff606d5460081c16612bd6565b6024359033612c1b565b602060405160018152f35b503461043257604036600319011261043257610fca6122ea565b6040602435923360c0515260346020528160c0512060018060a01b038416825260205220549180831061100357610fa592039033612583565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b346104325760c05180600319360112610b6557602090604051908152f35b346104325760c05180600319360112610b65576067546040516001600160a01b039091168152602090f35b5034610432576040366003190112610432576110b96122ea565b6024803591600080516020612dba8339815191528085526020946065865260408120338252865260ff604082205416156111ef5750506001600160a01b03169081156111a2578160c0515260338452604060c051205490838210611154575082908260c051526033855203604060c05120558160355403603555604051918252600080516020612d9a83398151915260c051938493a3604051f35b8460226084926040519262461bcd60e51b845260048401528201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152fd5b8360216084926040519262461bcd60e51b845260048401528201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152fd5b8592506111fb336128c6565b9160405190611209826123cf565b6042825284820192606036853782511561139557603084538251906001918210156113825790607860218501536041915b818311611316575050506112e65760486112e2936112b7936112c69360405195869376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a86015261128e815180928c6037890191016122a2565b8401917001034b99036b4b9b9b4b733903937b6329607d1b6037840152518093868401906122a2565b010360288101845201826123ea565b60405193849362461bcd60e51b855260048501528301906122c5565b0390fd5b606485856040519162461bcd60e51b8352816004840152820152600080516020612d7a8339815191526044820152fd5b909192600f8116601081101561136f576f181899199a1a9b1b9c1cb0b131b232b360811b901a611346858761289f565b5360041c92801561135c5760001901919061123a565b634e487b7160e01b825260116004528882fd5b634e487b7160e01b835260326004528983fd5b634e487b7160e01b815260326004528790fd5b634e487b7160e01b815260326004528690fd5b346104325760c05180600319360112610b65576068546040516001600160a01b039091168152602090f35b50346104325760c05180600319360112610b655750604051816037546113f881612350565b80845290600190818116908115611493575060011461143a575b61143684611422818803826123ea565b6040519182916020835260208301906122c5565b0390f35b60378352602094507f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae5b8284106114805750505081611436936114229282010193611412565b8054858501870152928501928101611464565b61143696506114229450602092508593915060ff191682840152151560051b82010193611412565b50346104325760403660031901126104325760ff60406020926114dc612305565b60c08051600435905260658652518390206001600160a01b03909116825284522054604051911615158152f35b60203660031901126104325761151d6124e1565b3033036104325760ff8019606d54169115151617606d5560c051604051f35b34610432576020366003190112610432576001600160a01b0361155d6122ea565b1660c0515260336020526020604060c0512054604051908152f35b5034610432576040366003190112610432576001600160401b039060043590828211610432573660238301121561043257816004013591602460a0526115cc6115c0846124ca565b604051806080526123ea565b8260805152602060805101809360a051809160051b840101923684116104325701905b82821061199b5750505060a0513592831161043257366023840112156104325782600401359061161e826124ca565b9361162c60405195866123ea565b8285526020850191829360a051809160051b840101923684116104325701925b82841061197b57505050503033036104325760805151835180820361195c5750506080515160c0515b8181106117515750506067546001600160a01b039081169290833b15610432576040949291945194859363b9d3970560e01b855260648501306004870152606060a0518701526080515180915260848601929060c0515b81811061173857505050602090600319868403016044870152519182815201929160c051905b8282106117195760c05186908180880381838c5af1801561042557610cab5760c051604051f35b83518116855287955060209485019490930192600191909101906116f2565b82518552899750602094850194909201916001016116cc565b61177b6001600160a01b036117668388612b08565b511661177483608051612b08565b5190612b1c565b6067546001600160a01b03908116906117948388612b08565b51169060018060a01b0360685416604051633b188ab560e01b81523060048201526101808160a05181855afa9081156104255760c0519161193b575b5060c060018060a01b0391015116906117eb85608051612b08565b51906101806040518092633b188ab560e01b82523060048301528160a051915afa9081156104255760c0519161191a575b5060e001516001600160a01b03908116929060209061183b888d612b08565b51166040519485916317aa5fb760e11b835260048301528160a051915afa9283156104255760c051936118de575b50833b156104325760405194637c28875f60e01b865230600487015260a051860152604485015260c051606485015242608485015260a4840152151560c48301528160e48160c05180945af18015610425576118c9575b50600101611675565b6118d2906123bc565b60c05180156118c05780fd5b9092506020813d602011611912575b816118fa602093836123ea565b810103126104325761190b90612a36565b9138611869565b3d91506118ed565b61193591506101803d6101801161041e5761040f81836123ea565b3861181c565b61195691506101803d6101801161041e5761040f81836123ea565b386117d0565b6044925060405191631f4bb7c160e31b8352600483015260a051820152fd5b83356001600160a01b0381168103610b685781526020938401930161164c565b81358152602091820191016115ef565b3461043257604036600319011261043257600435602435303303610432578115611aab578015611a4d57612710808311611a90578111611a4d57606b829055606c8190556067546001600160a01b031690813b156104325760405192630dff04f760e31b8452306004850152602484015260448301528160648160c05180945af1801561042557611a3e5760c051604051f35b611a47906123bc565b8061022e565b604051631aac77f760e31b81529081906112e29060048301919060408352600a60408401526917dd1a1c995cda1bdb1960b21b6060840152602060808401930152565b604051631aac77f760e31b8152806112e28560048301612bae565b604051631aac77f760e31b8152806112e28460048301612bae565b346104325760c05180600319360112610b6557604051606954611ae881612350565b808352600191808316908115611bd25750600114611b92575b611b3b83611b11818703826123ea565b611b1961240d565b606b5490606c54611b49606d54926040519687966101008089528801906122c5565b9086820360208801526122c5565b6040850193909352606084015260ff81811615156080850152600882901c8116151560a0850152601082901c16151560c084015260181c6001600160a01b031660e08301520390f35b909250606960c0515260c051906020938483205b828410611bbf57505050810190910190611b1181611b01565b8054858501870152928501928101611ba6565b611b3b9550611b1193506020915091849260ff191682840152151560051b8201019350611b01565b346104325760c05180600319360112610b6557604051611c198161238a565b6060815260209060608282015260c051604082015260c051606082015260c051608082015260c05160a082015260c05160c082015260e060c051910152604051611c628161238a565b60405160c051606954611c7481612350565b80845290600190818116908115611dae5750600114611d6e575b611d2c858786611ca0818803826123ea565b8252611caa61240d565b90808301918252606b549160408401928352606c549060608501918252606d54916080860160ff84161515815260a087019060ff8560081c161515825260c088019260ff8660101c1615158452611d3f60e08a019560018060a01b03809860181c1687526040519b8c9b8a8d52518c6101009b8c9101526101208d01906122c5565b90518b8203601f190160408d01526122c5565b975160608a015251608089015251151560a088015251151560c087015251151560e08601525116908301520390f35b94929150606960c0515260c051948386205b828710611d9b575092949192505081018301611ca082611c8e565b8054848801860152958401958101611d80565b60ff1916878601525050151560051b820184019050611ca082611c8e565b602036600319011261043257611de06122ea565b30330361043257600080516020612dba833981519152908160c05152606560205260c05190604082209060018060a01b031680925260205260c05160ff60408220541615611e305760c051604051f35b829052606560205260c0518160408220915260205260c0519160408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d3393604051a480808061022e565b3461043257604036600319011261043257610fa5611ea36122ea565b3360c05152603460205260c051604081209060018060a01b0383169052602052611ed5602435604060c0512054612560565b9033612583565b3461043257604036600319011261043257611ef5612305565b336001600160a01b03821603611f115761022e90600435612827565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b346104325760c05180600319360112610b6557602060405160128152f35b3461043257604036600319011261043257600435611fa8612305565b8160c051526065602052611fc46001604060c051200154612685565b8160c05152606560205260c05190604082209060018060a01b031680925260205260c05160ff60408220541615611e305760c051604051f35b346104325760203660031901126104325760043560c05152606560205260206001604060c051200154604051908152f35b346104325761203c3661231b565b9061204e60ff606d5460081c16612bd6565b60c080516001600160a01b0385169052603460209081528151604080822033909252915290512054926001840161208a575b610fa59350612c1b565b8284106120a6576120a183610fa595033383612583565b612080565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b346104325760c05180600319360112610b65576020603554604051908152f35b34610432576080366003190112610432576121246122ea565b5061212d612305565b506064356001600160401b038082116104325736602383011215610432578160040135908111610432573691016024011161043257604051630a85bd0160e11b8152602090f35b3461043257604036600319011261043257610fa56121906122ea565b6024359033612583565b346104325760c05180600319360112610b65576040516036546121bc81612350565b80835260019180831690811561222557506001146121e5575b61143683611422818703826123ea565b909250603660c0515260c051906020938483205b82841061221257505050810190910190611422816121d5565b80548585018701529285019281016121f9565b611436955061142293506020915091849260ff191682840152151560051b82010193506121d5565b905034610b6c576020366003190112610b6c5760043563ffffffff60e01b8116809103610b685760209250637965db0b60e01b8114908115612291575b5015158152f35b6301ffc9a760e01b1490503861228a565b60005b8381106122b55750506000910152565b81810151838201526020016122a5565b906020916122de815180928185528580860191016122a2565b601f01601f1916010190565b600435906001600160a01b038216820361230057565b600080fd5b602435906001600160a01b038216820361230057565b6060906003190112612300576001600160a01b0390600435828116810361230057916024359081168103612300579060443590565b90600182811c92168015612380575b602083101461236a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161235f565b61010081019081106001600160401b038211176123a657604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116123a657604052565b608081019081106001600160401b038211176123a657604052565b601f909101601f19168101906001600160401b038211908210176123a657604052565b60405190600082606a549161242183612350565b8083526001938085169081156124a95750600114612449575b50612447925003836123ea565b565b606a60009081527f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5194602093509091905b81831061249157505061244793508201013861243a565b8554888401850152948501948794509183019161247a565b905061244794506020925060ff191682840152151560051b8201013861243a565b6001600160401b0381116123a65760051b60200190565b60043590811515820361230057565b6001600160401b0381116123a657601f01601f191660200190565b929192612517826124f0565b9161252560405193846123ea565b829481845281830111612300578281602093846000960137010152565b9080601f830112156123005781602061255d9335910161250b565b90565b9190820180921161256d57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0390811691821561263457169182156125e45760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260348252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b60009080825260209060658252604092838120338252835260ff8482205416156126af5750505050565b6126b8336128c6565b918451906126c5826123cf565b6042825284820192606036853782511561281357603084538251906001918210156128135790607860218501536041915b8183116127a5575050506127755760486112e29386936127599361274a985198899376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a86015261128e815180928c6037890191016122a2565b010360288101875201856123ea565b5192839262461bcd60e51b8452600484015260248301906122c5565b60648486519062461bcd60e51b82528060048301526024820152600080516020612d7a8339815191526044820152fd5b909192600f811660108110156127ff576f181899199a1a9b1b9c1cb0b131b232b360811b901a6127d5858761289f565b5360041c9280156127eb576000190191906126f6565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b906000918083526065602052604083209160018060a01b03169182845260205260ff60408420541661285857505050565b8083526065602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b3393604051a4565b9081518110156128b0570160200190565b634e487b7160e01b600052603260045260246000fd5b60405190606082016001600160401b038111838210176123a657604052602a82526020820160403682378251156128b0576030905381516001908110156128b057607860218401536029905b8082116129545750506129225790565b606460405162461bcd60e51b81526020600482015260206024820152600080516020612d7a8339815191526044820152fd5b9091600f811660108110156129ad576f181899199a1a9b1b9c1cb0b131b232b360811b901a612983848661289f565b5360041c918015612998576000190190612912565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b156129c957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b51906001600160a01b038216820361230057565b5190811515820361230057565b80916101809283910312612300576040519182016001600160401b038111838210176123a657604052805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a0830152612aae60c08201612a22565b60c0830152612abf60e08201612a22565b60e08301526101008082015190830152610120612add818301612a36565b90830152610140612aef818301612a36565b90830152612b01610160809201612a36565b9082015290565b80518210156128b05760209160051b010190565b6001600160a01b0316908115612b6957600080516020612d9a833981519152602082612b4c600094603554612560565b6035558484526033825260408420818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b91906040835260076040840152665f71756f72756d60c81b6060840152602060808401930152565b15612bdd57565b60405162461bcd60e51b8152602060048201526016602482015275546f6b656e204e6f6e205472616e7366657261626c6560501b6044820152606490fd5b6001600160a01b03908116918215612d265716918215612cd55760008281526033602052604081205491808310612c815760408282600080516020612d9a83398151915295876020965260338652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fdfe537472696e67733a20686578206c656e67746820696e73756666696369656e74ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60dabe9ef7b41f3c1cc359b009558ac4700a6bef8c5a11b51767e4980ed66341a264697066735822122091807167c4f54dbc5df0cba854435f368b9a84d04f414973dda0a0849c4c183664736f6c63430008100033