[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_creator_address", "type": "address" }, { "internalType": "uint256", "name": "_initial_mint_amt", "type": "uint256" }, { "internalType": "address", "name": "_custodian_address", "type": "address" }, { "internalType": "address[]", "name": "_old_tokens", "type": "address[]" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "uint256", "name": "global_collateral_ratio", "type": "uint256" } ], "name": "CollateralRatioRefreshed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "custodian_address", "type": "address" } ], "name": "CustodianSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "new_mint_cap", "type": "uint256" } ], "name": "MintCapSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pool_address", "type": "address" } ], "name": "MinterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pool_address", "type": "address" } ], "name": "MinterRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "old_token_address", "type": "address" } ], "name": "OldTokenAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "old_token_address", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "state", "type": "bool" } ], "name": "OldTokenToggled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerNominated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "new_timelock", "type": "address" } ], "name": "TimelockSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenBurned", "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": "amount", "type": "uint256" } ], "name": "TokenMinted", "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": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter_address", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "old_token_address", "type": "address" } ], "name": "addOldToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allOldTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "custodian_address", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "old_token_address", "type": "address" }, { "internalType": "uint256", "name": "token_amount", "type": "uint256" } ], "name": "exchangeCanonicalForOld", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "old_token_address", "type": "address" }, { "internalType": "uint256", "name": "token_amount", "type": "uint256" } ], "name": "exchangeOldForCanonical", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "exchangesPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "execute", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "nonpayable", "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": [], "name": "mint_cap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "minter_burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "m_address", "type": "address" }, { "internalType": "uint256", "name": "m_amount", "type": "uint256" } ], "name": "minter_mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minters", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "minters_array", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "nominateNewOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "nominatedOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "old_tokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "old_tokens_array", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter_address", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_custodian_address", "type": "address" } ], "name": "setCustodian", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mint_cap", "type": "uint256" } ], "name": "setMintCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "new_timelock", "type": "address" } ], "name": "setTimelock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "timelock_address", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleExchanges", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "old_token_address", "type": "address" } ], "name": "toggleOldToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "old_token_address", "type": "address" }, { "internalType": "uint256", "name": "old_token_amount", "type": "uint256" } ], "name": "withdrawOldTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200423d3803806200423d8339810160408190526200005a91620005dd565b858585858585838680604051806040016040528060018152602001603160f81b815250898981600390805190602001906200009792919062000485565b508051620000ad90600490602084019062000485565b50506005805460ff1916601217905550815160208084019190912082518383012060c082815260e08290524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81890181905281830188905260608201879052608082019490945230818401528151808203909301835290930190925281519190940120919290916080526101005250505050506001600160a01b038116620001a65760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600780546001600160a01b0319166001600160a01b038316908117909155604080516000815260208101929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1506001600955600b80546001600160a01b0319166001600160a01b03841617905560005b8151811015620002ee576001600e6000848481518110620002485762000248620007d7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600d8282815181106200029e576200029e620007d7565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905580620002e581620007a3565b91505062000223565b5082600c819055506200030d84846200031f60201b620024311760201c565b50505050505050505050505062000803565b6001600160a01b038216620003775760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200019d565b62000393816002546200041b60201b620025491790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620003c6918390620025496200041b821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000806200042a83856200074b565b9050838110156200047e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200019d565b9392505050565b828054620004939062000766565b90600052602060002090601f016020900481019282620004b7576000855562000502565b82601f10620004d257805160ff191683800117855562000502565b8280016001018555821562000502579182015b8281111562000502578251825591602001919060010190620004e5565b506200051092915062000514565b5090565b5b8082111562000510576000815560010162000515565b80516001600160a01b03811681146200054357600080fd5b919050565b600082601f8301126200055a57600080fd5b81516001600160401b03811115620005765762000576620007ed565b60206200058c601f8301601f1916820162000718565b8281528582848701011115620005a157600080fd5b60005b83811015620005c1578581018301518282018401528201620005a4565b83811115620005d35760008385840101525b5095945050505050565b60008060008060008060c08789031215620005f757600080fd5b86516001600160401b03808211156200060f57600080fd5b6200061d8a838b0162000548565b97506020915081890151818111156200063557600080fd5b620006438b828c0162000548565b9750506200065460408a016200052b565b9550606089015194506200066b60808a016200052b565b935060a0890151818111156200068057600080fd5b8901601f81018b136200069257600080fd5b805182811115620006a757620006a7620007ed565b8060051b9250620006ba84840162000718565b8181528481019083860185850187018f1015620006d657600080fd5b600095505b838610156200070457620006ef816200052b565b835260019590950194918601918601620006db565b508096505050505050509295509295509295565b604051601f8201601f191681016001600160401b0381118282101715620007435762000743620007ed565b604052919050565b60008219821115620007615762000761620007c1565b500190565b600181811c908216806200077b57607f821691505b602082108114156200079d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415620007ba57620007ba620007c1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160e05161010051610120516139e36200085a600039600081816103d301526120cd01526000612d2f01526000612d7e01526000612d5901526000612cdd01526000612d0601526139e36000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c806377eb38051161019c578063a457c2d7116100ee578063d73ced0411610097578063ec8fb8ef11610071578063ec8fb8ef146106e2578063f46eccc4146106f5578063f537fe0e1461071857600080fd5b8063d73ced0414610669578063dc6663c71461067c578063dd62ed3e1461069c57600080fd5b8063b6dd1b89116100c8578063b6dd1b8914610630578063bdacb30314610643578063d505accf1461065657600080fd5b8063a457c2d7146105e9578063a9059cbb146105fc578063b61d27f61461060f57600080fd5b80638980f11f116101505780639006a50f1161012a5780639006a50f146105bb57806395d89b41146105ce578063983b2d56146105d657600080fd5b80638980f11f1461057f5780638da5cb5b146105925780638f8e1ed2146105b257600080fd5b806379cc67901161018157806379cc6790146105395780637ce6112b1461054c5780637ecebe001461056c57600080fd5b806377eb38051461051e57806379ba50971461053157600080fd5b80633644e5151161025557806353a47bb7116102095780636a257ebc116101e35780636a257ebc146104cd57806370a08231146104e05780637601f0691461051657600080fd5b806353a47bb714610460578063600d15fe146104a5578063631e625c146104b857600080fd5b8063403f37311161023a578063403f3731146104275780634070a0c91461043a57806342966c681461044d57600080fd5b80633644e5151461040c578063395093511461041457600080fd5b806323b872dd116102b75780633092afd5116102915780633092afd5146103be57806330adf81f146103d1578063313ce567146103f757600080fd5b806323b872dd14610375578063272fe68d14610388578063280cf3ed146103ab57600080fd5b8063095ea7b3116102e8578063095ea7b31461033b5780631627540c1461034e57806318160ddd1461036357600080fd5b806305a7fc611461030457806306fdde0314610326575b600080fd5b6011546103119060ff1681565b60405190151581526020015b60405180910390f35b61032e61072b565b60405161031d919061376e565b61031161034936600461358f565b6107bd565b61036161035c366004613492565b6107d3565b005b6002545b60405190815260200161031d565b6103116103833660046134e0565b6108f9565b610311610396366004613492565b600e6020526000908152604090205460ff1681565b6103616103b936600461358f565b61096f565b6103616103cc366004613492565b610ad7565b7f0000000000000000000000000000000000000000000000000000000000000000610367565b60055460405160ff909116815260200161031d565b610367610dee565b61031161042236600461358f565b610dfd565b610361610435366004613492565b610e40565b610361610448366004613662565b610fd3565b61036161045b366004613662565b6110ab565b6008546104809073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031d565b6103616104b3366004613492565b6110b8565b6104c06112fe565b60405161031d91906136f1565b6103616104db36600461358f565b61136c565b6103676104ee366004613492565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610361611441565b61048061052c366004613662565b611538565b61036161156f565b61036161054736600461358f565b6116ba565b600b546104809073ffffffffffffffffffffffffffffffffffffffff1681565b61036761057a366004613492565b611701565b61036161058d36600461358f565b61172e565b6007546104809073ffffffffffffffffffffffffffffffffffffffff1681565b610367600c5481565b6103616105c936600461358f565b6117e0565b61032e611970565b6103616105e4366004613492565b61197f565b6103116105f736600461358f565b611c08565b61031161060a36600461358f565b611c64565b61062261061d3660046135b9565b611c71565b60405161031d92919061374b565b61036161063e366004613492565b611d99565b610361610651366004613492565b611ecc565b61036161066436600461351c565b61205f565b610480610677366004613662565b61221e565b600a546104809073ffffffffffffffffffffffffffffffffffffffff1681565b6103676106aa3660046134ad565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6103616106f036600461358f565b61222e565b610311610703366004613492565b60106020526000908152604090205460ff1681565b610361610726366004613662565b61237c565b60606003805461073a906137e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610766906137e0565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b60006107ca3384846125c9565b50600192915050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906020015b60405180910390a150565b600061090684848461277d565b61096584336109608560405180606001604052806028815260200161393d6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020908152604080832033845290915290205491906129a7565b6125c9565b5060019392505050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314806109ac575060075473ffffffffffffffffffffffffffffffffffffffff1633145b806109c657503360009081526010602052604090205460ff165b610a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f74206d696e7465722c206f776e65722c206f7220746c636b0000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902054829060ff16610abd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c696420746f6b656e000000000000000000000000000000000000006044820152606401610876565b610ac733836129fb565b610ad2833384612b69565b505050565b600a5473ffffffffffffffffffffffffffffffffffffffff16331480610b14575060075473ffffffffffffffffffffffffffffffffffffffff1633145b610b7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff8116610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5a65726f206164647265737320646574656374656400000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff161515600114610c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f41646472657373206e6f6e6578697374616e74000000000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260106020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b600f54811015610da7578173ffffffffffffffffffffffffffffffffffffffff16600f8281548110610d0b57610d0b6138c5565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610d95576000600f8281548110610d4857610d486138c5565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da7565b80610d9f8161382e565b915050610cd7565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692906020016108ee565b6000610df8612cd9565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107ca9185906109609086612549565b600a5473ffffffffffffffffffffffffffffffffffffffff16331480610e7d575060075473ffffffffffffffffffffffffffffffffffffffff1633145b610ee3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff8116610f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5a65726f206164647265737320646574656374656400000000000000000000006044820152606401610876565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fb88c20a211c5d7677ba2a26c317d8ae6b25aa492016dc8ceca2469761d063d80906020016108ee565b600a5473ffffffffffffffffffffffffffffffffffffffff16331480611010575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b600c8190556040518181527fcda03296b648d791f2cee5a5af4b32860d8a3d01fae4126b12b4081224003767906020016108ee565b6110b533826129fb565b50565b600a5473ffffffffffffffffffffffffffffffffffffffff163314806110f5575060075473ffffffffffffffffffffffffffffffffffffffff1633145b61115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b60005b600d5481101561122e578173ffffffffffffffffffffffffffffffffffffffff16600d8281548110611192576111926138c5565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561121c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f546f6b656e20616c72656164792070726573656e7400000000000000000000006044820152606401610876565b806112268161382e565b91505061115e565b5073ffffffffffffffffffffffffffffffffffffffff81166000818152600e602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600d8054918201815583527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517fdb1503ea88cc6fe9135220e60d3d93c4aee29d62a12b50f679b7089d2bf7b9889190a250565b6060600d8054806020026020016040519081016040528092919081815260200182805480156107b357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611338575050505050905090565b3360009081526010602052604090205460ff166113e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f742061206d696e74657200000000000000000000000000000000000000006044820152606401610876565b6113ef8282612dcc565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907fdf1b2b09e9800d31c599375056be9f9e4eb37f078102643600c4e149714efaad906020015b60405180910390a35050565b600a5473ffffffffffffffffffffffffffffffffffffffff1633148061147e575060075473ffffffffffffffffffffffffffffffffffffffff1633145b806114a05750600b5473ffffffffffffffffffffffffffffffffffffffff1633145b611506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4e6f74206f776e65722c20746c636b2c206f72206375737464000000000000006044820152606401610876565b601180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b600d818154811061154857600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60085473ffffffffffffffffffffffffffffffffffffffff163314611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e65727368697000000000000000000000006064820152608401610876565b6007546008546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160088054600780547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60006116ea82604051806060016040528060248152602001613965602491396116e386336106aa565b91906129a7565b90506116f78333836125c9565b610ad283836129fb565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600660205260408120545b92915050565b600a5473ffffffffffffffffffffffffffffffffffffffff1633148061176b575060075473ffffffffffffffffffffffffffffffffffffffff1633145b6117d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b6117dc823383612b69565b5050565b6002600954141561184d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610876565b600260095573ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902054829060ff166118e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c696420746f6b656e000000000000000000000000000000000000006044820152606401610876565b60115460ff1615611950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f45786368616e67657320706175736564000000000000000000000000000000006044820152606401610876565b61195c83333085612e55565b6119663383612dcc565b5050600160095550565b60606004805461073a906137e0565b600a5473ffffffffffffffffffffffffffffffffffffffff163314806119bc575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611a22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff8116611a9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5a65726f206164647265737320646574656374656400000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff1615611b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4164647265737320616c726561647920657869737473000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260106020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600f805491820181559093527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80290920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f691016108ee565b60006107ca3384610960856040518060600160405280602581526020016139896025913933600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906129a7565b60006107ca33848461277d565b600a5460009060609073ffffffffffffffffffffffffffffffffffffffff16331480611cb4575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b6000808773ffffffffffffffffffffffffffffffffffffffff16878787604051611d459291906136c5565b60006040518083038185875af1925050503d8060008114611d82576040519150601f19603f3d011682016040523d82523d6000602084013e611d87565b606091505b50909450925050505b94509492505050565b600a5473ffffffffffffffffffffffffffffffffffffffff16331480611dd6575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600e6020908152604091829020805460ff808216157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092168217909255925192161582527f7dd3502ded88239f62ef374c9ee79a44c9395e2d6905996ec33ea30638e40a2d91015b60405180910390a250565b600a5473ffffffffffffffffffffffffffffffffffffffff16331480611f09575060075473ffffffffffffffffffffffffffffffffffffffff1633145b611f6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff8116611fec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f5a65726f206164647265737320646574656374656400000000000000000000006044820152606401610876565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f7e7ee4175d63f671fac3401d5f401ed18d1f48a586e756f404d5696fc77a7058906020016108ee565b834211156120c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610876565b60007f00000000000000000000000000000000000000000000000000000000000000008888886120f88c612ff3565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061216082613028565b9050600061217082878787613091565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612207576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610876565b6122128a8a8a6125c9565b50505050505050505050565b600f818154811061154857600080fd5b600a5473ffffffffffffffffffffffffffffffffffffffff1633148061226b575060075473ffffffffffffffffffffffffffffffffffffffff1633145b8061228557503360009081526010602052604090205460ff165b6122eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f74206d696e7465722c206f776e65722c206f7220746c636b0000000000006044820152606401610876565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902054829060ff16610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c696420746f6b656e000000000000000000000000000000000000006044820152606401610876565b3360009081526010602052604090205460ff166123f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f742061206d696e74657200000000000000000000000000000000000000006044820152606401610876565b6123ff33826129fb565b60405181815233907f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa290602001611ec1565b73ffffffffffffffffffffffffffffffffffffffff82166124ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610876565b6002546124bb9082612549565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546124ee9082612549565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611435565b6000806125568385613781565b9050838110156125c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610876565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff831661266b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610876565b73ffffffffffffffffffffffffffffffffffffffff821661270e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610876565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610876565b73ffffffffffffffffffffffffffffffffffffffff82166128c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610876565b61290d816040518060600160405280602681526020016139176026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906129a7565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546129499082612549565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612770565b600081848411156129e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610876919061376e565b5060006129f28486613799565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610876565b612ae8816040518060600160405280602281526020016138f56022913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906129a7565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254612b1b90826130b9565b60025560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611435565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612c0091906136d5565b6000604051808303816000865af19150503d8060008114612c3d576040519150601f19603f3d011682016040523d82523d6000602084013e612c42565b606091505b5091509150818015612c6c575080511580612c6c575080806020019051810190612c6c9190613640565b612cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610876565b5050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415612d2857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b600c5481612dd960025490565b612de39190613781565b1115612e4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d696e74206361700000000000000000000000000000000000000000000000006044820152606401610876565b6117dc8282612431565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691612ef491906136d5565b6000604051808303816000865af19150503d8060008114612f31576040519150601f19603f3d011682016040523d82523d6000602084013e612f36565b606091505b5091509150818015612f60575080511580612f60575080806020019051810190612f609190613640565b612feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401610876565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090208054600181018255905b50919050565b6000611728613035612cd9565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006130a2878787876130fb565b915091506130af81613210565b5095945050505050565b60006125c283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129a7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156131325750600090506003611d90565b8460ff16601b1415801561314a57508460ff16601c14155b1561315b5750600090506004611d90565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156131af573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661320357600060019250925050611d90565b9660009650945050505050565b600081600481111561322457613224613896565b141561322d5750565b600181600481111561324157613241613896565b14156132a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610876565b60028160048111156132bd576132bd613896565b1415613325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610876565b600381600481111561333957613339613896565b14156133c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610876565b60048160048111156133db576133db613896565b14156110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610876565b803573ffffffffffffffffffffffffffffffffffffffff8116811461348d57600080fd5b919050565b6000602082840312156134a457600080fd5b6125c282613469565b600080604083850312156134c057600080fd5b6134c983613469565b91506134d760208401613469565b90509250929050565b6000806000606084860312156134f557600080fd5b6134fe84613469565b925061350c60208501613469565b9150604084013590509250925092565b600080600080600080600060e0888a03121561353757600080fd5b61354088613469565b965061354e60208901613469565b95506040880135945060608801359350608088013560ff8116811461357257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156135a257600080fd5b6135ab83613469565b946020939093013593505050565b600080600080606085870312156135cf57600080fd5b6135d885613469565b935060208501359250604085013567ffffffffffffffff808211156135fc57600080fd5b818701915087601f83011261361057600080fd5b81358181111561361f57600080fd5b88602082850101111561363157600080fd5b95989497505060200194505050565b60006020828403121561365257600080fd5b815180151581146125c257600080fd5b60006020828403121561367457600080fd5b5035919050565b600081518084526136938160208601602086016137b0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b600082516136e78184602087016137b0565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561373f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161370d565b50909695505050505050565b8215158152604060208201526000613766604083018461367b565b949350505050565b6020815260006125c2602083018461367b565b6000821982111561379457613794613867565b500190565b6000828210156137ab576137ab613867565b500390565b60005b838110156137cb5781810151838201526020016137b3565b838111156137da576000848401525b50505050565b600181811c908216806137f457607f821691505b60208210811415613022577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561386057613860613867565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a777571baad429e57584352a6249c0ac45ce559846bf2193d334b20277dde61364736f6c6343000806003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000004e3376018add04ebe4c46bf6f924ddec8c67aa7b00000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000036a87d1e3200225f881488e4aeedf25303febcae000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000044672617800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000446524158000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dc42728b0ea910349ed3c6e1c9dc06b5fb591f98