[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "FailedCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "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": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFLATION_DECAY_DELTA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFLATION_DECAY_EPOCHS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFLATION_EPOCH_DURATION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFLATION_FINAL", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFLATION_INCEPTION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INFLATION_INITIAL", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INITIAL_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ONE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "value", "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": "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": [], "name": "genLayerStaking", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "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": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inflationEpoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "distribution", "type": "uint256[]" } ], "name": "initialMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialMintCalled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastInflationEpoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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": "address", "name": "_genLayerStaking", "type": "address" } ], "name": "setGenLayerStaking", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_timelockFactory", "type": "address" } ], "name": "setTimelockFactory", "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": "timelockFactory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "triggerInflation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgrade", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a0604052346105a2573060805260008051602061286183398151915254604081901c60ff1615906001600160401b0381168015908161059a575b6001149081610590575b159081610587575b50610576576001600160401b03198116600117600080516020612861833981519152558161054b575b5061007e610635565b60408051919082016001600160401b0381118382101761042d576040908152600d83526c23b2b72630bcb2b92a37b5b2b760991b60208401528051919082016001600160401b0381118382101761042d57604052600382526223a2a760e91b60208301526100ea610635565b6100f2610635565b82516001600160401b03811161042d5760008051602061280183398151915254600181811c91168015610541575b602082101461040d57601f81116104cf575b506020601f821160011461044e5781929394600092610443575b50508160011b916000199060031b1c191617600080516020612801833981519152555b81516001600160401b03811161042d5760008051602061282183398151915254600181811c91168015610423575b602082101461040d57601f811161039b575b50602092601f821160011461031c5792819293600092610311575b50508160011b916000199060031b1c191617600080516020612821833981519152555b6101f5610635565b6101fd610635565b33156102fb577f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008054336001600160a01b0319821681179092556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a361026d610635565b610276336105a7565b504260005561029f575b60405161219d90816106648239608051818181610e280152610ef70152f35b68ff0000000000000000196000805160206128618339815191525416600080516020612861833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1610280565b631e4fbdf760e01b600052600060045260246000fd5b0151905038806101ca565b601f19821693600080516020612821833981519152600052806000209160005b868110610383575083600195961061036a575b505050811b01600080516020612821833981519152556101ed565b015160001960f88460031b161c1916905538808061034f565b9192602060018192868501518155019401920161033c565b6000805160206128218339815191526000527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c81019160208410610403575b601f0160051c01905b8181106103f757506101af565b600081556001016103ea565b90915081906103e1565b634e487b7160e01b600052602260045260246000fd5b90607f169061019d565b634e487b7160e01b600052604160045260246000fd5b01519050388061014c565b601f19821690600080516020612801833981519152600052806000209160005b8181106104b75750958360019596971061049e575b505050811b016000805160206128018339815191525561016f565b015160001960f88460031b161c19169055388080610483565b9192602060018192868b01518155019401920161046e565b6000805160206128018339815191526000527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610537575b601f0160051c01905b81811061052b5750610132565b6000815560010161051e565b9091508190610515565b90607f1690610120565b6001600160481b03191668010000000000000001176000805160206128618339815191525538610075565b63f92ee8a960e01b60005260046000fd5b9050153861004c565b303b159150610044565b83915061003a565b600080fd5b6001600160a01b0381166000908152600080516020612841833981519152602052604090205460ff1661062f576001600160a01b0316600081815260008051602061284183398151915260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50600090565b60ff6000805160206128618339815191525460401c161561065257565b631afcd79f60e31b60005260046000fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146116ff5750806302c789c3146115c257806306fdde03146115005780630900f010146114c4578063095ea7b31461144357806318160ddd146114185780631a4c1845146113f65780631a7ea9fc146113d8578063218268031461139057806323b872dd146112ad578063248a9ca31461128f578063282c51f3146112665780632f2ff15d146112355780632ff2e9dc1461120e578063313ce567146111f257806336568abe146111ac57806340c10f191461113a57806342966c68146110235780634971ec02146110005780634f1ef28614610e7f57806352d1902d14610e1557806355338d1e14610de85780635c60da1b14610db2578063601846df14610d8957806369d8f06514610d6b57806370a0823114610d24578063715018a614610cba5780637492100f14610c985780638119e57c14610c7a5780638129fc1c146107db5780638da5cb5b146107a557806391d148541461074b578063920d2639146106f757806395d89b4114610604578063a217fddf146105e8578063a9059cbb146105b7578063ad3cb1cc14610574578063bb3d33b714610551578063bedaeace14610534578063c0a604ad14610511578063c2ee3a08146104ee578063c6fe12ea146102f1578063d5391393146102c8578063d547741f14610292578063dd62ed3e146102495763f2fde38b1461021957600080fd5b346102445760203660031901126102445761024261023561179b565b61023d611a22565b611922565b005b600080fd5b346102445760403660031901126102445761026261179b565b61027361026d6117b1565b916118ae565b9060018060a01b03166000526020526020604060002054604051908152f35b34610244576040366003190112610244576102426004356102b16117b1565b906102c36102be8261188d565b611e2e565b611e78565b346102445760003660031901126102445760206040516000805160206120e88339815191528152f35b34610244576040366003190112610244576004356001600160401b03811161024457610321903690600401611803565b6024356001600160401b03811161024457610340903690600401611803565b929061034a611a22565b60ff6002541661049d57821561045e5791906000926000925b8084106103c7576127108503610382576002805460ff19166001179055005b60405162461bcd60e51b815260206004820152601f60248201527f546f74616c20646973747269627574696f6e206d7573742062652031303025006044820152606490fd5b909192936103d68583866118fc565b356001600160a01b0381168103610244576103f28688866118fc565b3591826b0d92289838d21a996800000002926b0d92289838d21a99680000008404036104485761042c61043e926127106001950490611998565b6104378789876118fc565b3590611846565b9401929190610363565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b81526020600482015260176024820152764163636f756e747320617272617920697320656d70747960481b6044820152606490fd5b60405162461bcd60e51b8152602060048201526024808201527f496e697469616c206d696e742068617320616c7265616479206265656e2063616044820152631b1b195960e21b6064820152608490fd5b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457600036600319011261024457602061052c6118e7565b604051908152f35b346102445760003660031901126102445760206040516105b48152f35b3461024457600036600319011261024457602060ff600254166040519015158152f35b34610244576000366003190112610244576105b3604080519061059781836117c7565b60058252640352e302e360dc1b60208301525191829182611752565b0390f35b34610244576040366003190112610244576105dd6105d361179b565b6024359033611d7d565b602060405160018152f35b3461024457600036600319011261024457602060405160008152f35b346102445760003660031901126102445760405160006000805160206120288339815191525461063381611853565b80845290600181169081156106d35750600114610667575b6105b38361065b818503826117c7565b60405191829182611752565b60008051602061202883398151915260009081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b8082106106b95750909150810160200161065b61064b565b9192600181602092548385880101520191019092916106a1565b60ff191660208086019190915291151560051b8401909101915061065b905061064b565b346102445760203660031901126102445761024261071361179b565b61071b611a22565b60028054610100600160a81b031916600883901b610100600160a81b031617905561074581611b3a565b50611bc6565b34610244576040366003190112610244576107646117b1565b60043560005260008051602061212883398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461024457600036600319011261024457600080516020612048833981519152546040516001600160a01b039091168152602090f35b34610244576000366003190112610244576000805160206121488339815191525460ff8160401c1615906001600160401b03811680159081610c72575b6001149081610c68575b159081610c5f575b50610c4e5767ffffffffffffffff1981166001176000805160206121488339815191525581610c21575b5061085d611f18565b60409081519161086d81846117c7565b600d83526c23b2b72630bcb2b92a37b5b2b760991b602084015280519161089482846117c7565b600383526223a2a760e91b60208401526108ac611f18565b6108b4611f18565b83516001600160401b038111610b0d576108dc600080516020611fe883398151915254611853565b601f8111610baf575b50602094601f8211600114610b2e57948192939495600092610b23575b50508160011b916000199060031b1c191617600080516020611fe8833981519152555b82516001600160401b038111610b0d5761094d60008051602061202883398151915254611853565b601f8111610a9b575b506020601f8211600114610a1a5781929394600092610a0f575b50508160011b916000199060031b1c191617600080516020612028833981519152555b61099b611f18565b6109a3611f18565b6109ac33611922565b6109b4611f18565b6109bd33611c4c565b50426000556109c857005b600080516020612148833981519152805460ff60401b1916905551600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b015190508480610970565b601f19821690600080516020612028833981519152600052806000209160005b818110610a8357509583600195969710610a6a575b505050811b0160008051602061202883398151915255610993565b015160001960f88460031b161c19169055848080610a4f565b9192602060018192868b015181550194019201610a3a565b6000805160206120288339815191526000527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c81019160208410610b03575b601f0160051c01905b818110610af75750610956565b60008155600101610aea565b9091508190610ae1565b634e487b7160e01b600052604160045260246000fd5b015190508580610902565b601f19821695600080516020611fe8833981519152600052806000209160005b888110610b9757508360019596979810610b7e575b505050811b01600080516020611fe883398151915255610925565b015160001960f88460031b161c19169055858080610b63565b91926020600181928685015181550194019201610b4e565b600080516020611fe88339815191526000527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610c17575b601f0160051c01905b818110610c0b57506108e5565b60008155600101610bfe565b9091508190610bf5565b68ffffffffffffffffff191668010000000000000001176000805160206121488339815191525581610854565b63f92ee8a960e01b60005260046000fd5b9050158361082a565b303b159150610822565b839150610818565b34610244576000366003190112610244576020604051620151808152f35b34610244576000366003190112610244576020604051668e1bc9bf0400008152f35b3461024457600036600319011261024457610cd3611a22565b60008051602061204883398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610244576020366003190112610244576001600160a01b03610d4561179b565b166000526000805160206120088339815191526020526020604060002054604051908152f35b34610244576000366003190112610244576020600154604051908152f35b34610244576000366003190112610244576003546040516001600160a01b039091168152602090f35b34610244576000366003190112610244576000805160206120a8833981519152546040516001600160a01b039091168152602090f35b346102445760003660031901126102445760025460405160089190911c6001600160a01b03168152602090f35b34610244576000366003190112610244577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610e6e5760206040516000805160206120a88339815191528152f35b63703e46dd60e11b60005260046000fd5b604036600319011261024457610e9361179b565b602435906001600160401b0382116102445736602383011215610244578160040135610ebe816117e8565b92610ecc60405194856117c7565b8184523660248383010111610244578160009260246020930183870137840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610fdd575b50610e6e57610f2f611a22565b6040516352d1902d60e01b81526001600160a01b038216929091602083600481875afa60009381610fa9575b50610f755783634c9c8ce360e01b60005260045260246000fd5b6000805160206120a88339815191528303610f94576102429250611a58565b82632a87526960e21b60005260045260246000fd5b9093506020813d602011610fd5575b81610fc5602093836117c7565b8101031261024457519285610f5b565b3d9150610fb8565b6000805160206120a8833981519152546001600160a01b03161415905083610f22565b346102445760003660031901126102445760206040516703782dace9d900008152f35b346102445760203660031901126102445733600090815260008051602061208883398151915260205260409020546004359060ff16156111135733156110fd5760003381526000805160206120088339815191526020526040812054918083106110e4578082933384526000805160206120088339815191526020520360408320558060008051602061206883398151915254036000805160206120688339815191525560405190815260008051602061210883398151915260203392a380f35b60649263391434e360e21b835233600452602452604452fd5b634b637e8f60e11b600052600060045260246000fd5b63e2517d3f60e01b60005233600452600080516020611fc883398151915260245260446000fd5b346102445760403660031901126102445761115361179b565b3360009081526000805160206120c8833981519152602052604090205460ff1615611185576102429060243590611998565b63e2517d3f60e01b600052336004526000805160206120e883398151915260245260446000fd5b34610244576040366003190112610244576111c56117b1565b336001600160a01b038216036111e15761024290600435611e78565b63334bd91960e11b60005260046000fd5b3461024457600036600319011261024457602060405160128152f35b346102445760003660031901126102445760206040516b0d92289838d21a99680000008152f35b34610244576040366003190112610244576102426004356112546117b1565b906112616102be8261188d565b611ce6565b34610244576000366003190112610244576020604051600080516020611fc88339815191528152f35b3461024457602036600319011261024457602061052c60043561188d565b34610244576060366003190112610244576112c661179b565b6112ce6117b1565b604435906112db836118ae565b33600090815260209190915260409020549260018401611300575b6105dd9350611d7d565b828410611373576001600160a01b0381161561135d573315611347576105dd93611329826118ae565b60018060a01b033316600052602052836040600020910390556112f6565b634a1406b160e11b600052600060045260246000fd5b63e602df0560e01b600052600060045260246000fd5b8284637dc7a0d960e11b6000523360045260245260445260646000fd5b34610244576020366003190112610244576102426113ac61179b565b6113b4611a22565b600380546001600160a01b0319166001600160a01b03831617905561074581611b3a565b34610244576000366003190112610244576020600054604051908152f35b346102445760003660031901126102445760206582d156d2e854604051908152f35b3461024457600036600319011261024457602060008051602061206883398151915254604051908152f35b346102445760403660031901126102445761145c61179b565b60243590331561135d576001600160a01b03169081156113475761147f336118ae565b82600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610244576020366003190112610244576102426114e061179b565b6114e8611a22565b604051906114f76020836117c7565b60008252611a58565b34610244576000366003190112610244576040516000600080516020611fe88339815191525461152f81611853565b80845290600181169081156106d35750600114611556576105b38361065b818503826117c7565b600080516020611fe883398151915260009081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106115a85750909150810160200161065b61064b565b919260018160209254838588010152019101909291611590565b34610244576000366003190112610244576001546115de6118e7565b8082146116af5790600060008051602061206883398151915254925b808310611611575061160c9030611998565b600155005b9160001981146104485760010192836105b41160001461168c576582d156d2e8548481029081048503610448576703782dace9d9000003906703782dace9d9000082116104485761167e670de0b6b3a764000061167661016d611684955b0484611833565b048092611846565b92611846565b9092916115fa565b6116849061167e670de0b6b3a764000061167661016d668e1bc9bf04000061166f565b60405162461bcd60e51b815260206004820152602260248201527f496e666c6174696f6e206e6f7420726561647920746f206265207265616c697a604482015261195960f21b6064820152608490fd5b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611741575b5015158152f35b6301ffc9a760e01b1490508361173a565b91909160208152825180602083015260005b818110611785575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611764565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b90601f801991011681019081106001600160401b03821117610b0d57604052565b6001600160401b038111610b0d57601f01601f191660200190565b9181601f84011215610244578235916001600160401b038311610244576020808501948460051b01011161024457565b8181029291811591840414171561044857565b9190820180921161044857565b90600182811c92168015611883575b602083101461186d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611862565b60005260008051602061212883398151915260205260016040600020015490565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b60005442034281116104485762015180900490565b919081101561190c5760051b0190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b031680156119825760008051602061204883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b6001600160a01b0316908115611a0c576000805160206121088339815191526020826119d560009460008051602061206883398151915254611846565b60008051602061206883398151915255848452600080516020612008833981519152825260408420818154019055604051908152a3565b63ec442f0560e01b600052600060045260246000fd5b600080516020612048833981519152546001600160a01b03163303611a4357565b63118cdaa760e01b6000523360045260246000fd5b803b15611b19576000805160206120a883398151915280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2815115611aff57600080836020611af495519101845af43d15611af7573d91611ad7836117e8565b92611ae560405194856117c7565b83523d6000602085013e611f46565b50565b606091611f46565b505034611b0857565b63b398979f60e01b60005260046000fd5b634c9c8ce360e01b60009081526001600160a01b0391909116600452602490fd5b6001600160a01b03811660009081526000805160206120c8833981519152602052604090205460ff16611bc0576001600160a01b031660008181526000805160206120c883398151915260205260408120805460ff191660011790553391906000805160206120e883398151915290600080516020611fa88339815191529080a4600190565b50600090565b6001600160a01b0381166000908152600080516020612088833981519152602052604090205460ff16611bc0576001600160a01b0316600081815260008051602061208883398151915260205260408120805460ff19166001179055339190600080516020611fc883398151915290600080516020611fa88339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611bc0576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff19166001179055339190600080516020611fa88339815191528180a4600190565b6000818152600080516020612128833981519152602090815260408083206001600160a01b038616845290915290205460ff16611d76576000818152600080516020612128833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff1916600117905533929190600080516020611fa88339815191529080a4600190565b5050600090565b6001600160a01b03169081156110fd576001600160a01b0316918215611a0c5760008281526000805160206120088339815191526020526040812054828110611e1457916040828260008051602061210883398151915295876020965260008051602061200883398151915286520382822055868152600080516020612008833981519152845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b60008181526000805160206121288339815191526020908152604080832033845290915290205460ff1615611e605750565b63e2517d3f60e01b6000523360045260245260446000fd5b6000818152600080516020612128833981519152602090815260408083206001600160a01b038616845290915290205460ff1615611d76576000818152600080516020612128833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60ff6000805160206121488339815191525460401c1615611f3557565b631afcd79f60e31b60005260046000fd5b90611f6c5750805115611f5b57805190602001fd5b63d6bda27560e01b60005260046000fd5b81511580611f9e575b611f7d575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15611f7556fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84852c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02fcf1b2032b1187d9f2a29150c4a608b3b6f0bdf8dd007801f86a276af50cad92360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc549fe2656c81d2947b3b913f0a53b9ea86c71e049f3a1b8aa23c09a8a05cb8d49f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212207b84eb9b04131434b823db8ff9323f0837d2ff4ead943fbb78e07a0bd866b24764736f6c634300081c003352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04b7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97df0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00