diff --git a/lib/abis/CarbonmarkCreditToken.json b/lib/abis/CarbonmarkCreditToken.json index e4053717..a911bbbf 100644 --- a/lib/abis/CarbonmarkCreditToken.json +++ b/lib/abis/CarbonmarkCreditToken.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cancel","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"parentFactory","type":"address","internalType":"address"},{"name":"creditId","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"retire","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"beneficiary","type":"address","internalType":"address"},{"name":"beneficiaryName","type":"string","internalType":"string"},{"name":"message","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"retireFrom","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"beneficiary","type":"address","internalType":"address"},{"name":"beneficiaryName","type":"string","internalType":"string"},{"name":"message","type":"string","internalType":"string"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Retired","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"beneficiaryName","type":"string","indexed":false,"internalType":"string"},{"name":"message","type":"string","indexed":false,"internalType":"string"},{"name":"creditId","type":"string","indexed":true,"internalType":"string"},{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MaxLength","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroAmount","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6113fa806100d65f395ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063715018a6116100a9578063a9059cbb1161006e578063a9059cbb1461029f578063dd62ed3e146102b2578063e4f98d2b146102c5578063f2fde38b146102d8578063f399e22e146102eb575f5ffd5b8063715018a61461023a57806380ff7933146102425780638456cb59146102555780638da5cb5b1461025d57806395d89b4114610297575f5ffd5b80633f4ba83a116100ef5780633f4ba83a146101bf57806340c10f19146101c957806357d682c4146101dc5780635c975abb146101ef57806370a0823114610206575f5ffd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461019d578063313ce567146101b0575b5f5ffd5b6101336102fe565b6040516101409190610ed1565b60405180910390f35b61015c610157366004610f21565b6103be565b6040519015158152602001610140565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610140565b61015c6101ab366004610f49565b6103d7565b60405160128152602001610140565b6101c76103f3565b005b6101c76101d7366004610f21565b610405565b6101c76101ea366004610f83565b610423565b5f5160206113a55f395f51905f525460ff1661015c565b61018f610214366004610fad565b6001600160a01b03165f9081525f5160206113855f395f51905f52602052604090205490565b6101c7610435565b6101c761025036600461100b565b610446565b6101c761045d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610140565b61013361046d565b61015c6102ad366004610f21565b6104ab565b61018f6102c0366004611094565b6104c5565b6101c76102d33660046110bc565b61050e565b6101c76102e6366004610fad565b610531565b6101c76102f9366004611155565b610573565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206113855f395f51905f529161033c906111a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906111a4565b80156103b35780601f1061038a576101008083540402835291602001916103b3565b820191905f5260205f20905b81548152906001019060200180831161039657829003601f168201915b505050505091505090565b5f336103cb8185856106fc565b60019150505b92915050565b5f6103e061070e565b6103eb84848461073e565b949350505050565b6103fb610761565b6104036107bc565b565b61040d610761565b61041561070e565b61041f828261081b565b5050565b61042b610761565b61041f818361084f565b61043d610761565b6104035f610883565b610455868686868686336108f3565b505050505050565b610465610761565b610403610a13565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206113855f395f51905f529161033c906111a4565b5f6104b461070e565b6104be8383610a5b565b9392505050565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b610519813389610a68565b610528878787878787876108f3565b50505050505050565b610539610761565b6001600160a01b03811661056757604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61057081610883565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156105b85750825b90505f8267ffffffffffffffff1660011480156105d45750303b155b9050811580156105e2575080155b156106005760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561062a57845460ff60401b1916600160401b1785555b61069b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a90819084018382808284375f92019190915250610acb92505050565b6106a3610add565b6106ac88610aed565b83156106f257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6107098383836001610afe565b505050565b5f5160206113a55f395f51905f525460ff16156104035760405163d93c066560e01b815260040160405180910390fd5b5f3361074b858285610a68565b610756858585610be2565b506001949350505050565b336107937f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104035760405163118cdaa760e01b815233600482015260240161055e565b6107c4610c3f565b5f5160206113a55f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6001600160a01b0382166108445760405163ec442f0560e01b81525f600482015260240161055e565b61041f5f8383610c6e565b6001600160a01b03821661087857604051634b637e8f60e11b81525f600482015260240161055e565b61041f825f83610c6e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6108fb61070e565b61090487610da7565b61090d86610dc7565b61094e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060409250610dee915050565b61099083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506104009250610dee915050565b61099a818861084f565b806001600160a01b03166109ac61046d565b6040516109b991906111dc565b6040518091039020876001600160a01b03167f128f87a3924b6e5b4a8b7262caf2476d5ad6d1b725bfbf0eaa0b71183e3b57f48a89898989604051610a0295949392919061121a565b60405180910390a450505050505050565b610a1b61070e565b5f5160206113a55f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336107fd565b5f336103cb818585610be2565b5f610a7384846104c5565b90505f198114610ac55781811015610ab757604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161055e565b610ac584848484035f610afe565b50505050565b610ad3610e10565b61041f8282610e59565b610ae5610e10565b610403610ea9565b610af5610e10565b61057081610ec9565b5f5160206113855f395f51905f526001600160a01b038516610b355760405163e602df0560e01b81525f600482015260240161055e565b6001600160a01b038416610b5e57604051634a1406b160e11b81525f600482015260240161055e565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610bdb57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610bd291815260200190565b60405180910390a35b5050505050565b6001600160a01b038316610c0b57604051634b637e8f60e11b81525f600482015260240161055e565b6001600160a01b038216610c345760405163ec442f0560e01b81525f600482015260240161055e565b610709838383610c6e565b5f5160206113a55f395f51905f525460ff1661040357604051638dfc202b60e01b815260040160405180910390fd5b5f5160206113855f395f51905f526001600160a01b038416610ca85781816002015f828254610c9d9190611252565b90915550610d189050565b6001600160a01b0384165f9081526020829052604090205482811015610cfa5760405163391434e360e21b81526001600160a01b0386166004820152602481018290526044810184905260640161055e565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610d36576002810180548390039055610d54565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9991815260200190565b60405180910390a350505050565b805f0361057057604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0381166105705760405163d92e233d60e01b815260040160405180910390fd5b808251111561041f57604051631dfb275f60e21b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661040357604051631afcd79f60e31b815260040160405180910390fd5b610e61610e10565b5f5160206113855f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610e9a84826112c9565b5060048101610ac583826112c9565b610eb1610e10565b5f5160206113a55f395f51905f52805460ff19169055565b610539610e10565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610f1c575f5ffd5b919050565b5f5f60408385031215610f32575f5ffd5b610f3b83610f06565b946020939093013593505050565b5f5f5f60608486031215610f5b575f5ffd5b610f6484610f06565b9250610f7260208501610f06565b929592945050506040919091013590565b5f5f60408385031215610f94575f5ffd5b82359150610fa460208401610f06565b90509250929050565b5f60208284031215610fbd575f5ffd5b6104be82610f06565b5f5f83601f840112610fd6575f5ffd5b50813567ffffffffffffffff811115610fed575f5ffd5b602083019150836020828501011115611004575f5ffd5b9250929050565b5f5f5f5f5f5f60808789031215611020575f5ffd5b8635955061103060208801610f06565b9450604087013567ffffffffffffffff81111561104b575f5ffd5b61105789828a01610fc6565b909550935050606087013567ffffffffffffffff811115611076575f5ffd5b61108289828a01610fc6565b979a9699509497509295939492505050565b5f5f604083850312156110a5575f5ffd5b6110ae83610f06565b9150610fa460208401610f06565b5f5f5f5f5f5f5f60a0888a0312156110d2575f5ffd5b873596506110e260208901610f06565b9550604088013567ffffffffffffffff8111156110fd575f5ffd5b6111098a828b01610fc6565b909650945050606088013567ffffffffffffffff811115611128575f5ffd5b6111348a828b01610fc6565b9094509250611147905060808901610f06565b905092959891949750929550565b5f5f5f60408486031215611167575f5ffd5b61117084610f06565b9250602084013567ffffffffffffffff81111561118b575f5ffd5b61119786828701610fc6565b9497909650939450505050565b600181811c908216806111b857607f821691505b6020821081036111d657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b858152606060208201525f6112336060830186886111f2565b82810360408401526112468185876111f2565b98975050505050505050565b808201808211156103d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b601f82111561070957805f5260205f20601f840160051c810160208510156112aa5750805b601f840160051c820191505b81811015610bdb575f81556001016112b6565b815167ffffffffffffffff8111156112e3576112e3611271565b6112f7816112f184546111a4565b84611285565b6020601f821160018114611329575f83156113125750848201515b5f19600385901b1c1916600184901b178455610bdb565b5f84815260208120601f198516915b828110156113585787850151825560209485019460019092019101611338565b508482101561137557868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122016c0458f92d551bbcdfc455f5f031fc21e8edfb90f82c3312554b1d95d0eaf7564736f6c634300081b0033","sourceMap":"826:5050:43:-:0;;;1845:53;;;;;;;;;-1:-1:-1;1869:22:43;:20;:22::i;:::-;826:5050;;7711:422:24;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:24;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:24;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:24;-1:-1:-1;;;;;8035:33:24;;;;;8087:29;;158:50:51;;;8087:29:24;;146:2:51;131:18;8087:29:24;;;;;;;7981:146;7760:373;7711:422::o;14:200:51:-;826:5050:43;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063715018a6116100a9578063a9059cbb1161006e578063a9059cbb1461029f578063dd62ed3e146102b2578063e4f98d2b146102c5578063f2fde38b146102d8578063f399e22e146102eb575f5ffd5b8063715018a61461023a57806380ff7933146102425780638456cb59146102555780638da5cb5b1461025d57806395d89b4114610297575f5ffd5b80633f4ba83a116100ef5780633f4ba83a146101bf57806340c10f19146101c957806357d682c4146101dc5780635c975abb146101ef57806370a0823114610206575f5ffd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461019d578063313ce567146101b0575b5f5ffd5b6101336102fe565b6040516101409190610ed1565b60405180910390f35b61015c610157366004610f21565b6103be565b6040519015158152602001610140565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610140565b61015c6101ab366004610f49565b6103d7565b60405160128152602001610140565b6101c76103f3565b005b6101c76101d7366004610f21565b610405565b6101c76101ea366004610f83565b610423565b5f5160206113a55f395f51905f525460ff1661015c565b61018f610214366004610fad565b6001600160a01b03165f9081525f5160206113855f395f51905f52602052604090205490565b6101c7610435565b6101c761025036600461100b565b610446565b6101c761045d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610140565b61013361046d565b61015c6102ad366004610f21565b6104ab565b61018f6102c0366004611094565b6104c5565b6101c76102d33660046110bc565b61050e565b6101c76102e6366004610fad565b610531565b6101c76102f9366004611155565b610573565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206113855f395f51905f529161033c906111a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906111a4565b80156103b35780601f1061038a576101008083540402835291602001916103b3565b820191905f5260205f20905b81548152906001019060200180831161039657829003601f168201915b505050505091505090565b5f336103cb8185856106fc565b60019150505b92915050565b5f6103e061070e565b6103eb84848461073e565b949350505050565b6103fb610761565b6104036107bc565b565b61040d610761565b61041561070e565b61041f828261081b565b5050565b61042b610761565b61041f818361084f565b61043d610761565b6104035f610883565b610455868686868686336108f3565b505050505050565b610465610761565b610403610a13565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206113855f395f51905f529161033c906111a4565b5f6104b461070e565b6104be8383610a5b565b9392505050565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b610519813389610a68565b610528878787878787876108f3565b50505050505050565b610539610761565b6001600160a01b03811661056757604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61057081610883565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156105b85750825b90505f8267ffffffffffffffff1660011480156105d45750303b155b9050811580156105e2575080155b156106005760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561062a57845460ff60401b1916600160401b1785555b61069b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a90819084018382808284375f92019190915250610acb92505050565b6106a3610add565b6106ac88610aed565b83156106f257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6107098383836001610afe565b505050565b5f5160206113a55f395f51905f525460ff16156104035760405163d93c066560e01b815260040160405180910390fd5b5f3361074b858285610a68565b610756858585610be2565b506001949350505050565b336107937f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146104035760405163118cdaa760e01b815233600482015260240161055e565b6107c4610c3f565b5f5160206113a55f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6001600160a01b0382166108445760405163ec442f0560e01b81525f600482015260240161055e565b61041f5f8383610c6e565b6001600160a01b03821661087857604051634b637e8f60e11b81525f600482015260240161055e565b61041f825f83610c6e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6108fb61070e565b61090487610da7565b61090d86610dc7565b61094e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060409250610dee915050565b61099083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506104009250610dee915050565b61099a818861084f565b806001600160a01b03166109ac61046d565b6040516109b991906111dc565b6040518091039020876001600160a01b03167f128f87a3924b6e5b4a8b7262caf2476d5ad6d1b725bfbf0eaa0b71183e3b57f48a89898989604051610a0295949392919061121a565b60405180910390a450505050505050565b610a1b61070e565b5f5160206113a55f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336107fd565b5f336103cb818585610be2565b5f610a7384846104c5565b90505f198114610ac55781811015610ab757604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161055e565b610ac584848484035f610afe565b50505050565b610ad3610e10565b61041f8282610e59565b610ae5610e10565b610403610ea9565b610af5610e10565b61057081610ec9565b5f5160206113855f395f51905f526001600160a01b038516610b355760405163e602df0560e01b81525f600482015260240161055e565b6001600160a01b038416610b5e57604051634a1406b160e11b81525f600482015260240161055e565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610bdb57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610bd291815260200190565b60405180910390a35b5050505050565b6001600160a01b038316610c0b57604051634b637e8f60e11b81525f600482015260240161055e565b6001600160a01b038216610c345760405163ec442f0560e01b81525f600482015260240161055e565b610709838383610c6e565b5f5160206113a55f395f51905f525460ff1661040357604051638dfc202b60e01b815260040160405180910390fd5b5f5160206113855f395f51905f526001600160a01b038416610ca85781816002015f828254610c9d9190611252565b90915550610d189050565b6001600160a01b0384165f9081526020829052604090205482811015610cfa5760405163391434e360e21b81526001600160a01b0386166004820152602481018290526044810184905260640161055e565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610d36576002810180548390039055610d54565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9991815260200190565b60405180910390a350505050565b805f0361057057604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b0381166105705760405163d92e233d60e01b815260040160405180910390fd5b808251111561041f57604051631dfb275f60e21b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661040357604051631afcd79f60e31b815260040160405180910390fd5b610e61610e10565b5f5160206113855f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610e9a84826112c9565b5060048101610ac583826112c9565b610eb1610e10565b5f5160206113a55f395f51905f52805460ff19169055565b610539610e10565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610f1c575f5ffd5b919050565b5f5f60408385031215610f32575f5ffd5b610f3b83610f06565b946020939093013593505050565b5f5f5f60608486031215610f5b575f5ffd5b610f6484610f06565b9250610f7260208501610f06565b929592945050506040919091013590565b5f5f60408385031215610f94575f5ffd5b82359150610fa460208401610f06565b90509250929050565b5f60208284031215610fbd575f5ffd5b6104be82610f06565b5f5f83601f840112610fd6575f5ffd5b50813567ffffffffffffffff811115610fed575f5ffd5b602083019150836020828501011115611004575f5ffd5b9250929050565b5f5f5f5f5f5f60808789031215611020575f5ffd5b8635955061103060208801610f06565b9450604087013567ffffffffffffffff81111561104b575f5ffd5b61105789828a01610fc6565b909550935050606087013567ffffffffffffffff811115611076575f5ffd5b61108289828a01610fc6565b979a9699509497509295939492505050565b5f5f604083850312156110a5575f5ffd5b6110ae83610f06565b9150610fa460208401610f06565b5f5f5f5f5f5f5f60a0888a0312156110d2575f5ffd5b873596506110e260208901610f06565b9550604088013567ffffffffffffffff8111156110fd575f5ffd5b6111098a828b01610fc6565b909650945050606088013567ffffffffffffffff811115611128575f5ffd5b6111348a828b01610fc6565b9094509250611147905060808901610f06565b905092959891949750929550565b5f5f5f60408486031215611167575f5ffd5b61117084610f06565b9250602084013567ffffffffffffffff81111561118b575f5ffd5b61119786828701610fc6565b9497909650939450505050565b600181811c908216806111b857607f821691505b6020821081036111d657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b858152606060208201525f6112336060830186886111f2565b82810360408401526112468185876111f2565b98975050505050505050565b808201808211156103d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b601f82111561070957805f5260205f20601f840160051c810160208510156112aa5750805b601f840160051c820191505b81811015610bdb575f81556001016112b6565b815167ffffffffffffffff8111156112e3576112e3611271565b6112f7816112f184546111a4565b84611285565b6020601f821160018114611329575f83156113125750848201515b5f19600385901b1c1916600184901b178455610bdb565b5f84815260208120601f198516915b828110156113585787850151825560209485019460019092019101611338565b508482101561137557868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122016c0458f92d551bbcdfc455f5f031fc21e8edfb90f82c3312554b1d95d0eaf7564736f6c634300081b0033","sourceMap":"826:5050:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5210:186;;;;;;:::i;:::-;;:::i;:::-;;;1085:14:51;;1078:22;1060:41;;1048:2;1033:18;5210:186:26;920:187:51;3896:152:26;4027:14;;3896:152;;;1258:25:51;;;1246:2;1231:18;3896:152:26;1112:177:51;4673:221:43;;;;;;:::i;:::-;;:::i;3754:82:26:-;;;3827:2;1815:36:51;;1803:2;1788:18;3754:82:26;1673:184:51;4136:67:43;;;:::i;:::-;;4209:111;;;;;;:::i;:::-;;:::i;3952:109::-;;;;;;:::i;:::-;;:::i;2692:145:28:-;-1:-1:-1;;;;;;;;;;;2821:9:28;;;2692:145;;4106:171:26;;;;;;:::i;:::-;-1:-1:-1;;;;;4250:20:26;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:26;;;;;;;4106:171;3155:101:23;;;:::i;2690:215:43:-;;;;;;:::i;:::-;;:::i;4067:63::-;;;:::i;2441:144:23:-;1313:22;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:23;;;3767:51:51;;3755:2;3740:18;2441:144:23;3621:203:51;2973:148:26;;;:::i;4420:149:43:-;;;;;;:::i;:::-;;:::i;4708:195:26:-;;;;;;:::i;:::-;;:::i;3373:321:43:-;;;;;;:::i;:::-;;:::i;3405:215:23:-;;;;;;:::i;:::-;;:::i;2046:257:43:-;;;;;;:::i;:::-;;:::i;2716:144:26:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:26;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:27;5337:31:26;966:10:27;5353:7:26;5362:5;5337:8;:31::i;:::-;5385:4;5378:11;;;5210:186;;;;;:::o;4673:221:43:-;4824:4;2316:19:28;:17;:19::i;:::-;4851:36:43::1;4870:4;4876:2;4880:6;4851:18;:36::i;:::-;4844:43:::0;4673:221;-1:-1:-1;;;;4673:221:43:o;4136:67::-;2009:13;:11;:13::i;:::-;4186:10:::1;:8;:10::i;:::-;4136:67::o:0;4209:111::-;2009:13;:11;:13::i;:::-;2316:19:28::1;:17;:19::i;:::-;4296:17:43::2;4302:2;4306:6;4296:5;:17::i;:::-;4209:111:::0;;:::o;3952:109::-;2009:13;:11;:13::i;:::-;4032:22:::1;4038:7;4047:6;4032:5;:22::i;3155:101:23:-:0;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;2690:215:43:-:0;2832:66;2840:6;2848:11;2861:15;;2878:7;;2887:10;2832:7;:66::i;:::-;2690:215;;;;;;:::o;4067:63::-;2009:13;:11;:13::i;:::-;4115:8:::1;:6;:8::i;2973:148:26:-:0;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:26;3098:16;;;:::i;4420:149:43:-;4513:4;2316:19:28;:17;:19::i;:::-;4536:26:43::1;4551:2;4555:6;4536:14;:26::i;:::-;4529:33:::0;4420:149;-1:-1:-1;;;4420:149:43:o;4708:195:26:-;-1:-1:-1;;;;;4867:20:26;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;3373:321:43:-;3570:44;3586:7;3595:10;3607:6;3570:15;:44::i;:::-;3624:63;3632:6;3640:11;3653:15;;3670:7;;3679;3624;:63::i;:::-;3373:321;;;;;;;:::o;3405:215:23:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:23;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:23;;3562:1:::1;3534:31;::::0;::::1;3767:51:51::0;3740:18;;3534:31:23::1;;;;;;;;3485:91;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;2046:257:43:-;8870:21:24;4302:15;;-1:-1:-1;;;4302:15:24;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:24;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:24;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:24;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:24;-1:-1:-1;;;5013:22:24;;;4979:67;2198:32:43::1;2211:8;;2198:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;2198:32:43::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;2221:8:43;;-1:-1:-1;2221:8:43;;;;2198:32;::::1;2221:8:::0;;;;2198:32;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;2198:12:43::1;::::0;-1:-1:-1;;;2198:32:43:i:1;:::-;2240:17;:15;:17::i;:::-;2267:29;2282:13;2267:14;:29::i;:::-;5070:14:24::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:24;;;5142:14;;-1:-1:-1;6107:50:51;;5142:14:24;;6095:2:51;6080:18;5142:14:24;;;;;;;5066:101;4092:1081;;;;;2046:257:43;;;:::o;10001:128:26:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;:::-;10001:128;;;:::o;2905::28:-;-1:-1:-1;;;;;;;;;;;2821:9:28;;;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:28;;;;;;;;;;;5988:244:26;6075:4;966:10:27;6131:37:26;6147:4;966:10:27;6162:5:26;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:26;;5988:244;-1:-1:-1;;;;5988:244:26:o;2658:162:23:-;966:10:27;2717:7:23;1313:22;2570:8;-1:-1:-1;;;;;2570:8:23;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:23;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:23;;966:10:27;2763:40:23;;;3767:51:51;3740:18;;2763:40:23;3621:203:51;3674:178:28;2563:16;:14;:16::i;:::-;-1:-1:-1;;;;;;;;;;;3791:17:28;;-1:-1:-1;;3791:17:28::1;::::0;;3823:22:::1;966:10:27::0;3832:12:28::1;3823:22;::::0;-1:-1:-1;;;;;3785:32:51;;;3767:51;;3755:2;3740:18;3823:22:28::1;;;;;;;3722:130;3674:178::o:0;8733:208:26:-;-1:-1:-1;;;;;8803:21:26;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:26;;8876:1;8847:32;;;3767:51:51;3740:18;;8847:32:26;3621:203:51;8799:91:26;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;9259:206::-;-1:-1:-1;;;;;9329:21:26;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:26;;9400:1;9373:30;;;3767:51:51;3740:18;;9373:30:26;3621:203:51;9325:89:26;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;3774:248:23:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:23;;-1:-1:-1;;;;;3941:19:23;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;5339:535:43:-;2316:19:28;:17;:19::i;:::-;5547:30:43::1;5570:6;5547:22;:30::i;:::-;5587:36;5611:11;5587:23;:36::i;:::-;5633:57;5652:15;;5633:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1033:2:43::1;::::0;-1:-1:-1;5633:18:43::1;::::0;-1:-1:-1;;5633:57:43:i:1;:::-;5700:47;5719:7;;5700:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1145:4:43::1;::::0;-1:-1:-1;5700:18:43::1;::::0;-1:-1:-1;;5700:47:43:i:1;:::-;5757:22;5763:7;5772:6;5757:5;:22::i;:::-;5859:7;-1:-1:-1::0;;;;;5794:73:43::1;5849:8;:6;:8::i;:::-;5794:73;;;;;;:::i;:::-;;;;;;;;5810:11;-1:-1:-1::0;;;;;5794:73:43::1;;5802:6;5823:15;;5840:7;;5794:73;;;;;;;;;;:::i;:::-;;;;;;;;5339:535:::0;;;;;;;:::o;3366:176:28:-;2316:19;:17;:19::i;:::-;-1:-1:-1;;;;;;;;;;;3484:16:28;;-1:-1:-1;;3484:16:28::1;3496:4;3484:16;::::0;;3515:20:::1;966:10:27::0;3522:12:28::1;887:96:27::0;4472:178:26;4541:4;966:10:27;4595:27:26;966:10:27;4612:2:26;4616:5;4595:9;:27::i;11745:477::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:26;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12018:60;;-1:-1:-1;;;12018:60:26;;-1:-1:-1;;;;;7481:32:51;;12018:60:26;;;7463:51:51;7530:18;;;7523:34;;;7573:18;;;7566:34;;;7436:18;;12018:60:26;7261:345:51;11963:130:26;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;:::-;11834:388;11745:477;;;:::o;2282:147::-;6931:20:24;:18;:20::i;:::-;2384:38:26::1;2407:5;2414:7;2384:22;:38::i;1836:97:28:-:0;6931:20:24;:18;:20::i;:::-;1899:27:28::1;:25;:27::i;1847:127:23:-:0;6931:20:24;:18;:20::i;:::-;1929:38:23::1;1954:12;1929:24;:38::i;10976:487:26:-:0;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:26;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:26;;11212:1;11183:32;;;3767:51:51;3740:18;;11183:32:26;3621:203:51;11137:89:26;-1:-1:-1;;;;;11239:21:26;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:26;;11311:1;11283:31;;;3767:51:51;3740:18;;11283:31:26;3621:203:51;11235:90:26;-1:-1:-1;;;;;11334:20:26;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:26;11424:5;-1:-1:-1;;;;;11415:31:26;;11440:5;11415:31;;;;1258:25:51;;1246:2;1231:18;;1112:177;11415:31:26;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;6605:300::-;-1:-1:-1;;;;;6688:18:26;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:26;;6756:1;6729:30;;;3767:51:51;3740:18;;6729:30:26;3621:203:51;6684:86:26;-1:-1:-1;;;;;6783:16:26;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:26;;6851:1;6822:32;;;3767:51:51;3740:18;;6822:32:26;3621:203:51;6779:86:26;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;3105:126:28:-;-1:-1:-1;;;;;;;;;;;2821:9:28;;;3163:62;;3199:15;;-1:-1:-1;;;3199:15:28;;;;;;;;;;;7220:1170:26;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:26;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:26;;-1:-1:-1;7358:546:26;;-1:-1:-1;;;;;7574:17:26;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:26;;-1:-1:-1;;;;;7481:32:51;;7655:50:26;;;7463:51:51;7530:18;;;7523:34;;;7573:18;;;7566:34;;;7436:18;;7655:50:26;7261:345:51;7605:115:26;-1:-1:-1;;;;;7840:17:26;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:26;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:26;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:26;8367:4;-1:-1:-1;;;;;8358:25:26;;8377:5;8358:25;;;;1258::51;;1246:2;1231:18;;1112:177;8358:25:26;;;;;;;;7295:1095;7220:1170;;;:::o;252:113:47:-;319:6;329:1;319:11;315:43;;339:19;;-1:-1:-1;;;339:19:47;;;;;;;;;;;126:120;-1:-1:-1;;;;;192:18:47;;188:51;;219:20;;-1:-1:-1;;;219:20:47;;;;;;;;;;;371:136;470:3;456;450:17;:23;446:54;;;482:18;;-1:-1:-1;;;482:18:47;;;;;;;;;;;7084:141:24;8870:21;8560:40;-1:-1:-1;;;8560:40:24;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:24;;;;;;;;;;;2435:216:26;6931:20:24;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:26;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:26::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;1939:156:28:-:0;6931:20:24;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2071:17:28;;-1:-1:-1;;2071:17:28::1;::::0;;1939:156::o;1980:235:23:-;6931:20:24;:18;:20::i;14:418:51:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:51;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:51:o;1294:374::-;1371:6;1379;1387;1440:2;1428:9;1419:7;1415:23;1411:32;1408:52;;;1456:1;1453;1446:12;1408:52;1479:29;1498:9;1479:29;:::i;:::-;1469:39;;1527:38;1561:2;1550:9;1546:18;1527:38;:::i;:::-;1294:374;;1517:48;;-1:-1:-1;;;1634:2:51;1619:18;;;;1606:32;;1294:374::o;1862:300::-;1930:6;1938;1991:2;1979:9;1970:7;1966:23;1962:32;1959:52;;;2007:1;2004;1997:12;1959:52;2052:23;;;-1:-1:-1;2118:38:51;2152:2;2137:18;;2118:38;:::i;:::-;2108:48;;1862:300;;;;;:::o;2167:186::-;2226:6;2279:2;2267:9;2258:7;2254:23;2250:32;2247:52;;;2295:1;2292;2285:12;2247:52;2318:29;2337:9;2318:29;:::i;2358:348::-;2410:8;2420:6;2474:3;2467:4;2459:6;2455:17;2451:27;2441:55;;2492:1;2489;2482:12;2441:55;-1:-1:-1;2515:20:51;;2558:18;2547:30;;2544:50;;;2590:1;2587;2580:12;2544:50;2627:4;2619:6;2615:17;2603:29;;2679:3;2672:4;2663:6;2655;2651:19;2647:30;2644:39;2641:59;;;2696:1;2693;2686:12;2641:59;2358:348;;;;;:::o;2711:905::-;2821:6;2829;2837;2845;2853;2861;2914:3;2902:9;2893:7;2889:23;2885:33;2882:53;;;2931:1;2928;2921:12;2882:53;2976:23;;;-1:-1:-1;3042:38:51;3076:2;3061:18;;3042:38;:::i;:::-;3032:48;;3131:2;3120:9;3116:18;3103:32;3158:18;3150:6;3147:30;3144:50;;;3190:1;3187;3180:12;3144:50;3229:59;3280:7;3271:6;3260:9;3256:22;3229:59;:::i;:::-;3307:8;;-1:-1:-1;3203:85:51;-1:-1:-1;;3395:2:51;3380:18;;3367:32;3424:18;3411:32;;3408:52;;;3456:1;3453;3446:12;3408:52;3495:61;3548:7;3537:8;3526:9;3522:24;3495:61;:::i;:::-;2711:905;;;;-1:-1:-1;2711:905:51;;-1:-1:-1;2711:905:51;;3575:8;;2711:905;-1:-1:-1;;;2711:905:51:o;3829:260::-;3897:6;3905;3958:2;3946:9;3937:7;3933:23;3929:32;3926:52;;;3974:1;3971;3964:12;3926:52;3997:29;4016:9;3997:29;:::i;:::-;3987:39;;4045:38;4079:2;4068:9;4064:18;4045:38;:::i;4094:980::-;4213:6;4221;4229;4237;4245;4253;4261;4314:3;4302:9;4293:7;4289:23;4285:33;4282:53;;;4331:1;4328;4321:12;4282:53;4376:23;;;-1:-1:-1;4442:38:51;4476:2;4461:18;;4442:38;:::i;:::-;4432:48;;4531:2;4520:9;4516:18;4503:32;4558:18;4550:6;4547:30;4544:50;;;4590:1;4587;4580:12;4544:50;4629:59;4680:7;4671:6;4660:9;4656:22;4629:59;:::i;:::-;4707:8;;-1:-1:-1;4603:85:51;-1:-1:-1;;4795:2:51;4780:18;;4767:32;4824:18;4811:32;;4808:52;;;4856:1;4853;4846:12;4808:52;4895:61;4948:7;4937:8;4926:9;4922:24;4895:61;:::i;:::-;4975:8;;-1:-1:-1;4869:87:51;-1:-1:-1;5029:39:51;;-1:-1:-1;5063:3:51;5048:19;;5029:39;:::i;:::-;5019:49;;4094:980;;;;;;;;;;:::o;5079:485::-;5159:6;5167;5175;5228:2;5216:9;5207:7;5203:23;5199:32;5196:52;;;5244:1;5241;5234:12;5196:52;5267:29;5286:9;5267:29;:::i;:::-;5257:39;;5347:2;5336:9;5332:18;5319:32;5374:18;5366:6;5363:30;5360:50;;;5406:1;5403;5396:12;5360:50;5445:59;5496:7;5487:6;5476:9;5472:22;5445:59;:::i;:::-;5079:485;;5523:8;;-1:-1:-1;5419:85:51;;-1:-1:-1;;;;5079:485:51:o;5569:380::-;5648:1;5644:12;;;;5691;;;5712:61;;5766:4;5758:6;5754:17;5744:27;;5712:61;5819:2;5811:6;5808:14;5788:18;5785:38;5782:161;;5865:10;5860:3;5856:20;5853:1;5846:31;5900:4;5897:1;5890:15;5928:4;5925:1;5918:15;5782:161;;5569:380;;;:::o;6168:303::-;6299:3;6337:6;6331:13;6383:6;6376:4;6368:6;6364:17;6359:3;6353:37;6445:1;6409:16;;6434:13;;;-1:-1:-1;6409:16:51;6168:303;-1:-1:-1;6168:303:51:o;6476:267::-;6565:6;6560:3;6553:19;6617:6;6610:5;6603:4;6598:3;6594:14;6581:43;-1:-1:-1;6669:1:51;6644:16;;;6662:4;6640:27;;;6633:38;;;;6725:2;6704:15;;;-1:-1:-1;;6700:29:51;6691:39;;;6687:50;;6476:267::o;6748:508::-;6993:6;6982:9;6975:25;7036:2;7031;7020:9;7016:18;7009:30;6956:4;7062:62;7120:2;7109:9;7105:18;7097:6;7089;7062:62;:::i;:::-;7172:9;7164:6;7160:22;7155:2;7144:9;7140:18;7133:50;7200;7243:6;7235;7227;7200:50;:::i;:::-;7192:58;6748:508;-1:-1:-1;;;;;;;;6748:508:51:o;7611:222::-;7676:9;;;7697:10;;;7694:133;;;7749:10;7744:3;7740:20;7737:1;7730:31;7784:4;7781:1;7774:15;7812:4;7809:1;7802:15;7838:127;7899:10;7894:3;7890:20;7887:1;7880:31;7930:4;7927:1;7920:15;7954:4;7951:1;7944:15;8096:518;8198:2;8193:3;8190:11;8187:421;;;8234:5;8231:1;8224:16;8278:4;8275:1;8265:18;8348:2;8336:10;8332:19;8329:1;8325:27;8319:4;8315:38;8384:4;8372:10;8369:20;8366:47;;;-1:-1:-1;8407:4:51;8366:47;8462:2;8457:3;8453:12;8450:1;8446:20;8440:4;8436:31;8426:41;;8517:81;8535:2;8528:5;8525:13;8517:81;;;8594:1;8580:16;;8561:1;8550:13;8517:81;;8790:1299;8916:3;8910:10;8943:18;8935:6;8932:30;8929:56;;;8965:18;;:::i;:::-;8994:97;9084:6;9044:38;9076:4;9070:11;9044:38;:::i;:::-;9038:4;8994:97;:::i;:::-;9140:4;9171:2;9160:14;;9188:1;9183:649;;;;9876:1;9893:6;9890:89;;;-1:-1:-1;9945:19:51;;;9939:26;9890:89;-1:-1:-1;;8747:1:51;8743:11;;;8739:24;8735:29;8725:40;8771:1;8767:11;;;8722:57;9992:81;;9153:930;;9183:649;8043:1;8036:14;;;8080:4;8067:18;;-1:-1:-1;;9219:20:51;;;9337:222;9351:7;9348:1;9345:14;9337:222;;;9433:19;;;9427:26;9412:42;;9540:4;9525:20;;;;9493:1;9481:14;;;;9367:12;9337:222;;;9341:3;9587:6;9578:7;9575:19;9572:201;;;9648:19;;;9642:26;-1:-1:-1;;9731:1:51;9727:14;;;9743:3;9723:24;9719:37;9715:42;9700:58;9685:74;;9572:201;-1:-1:-1;;;;9819:1:51;9803:14;;;9799:22;9786:36;;-1:-1:-1;8790:1299:51:o","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","cancel(uint256,address)":"57d682c4","decimals()":"313ce567","initialize(address,string)":"f399e22e","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","renounceOwnership()":"715018a6","retire(uint256,address,string,string)":"80ff7933","retireFrom(uint256,address,string,string,address)":"e4f98d2b","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxLength\",\"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\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"beneficiaryName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Retired\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"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\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"parentFactory\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"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\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"beneficiaryName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"retire\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"beneficiaryName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"retireFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Atmosfearful\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MaxLength()\":[{\"details\":\"Revert when the string length is greater than the maximum allowed\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ZeroAddress()\":[{\"details\":\"Revert when setting certain values to zero address\"}],\"ZeroAmount()\":[{\"details\":\"Revert when attempting to issue credits with a zero amount\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Retired(uint256,address,string,string,string,address)\":{\"params\":{\"account\":\"Account that held the retired credit balance.\",\"amount\":\"Amount of credits retired.\",\"beneficiary\":\"Account claiming the benefit of the retired credits.\",\"beneficiaryName\":\"Name of the individual or organization claiming the benefit of the retired credits.\",\"creditId\":\"ID of the retired credit.\",\"message\":\"Message to include with the retirement.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"cancel(uint256,address)\":{\"details\":\"Remove from circulation without environmental claims. Invoked by parent factory only. Parent factory emits `Canceled` event which includes a cancellation reason. Paused credits can still be canceled.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"retire(uint256,address,string,string)\":{\"params\":{\"amount\":\"Amount of tokens to retire.\",\"beneficiary\":\"Account to permanently claim the benefit of the retired credits.\",\"beneficiaryName\":\"Name of the individual or organization claiming the benefit of the retired credits.\",\"message\":\"Message to include with the retirement.\"}},\"retireFrom(uint256,address,string,string,address)\":{\"params\":{\"account\":\"Account that holds the credits to retire.\",\"amount\":\"Amount of tokens to retire.\",\"beneficiary\":\"Account to permanently claim the benefit of the retired credits.\",\"beneficiaryName\":\"Name of the individual or organization claiming the benefit of the retired credits.\",\"message\":\"Message to include with the retirement.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"Override of ERC20Upgradeable transfer function to prevent transfers when paused.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Override of ERC20Upgradeable transferFrom function to prevent transfers when paused.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"BENEFICIARY_NAME_MAX\":{\"details\":\"Maximum length of the string for beneficiary name.\"},\"RETIRE_MESSAGE_MAX\":{\"details\":\"Maximum length of the string for retirement message.\"}},\"title\":\"CMARK CreditToken\",\"version\":1},\"userdoc\":{\"events\":{\"Retired(uint256,address,string,string,string,address)\":{\"notice\":\"Emitted by retire() and retireFrom().\"}},\"kind\":\"user\",\"methods\":{\"retire(uint256,address,string,string)\":{\"notice\":\"Retire tokens from the caller's account.\"},\"retireFrom(uint256,address,string,string,address)\":{\"notice\":\"Retire tokens from another account, requires allowance.\"}},\"notice\":\"ERC20 representing issued carbon credits. Credit holders can retire or transfer their balance. The contract is managed by the parent CreditTokenFactory, which retains the power to issue, cancel, or pause credits.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CreditToken.sol\":\"CreditToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152\",\"dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"src/CreditToken.sol\":{\"keccak256\":\"0x722852033c16370f1db4c31a9a3a5bc359d7fd70c497162e26e5a8a0119aab1d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://15794947a5584b5fd7dedc88c1b4aa2592c28b245c8144647071a94f67605465\",\"dweb:/ipfs/Qmeci7vJGZNywjgt6pScNxPTqxmJV9tizcAcxUpKFAHndC\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x16bb1be9438c1de8e12ce17e17e516bad3261fd24247b73d8f4eaaec395e2373\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c769f34f5423d278844ac97c8cddbc8116eca43c0c4112bed1104f733f6b977f\",\"dweb:/ipfs/QmPFm7iN5RYwiyYsvvqXt9MKAMFYTgB2ThNpKZWGTtgVY2\"]},\"src/libraries/Validate.sol\":{\"keccak256\":\"0x99f00322e5a11077ff2681fbe690d0e2fa19af997ec8c1c738220a6f175eb741\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ab7636eb2ac4d0a82f793d2be022ec946e0c8c4819831e4f42f638fe706335c9\",\"dweb:/ipfs/QmVZcPfU2qMeGa4uP2c8bjNBLnv17a1xoxAgS7DeHG7Z93\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MaxLength"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[],"type":"error","name":"ZeroAmount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"address","name":"beneficiary","type":"address","indexed":true},{"internalType":"string","name":"beneficiaryName","type":"string","indexed":false},{"internalType":"string","name":"message","type":"string","indexed":false},{"internalType":"string","name":"creditId","type":"string","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"Retired","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancel"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"parentFactory","type":"address"},{"internalType":"string","name":"creditId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"string","name":"beneficiaryName","type":"string"},{"internalType":"string","name":"message","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"retire"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"string","name":"beneficiaryName","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"retireFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"cancel(uint256,address)":{"details":"Remove from circulation without environmental claims. Invoked by parent factory only. Parent factory emits `Canceled` event which includes a cancellation reason. Paused credits can still be canceled."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"retire(uint256,address,string,string)":{"params":{"amount":"Amount of tokens to retire.","beneficiary":"Account to permanently claim the benefit of the retired credits.","beneficiaryName":"Name of the individual or organization claiming the benefit of the retired credits.","message":"Message to include with the retirement."}},"retireFrom(uint256,address,string,string,address)":{"params":{"account":"Account that holds the credits to retire.","amount":"Amount of tokens to retire.","beneficiary":"Account to permanently claim the benefit of the retired credits.","beneficiaryName":"Name of the individual or organization claiming the benefit of the retired credits.","message":"Message to include with the retirement."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"Override of ERC20Upgradeable transfer function to prevent transfers when paused."},"transferFrom(address,address,uint256)":{"details":"Override of ERC20Upgradeable transferFrom function to prevent transfers when paused."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"retire(uint256,address,string,string)":{"notice":"Retire tokens from the caller's account."},"retireFrom(uint256,address,string,string,address)":{"notice":"Retire tokens from another account, requires allowance."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/CreditToken.sol":"CreditToken"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72","urls":["bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152","dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"src/CreditToken.sol":{"keccak256":"0x722852033c16370f1db4c31a9a3a5bc359d7fd70c497162e26e5a8a0119aab1d","urls":["bzz-raw://15794947a5584b5fd7dedc88c1b4aa2592c28b245c8144647071a94f67605465","dweb:/ipfs/Qmeci7vJGZNywjgt6pScNxPTqxmJV9tizcAcxUpKFAHndC"],"license":"UNLICENSED"},"src/libraries/Errors.sol":{"keccak256":"0x16bb1be9438c1de8e12ce17e17e516bad3261fd24247b73d8f4eaaec395e2373","urls":["bzz-raw://c769f34f5423d278844ac97c8cddbc8116eca43c0c4112bed1104f733f6b977f","dweb:/ipfs/QmPFm7iN5RYwiyYsvvqXt9MKAMFYTgB2ThNpKZWGTtgVY2"],"license":"UNLICENSED"},"src/libraries/Validate.sol":{"keccak256":"0x99f00322e5a11077ff2681fbe690d0e2fa19af997ec8c1c738220a6f175eb741","urls":["bzz-raw://ab7636eb2ac4d0a82f793d2be022ec946e0c8c4819831e4f42f638fe706335c9","dweb:/ipfs/QmVZcPfU2qMeGa4uP2c8bjNBLnv17a1xoxAgS7DeHG7Z93"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/CreditToken.sol","id":42139,"exportedSymbols":{"CreditToken":[42138],"ERC20Upgradeable":[40305],"Initializable":[39506],"OwnableUpgradeable":[39252],"PausableUpgradeable":[40527],"Validate":[42864]},"nodeType":"SourceUnit","src":"39:5838:43","nodes":[{"id":41854,"nodeType":"PragmaDirective","src":"39:24:43","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":41856,"nodeType":"ImportDirective","src":"65:102:43","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":42139,"sourceUnit":40306,"symbolAliases":[{"foreign":{"id":41855,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40305,"src":"73:16:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41858,"nodeType":"ImportDirective","src":"168:101:43","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":42139,"sourceUnit":39253,"symbolAliases":[{"foreign":{"id":41857,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39252,"src":"176:18:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41860,"nodeType":"ImportDirective","src":"270:102:43","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":42139,"sourceUnit":40528,"symbolAliases":[{"foreign":{"id":41859,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40527,"src":"278:19:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41862,"nodeType":"ImportDirective","src":"373:96:43","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":42139,"sourceUnit":39507,"symbolAliases":[{"foreign":{"id":41861,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39506,"src":"381:13:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41864,"nodeType":"ImportDirective","src":"470:50:43","nodes":[],"absolutePath":"src/libraries/Validate.sol","file":"./libraries/Validate.sol","nameLocation":"-1:-1:-1","scope":42139,"sourceUnit":42865,"symbolAliases":[{"foreign":{"id":41863,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"478:8:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42138,"nodeType":"ContractDefinition","src":"826:5050:43","nodes":[{"id":41877,"nodeType":"VariableDeclaration","src":"993:42:43","nodes":[],"constant":true,"documentation":{"id":41874,"nodeType":"StructuredDocumentation","src":"929:59:43","text":"@dev Maximum length of the string for beneficiary name."},"mutability":"constant","name":"BENEFICIARY_NAME_MAX","nameLocation":"1010:20:43","scope":42138,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41875,"name":"uint256","nodeType":"ElementaryTypeName","src":"993:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3634","id":41876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1033:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"visibility":"internal"},{"id":41881,"nodeType":"VariableDeclaration","src":"1107:42:43","nodes":[],"constant":true,"documentation":{"id":41878,"nodeType":"StructuredDocumentation","src":"1041:61:43","text":"@dev Maximum length of the string for retirement message."},"mutability":"constant","name":"RETIRE_MESSAGE_MAX","nameLocation":"1124:18:43","scope":42138,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41879,"name":"uint256","nodeType":"ElementaryTypeName","src":"1107:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303234","id":41880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:4:43","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"1024"},"visibility":"internal"},{"id":41896,"nodeType":"EventDefinition","src":"1636:203:43","nodes":[],"anonymous":false,"documentation":{"id":41882,"nodeType":"StructuredDocumentation","src":"1156:475:43","text":"@notice Emitted by retire() and retireFrom().\n @param amount Amount of credits retired.\n @param beneficiary Account claiming the benefit of the retired credits.\n @param beneficiaryName Name of the individual or organization claiming the benefit of the retired credits.\n @param message Message to include with the retirement.\n @param creditId ID of the retired credit.\n @param account Account that held the retired credit balance."},"eventSelector":"128f87a3924b6e5b4a8b7262caf2476d5ad6d1b725bfbf0eaa0b71183e3b57f4","name":"Retired","nameLocation":"1642:7:43","parameters":{"id":41895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41884,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1667:6:43","nodeType":"VariableDeclaration","scope":41896,"src":"1659:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1659:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41886,"indexed":true,"mutability":"mutable","name":"beneficiary","nameLocation":"1699:11:43","nodeType":"VariableDeclaration","scope":41896,"src":"1683:27:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41885,"name":"address","nodeType":"ElementaryTypeName","src":"1683:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41888,"indexed":false,"mutability":"mutable","name":"beneficiaryName","nameLocation":"1727:15:43","nodeType":"VariableDeclaration","scope":41896,"src":"1720:22:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41887,"name":"string","nodeType":"ElementaryTypeName","src":"1720:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41890,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"1759:7:43","nodeType":"VariableDeclaration","scope":41896,"src":"1752:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41889,"name":"string","nodeType":"ElementaryTypeName","src":"1752:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41892,"indexed":true,"mutability":"mutable","name":"creditId","nameLocation":"1791:8:43","nodeType":"VariableDeclaration","scope":41896,"src":"1776:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41891,"name":"string","nodeType":"ElementaryTypeName","src":"1776:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41894,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1825:7:43","nodeType":"VariableDeclaration","scope":41896,"src":"1809:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41893,"name":"address","nodeType":"ElementaryTypeName","src":"1809:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:189:43"}},{"id":41903,"nodeType":"FunctionDefinition","src":"1845:53:43","nodes":[],"body":{"id":41902,"nodeType":"Block","src":"1859:39:43","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":41899,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39474,"src":"1869:20:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":41900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1869:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41901,"nodeType":"ExpressionStatement","src":"1869:22:43"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":41897,"nodeType":"ParameterList","parameters":[],"src":"1856:2:43"},"returnParameters":{"id":41898,"nodeType":"ParameterList","parameters":[],"src":"1859:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":41911,"nodeType":"ModifierDefinition","src":"1976:64:43","nodes":[],"body":{"id":41910,"nodeType":"Block","src":"1999:41:43","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":41906,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39180,"src":"2009:11:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":41907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2009:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41908,"nodeType":"ExpressionStatement","src":"2009:13:43"},{"id":41909,"nodeType":"PlaceholderStatement","src":"2032:1:43"}]},"documentation":{"id":41904,"nodeType":"StructuredDocumentation","src":"1904:67:43","text":"@dev Identical to Ownable.onlyOwner(), but renamed for clarity."},"name":"onlyFactory","nameLocation":"1985:11:43","parameters":{"id":41905,"nodeType":"ParameterList","parameters":[],"src":"1996:2:43"},"virtual":false,"visibility":"internal"},{"id":41933,"nodeType":"FunctionDefinition","src":"2046:257:43","nodes":[],"body":{"id":41932,"nodeType":"Block","src":"2136:167:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":41921,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41915,"src":"2211:8:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":41922,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41915,"src":"2221:8:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":41920,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39756,"src":"2198:12:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":41923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2198:32:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41924,"nodeType":"ExpressionStatement","src":"2198:32:43"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":41925,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40403,"src":"2240:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":41926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2240:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41927,"nodeType":"ExpressionStatement","src":"2240:17:43"},{"expression":{"arguments":[{"id":41929,"name":"parentFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41913,"src":"2282:13:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":41928,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39112,"src":"2267:14:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":41930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2267:29:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41931,"nodeType":"ExpressionStatement","src":"2267:29:43"}]},"functionSelector":"f399e22e","implemented":true,"kind":"function","modifiers":[{"id":41918,"kind":"modifierInvocation","modifierName":{"id":41917,"name":"initializer","nameLocations":["2124:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":39360,"src":"2124:11:43"},"nodeType":"ModifierInvocation","src":"2124:11:43"}],"name":"initialize","nameLocation":"2055:10:43","parameters":{"id":41916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41913,"mutability":"mutable","name":"parentFactory","nameLocation":"2074:13:43","nodeType":"VariableDeclaration","scope":41933,"src":"2066:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41912,"name":"address","nodeType":"ElementaryTypeName","src":"2066:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41915,"mutability":"mutable","name":"creditId","nameLocation":"2105:8:43","nodeType":"VariableDeclaration","scope":41933,"src":"2089:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":41914,"name":"string","nodeType":"ElementaryTypeName","src":"2089:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2065:49:43"},"returnParameters":{"id":41919,"nodeType":"ParameterList","parameters":[],"src":"2136:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":41955,"nodeType":"FunctionDefinition","src":"2690:215:43","nodes":[],"body":{"id":41954,"nodeType":"Block","src":"2822:83:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":41946,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41936,"src":"2840:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":41947,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41938,"src":"2848:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41948,"name":"beneficiaryName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41940,"src":"2861:15:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":41949,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41942,"src":"2878:7:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"expression":{"id":41950,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2887:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2891:6:43","memberName":"sender","nodeType":"MemberAccess","src":"2887:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":41945,"name":"_retire","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42137,"src":"2832:7:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_string_calldata_ptr_$_t_string_calldata_ptr_$_t_address_$returns$__$","typeString":"function (uint256,address,string calldata,string calldata,address)"}},"id":41952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:66:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41953,"nodeType":"ExpressionStatement","src":"2832:66:43"}]},"documentation":{"id":41934,"nodeType":"StructuredDocumentation","src":"2309:376:43","text":"@notice Retire tokens from the caller's account.\n @param amount Amount of tokens to retire.\n @param beneficiary Account to permanently claim the benefit of the retired credits.\n @param beneficiaryName Name of the individual or organization claiming the benefit of the retired credits.\n @param message Message to include with the retirement."},"functionSelector":"80ff7933","implemented":true,"kind":"function","modifiers":[],"name":"retire","nameLocation":"2699:6:43","parameters":{"id":41943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41936,"mutability":"mutable","name":"amount","nameLocation":"2714:6:43","nodeType":"VariableDeclaration","scope":41955,"src":"2706:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41935,"name":"uint256","nodeType":"ElementaryTypeName","src":"2706:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41938,"mutability":"mutable","name":"beneficiary","nameLocation":"2730:11:43","nodeType":"VariableDeclaration","scope":41955,"src":"2722:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41937,"name":"address","nodeType":"ElementaryTypeName","src":"2722:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41940,"mutability":"mutable","name":"beneficiaryName","nameLocation":"2759:15:43","nodeType":"VariableDeclaration","scope":41955,"src":"2743:31:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":41939,"name":"string","nodeType":"ElementaryTypeName","src":"2743:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41942,"mutability":"mutable","name":"message","nameLocation":"2792:7:43","nodeType":"VariableDeclaration","scope":41955,"src":"2776:23:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":41941,"name":"string","nodeType":"ElementaryTypeName","src":"2776:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2705:95:43"},"returnParameters":{"id":41944,"nodeType":"ParameterList","parameters":[],"src":"2822:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":41985,"nodeType":"FunctionDefinition","src":"3373:321:43","nodes":[],"body":{"id":41984,"nodeType":"Block","src":"3560:134:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":41970,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41966,"src":"3586:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":41971,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3595:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3599:6:43","memberName":"sender","nodeType":"MemberAccess","src":"3595:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41973,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41958,"src":"3607:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41969,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40304,"src":"3570:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":41974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3570:44:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41975,"nodeType":"ExpressionStatement","src":"3570:44:43"},{"expression":{"arguments":[{"id":41977,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41958,"src":"3632:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":41978,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41960,"src":"3640:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41979,"name":"beneficiaryName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41962,"src":"3653:15:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":41980,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41964,"src":"3670:7:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":41981,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41966,"src":"3679:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":41976,"name":"_retire","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42137,"src":"3624:7:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_string_calldata_ptr_$_t_string_calldata_ptr_$_t_address_$returns$__$","typeString":"function (uint256,address,string calldata,string calldata,address)"}},"id":41982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3624:63:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41983,"nodeType":"ExpressionStatement","src":"3624:63:43"}]},"documentation":{"id":41956,"nodeType":"StructuredDocumentation","src":"2911:457:43","text":"@notice Retire tokens from another account, requires allowance.\n @param amount Amount of tokens to retire.\n @param beneficiary Account to permanently claim the benefit of the retired credits.\n @param beneficiaryName Name of the individual or organization claiming the benefit of the retired credits.\n @param message Message to include with the retirement.\n @param account Account that holds the credits to retire."},"functionSelector":"e4f98d2b","implemented":true,"kind":"function","modifiers":[],"name":"retireFrom","nameLocation":"3382:10:43","parameters":{"id":41967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41958,"mutability":"mutable","name":"amount","nameLocation":"3410:6:43","nodeType":"VariableDeclaration","scope":41985,"src":"3402:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41957,"name":"uint256","nodeType":"ElementaryTypeName","src":"3402:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41960,"mutability":"mutable","name":"beneficiary","nameLocation":"3434:11:43","nodeType":"VariableDeclaration","scope":41985,"src":"3426:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41959,"name":"address","nodeType":"ElementaryTypeName","src":"3426:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41962,"mutability":"mutable","name":"beneficiaryName","nameLocation":"3471:15:43","nodeType":"VariableDeclaration","scope":41985,"src":"3455:31:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":41961,"name":"string","nodeType":"ElementaryTypeName","src":"3455:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41964,"mutability":"mutable","name":"message","nameLocation":"3512:7:43","nodeType":"VariableDeclaration","scope":41985,"src":"3496:23:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":41963,"name":"string","nodeType":"ElementaryTypeName","src":"3496:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41966,"mutability":"mutable","name":"account","nameLocation":"3537:7:43","nodeType":"VariableDeclaration","scope":41985,"src":"3529:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41965,"name":"address","nodeType":"ElementaryTypeName","src":"3529:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3392:158:43"},"returnParameters":{"id":41968,"nodeType":"ParameterList","parameters":[],"src":"3560:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42001,"nodeType":"FunctionDefinition","src":"3952:109:43","nodes":[],"body":{"id":42000,"nodeType":"Block","src":"4022:39:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":41996,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41990,"src":"4038:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41997,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41988,"src":"4047:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41995,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40170,"src":"4032:5:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":41998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41999,"nodeType":"ExpressionStatement","src":"4032:22:43"}]},"documentation":{"id":41986,"nodeType":"StructuredDocumentation","src":"3700:247:43","text":"@dev Remove from circulation without environmental claims.\n Invoked by parent factory only.\n Parent factory emits `Canceled` event which includes a cancellation reason.\n Paused credits can still be canceled."},"functionSelector":"57d682c4","implemented":true,"kind":"function","modifiers":[{"id":41993,"kind":"modifierInvocation","modifierName":{"id":41992,"name":"onlyFactory","nameLocations":["4010:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":41911,"src":"4010:11:43"},"nodeType":"ModifierInvocation","src":"4010:11:43"}],"name":"cancel","nameLocation":"3961:6:43","parameters":{"id":41991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41988,"mutability":"mutable","name":"amount","nameLocation":"3976:6:43","nodeType":"VariableDeclaration","scope":42001,"src":"3968:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41987,"name":"uint256","nodeType":"ElementaryTypeName","src":"3968:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41990,"mutability":"mutable","name":"account","nameLocation":"3992:7:43","nodeType":"VariableDeclaration","scope":42001,"src":"3984:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41989,"name":"address","nodeType":"ElementaryTypeName","src":"3984:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3967:33:43"},"returnParameters":{"id":41994,"nodeType":"ParameterList","parameters":[],"src":"4022:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42010,"nodeType":"FunctionDefinition","src":"4067:63:43","nodes":[],"body":{"id":42009,"nodeType":"Block","src":"4105:25:43","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42006,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40502,"src":"4115:6:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4115:8:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42008,"nodeType":"ExpressionStatement","src":"4115:8:43"}]},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":42004,"kind":"modifierInvocation","modifierName":{"id":42003,"name":"onlyFactory","nameLocations":["4093:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":41911,"src":"4093:11:43"},"nodeType":"ModifierInvocation","src":"4093:11:43"}],"name":"pause","nameLocation":"4076:5:43","parameters":{"id":42002,"nodeType":"ParameterList","parameters":[],"src":"4081:2:43"},"returnParameters":{"id":42005,"nodeType":"ParameterList","parameters":[],"src":"4105:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42019,"nodeType":"FunctionDefinition","src":"4136:67:43","nodes":[],"body":{"id":42018,"nodeType":"Block","src":"4176:27:43","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42015,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40526,"src":"4186:8:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4186:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42017,"nodeType":"ExpressionStatement","src":"4186:10:43"}]},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":42013,"kind":"modifierInvocation","modifierName":{"id":42012,"name":"onlyFactory","nameLocations":["4164:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":41911,"src":"4164:11:43"},"nodeType":"ModifierInvocation","src":"4164:11:43"}],"name":"unpause","nameLocation":"4145:7:43","parameters":{"id":42011,"nodeType":"ParameterList","parameters":[],"src":"4152:2:43"},"returnParameters":{"id":42014,"nodeType":"ParameterList","parameters":[],"src":"4176:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42036,"nodeType":"FunctionDefinition","src":"4209:111:43","nodes":[],"body":{"id":42035,"nodeType":"Block","src":"4286:34:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":42031,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42021,"src":"4302:2:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42032,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42023,"src":"4306:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42030,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40137,"src":"4296:5:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":42033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4296:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42034,"nodeType":"ExpressionStatement","src":"4296:17:43"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":42026,"kind":"modifierInvocation","modifierName":{"id":42025,"name":"onlyFactory","nameLocations":["4260:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":41911,"src":"4260:11:43"},"nodeType":"ModifierInvocation","src":"4260:11:43"},{"id":42028,"kind":"modifierInvocation","modifierName":{"id":42027,"name":"whenNotPaused","nameLocations":["4272:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"4272:13:43"},"nodeType":"ModifierInvocation","src":"4272:13:43"}],"name":"mint","nameLocation":"4218:4:43","parameters":{"id":42024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42021,"mutability":"mutable","name":"to","nameLocation":"4231:2:43","nodeType":"VariableDeclaration","scope":42036,"src":"4223:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42020,"name":"address","nodeType":"ElementaryTypeName","src":"4223:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42023,"mutability":"mutable","name":"amount","nameLocation":"4243:6:43","nodeType":"VariableDeclaration","scope":42036,"src":"4235:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42022,"name":"uint256","nodeType":"ElementaryTypeName","src":"4235:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4222:28:43"},"returnParameters":{"id":42029,"nodeType":"ParameterList","parameters":[],"src":"4286:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42056,"nodeType":"FunctionDefinition","src":"4420:149:43","nodes":[],"body":{"id":42055,"nodeType":"Block","src":"4519:50:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":42051,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42039,"src":"4551:2:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42052,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42041,"src":"4555:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42049,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4536:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CreditToken_$42138_$","typeString":"type(contract super CreditToken)"}},"id":42050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4542:8:43","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39885,"src":"4536:14:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":42053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4536:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":42048,"id":42054,"nodeType":"Return","src":"4529:33:43"}]},"baseFunctions":[39885],"documentation":{"id":42037,"nodeType":"StructuredDocumentation","src":"4326:89:43","text":"@dev Override of ERC20Upgradeable transfer function to prevent transfers when paused."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[{"id":42045,"kind":"modifierInvocation","modifierName":{"id":42044,"name":"whenNotPaused","nameLocations":["4490:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"4490:13:43"},"nodeType":"ModifierInvocation","src":"4490:13:43"}],"name":"transfer","nameLocation":"4429:8:43","overrides":{"id":42043,"nodeType":"OverrideSpecifier","overrides":[],"src":"4481:8:43"},"parameters":{"id":42042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42039,"mutability":"mutable","name":"to","nameLocation":"4446:2:43","nodeType":"VariableDeclaration","scope":42056,"src":"4438:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42038,"name":"address","nodeType":"ElementaryTypeName","src":"4438:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42041,"mutability":"mutable","name":"amount","nameLocation":"4458:6:43","nodeType":"VariableDeclaration","scope":42056,"src":"4450:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42040,"name":"uint256","nodeType":"ElementaryTypeName","src":"4450:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4437:28:43"},"returnParameters":{"id":42048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42047,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42056,"src":"4513:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":42046,"name":"bool","nodeType":"ElementaryTypeName","src":"4513:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4512:6:43"},"scope":42138,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":42079,"nodeType":"FunctionDefinition","src":"4673:221:43","nodes":[],"body":{"id":42078,"nodeType":"Block","src":"4834:60:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":42073,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42059,"src":"4870:4:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42074,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42061,"src":"4876:2:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42075,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42063,"src":"4880:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42071,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4851:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CreditToken_$42138_$","typeString":"type(contract super CreditToken)"}},"id":42072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4857:12:43","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":39965,"src":"4851:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":42076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4851:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":42070,"id":42077,"nodeType":"Return","src":"4844:43:43"}]},"baseFunctions":[39965],"documentation":{"id":42057,"nodeType":"StructuredDocumentation","src":"4575:93:43","text":"@dev Override of ERC20Upgradeable transferFrom function to prevent transfers when paused."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[{"id":42067,"kind":"modifierInvocation","modifierName":{"id":42066,"name":"whenNotPaused","nameLocations":["4793:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"4793:13:43"},"nodeType":"ModifierInvocation","src":"4793:13:43"}],"name":"transferFrom","nameLocation":"4682:12:43","overrides":{"id":42065,"nodeType":"OverrideSpecifier","overrides":[],"src":"4776:8:43"},"parameters":{"id":42064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42059,"mutability":"mutable","name":"from","nameLocation":"4703:4:43","nodeType":"VariableDeclaration","scope":42079,"src":"4695:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42058,"name":"address","nodeType":"ElementaryTypeName","src":"4695:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42061,"mutability":"mutable","name":"to","nameLocation":"4717:2:43","nodeType":"VariableDeclaration","scope":42079,"src":"4709:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42060,"name":"address","nodeType":"ElementaryTypeName","src":"4709:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42063,"mutability":"mutable","name":"amount","nameLocation":"4729:6:43","nodeType":"VariableDeclaration","scope":42079,"src":"4721:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42062,"name":"uint256","nodeType":"ElementaryTypeName","src":"4721:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4694:42:43"},"returnParameters":{"id":42070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42079,"src":"4824:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":42068,"name":"bool","nodeType":"ElementaryTypeName","src":"4824:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4823:6:43"},"scope":42138,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":42137,"nodeType":"FunctionDefinition","src":"5339:535:43","nodes":[],"body":{"id":42136,"nodeType":"Block","src":"5537:337:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":42098,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42082,"src":"5570:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42095,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"5547:8:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5556:13:43","memberName":"notZeroAmount","nodeType":"MemberAccess","referencedDeclaration":42842,"src":"5547:22:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":42099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42100,"nodeType":"ExpressionStatement","src":"5547:30:43"},{"expression":{"arguments":[{"id":42104,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42084,"src":"5611:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42101,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"5587:8:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5596:14:43","memberName":"notZeroAddress","nodeType":"MemberAccess","referencedDeclaration":42827,"src":"5587:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":42105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5587:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42106,"nodeType":"ExpressionStatement","src":"5587:36:43"},{"expression":{"arguments":[{"id":42110,"name":"beneficiaryName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42086,"src":"5652:15:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42111,"name":"BENEFICIARY_NAME_MAX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41877,"src":"5669:20:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42107,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"5633:8:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5642:9:43","memberName":"maxLength","nodeType":"MemberAccess","referencedDeclaration":42863,"src":"5633:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":42112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5633:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42113,"nodeType":"ExpressionStatement","src":"5633:57:43"},{"expression":{"arguments":[{"id":42117,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42088,"src":"5719:7:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42118,"name":"RETIRE_MESSAGE_MAX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41881,"src":"5728:18:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42114,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"5700:8:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5709:9:43","memberName":"maxLength","nodeType":"MemberAccess","referencedDeclaration":42863,"src":"5700:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":42119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:47:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42120,"nodeType":"ExpressionStatement","src":"5700:47:43"},{"expression":{"arguments":[{"id":42122,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42090,"src":"5763:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42123,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42082,"src":"5772:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42121,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40170,"src":"5757:5:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":42124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5757:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42125,"nodeType":"ExpressionStatement","src":"5757:22:43"},{"eventCall":{"arguments":[{"id":42127,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42082,"src":"5802:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":42128,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42084,"src":"5810:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42129,"name":"beneficiaryName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42086,"src":"5823:15:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42130,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42088,"src":"5840:7:43","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"arguments":[],"expression":{"argumentTypes":[],"id":42131,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39816,"src":"5849:6:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":42132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5849:8:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42133,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42090,"src":"5859:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42126,"name":"Retired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41896,"src":"5794:7:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256,address,string memory,string memory,string memory,address)"}},"id":42134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5794:73:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42135,"nodeType":"EmitStatement","src":"5789:78:43"}]},"documentation":{"id":42080,"nodeType":"StructuredDocumentation","src":"4900:434:43","text":"@dev Internal function to retire tokens.\n @param amount Amount of tokens to retire.\n @param beneficiary Account to permanently claim the benefit of the retired credits.\n @param beneficiaryName Name of the individual or organization claiming the benefit of the retired credits.\n @param message Message to include with the retirement.\n @param account Account that holds the credits to retire."},"implemented":true,"kind":"function","modifiers":[{"id":42093,"kind":"modifierInvocation","modifierName":{"id":42092,"name":"whenNotPaused","nameLocations":["5523:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"5523:13:43"},"nodeType":"ModifierInvocation","src":"5523:13:43"}],"name":"_retire","nameLocation":"5348:7:43","parameters":{"id":42091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42082,"mutability":"mutable","name":"amount","nameLocation":"5373:6:43","nodeType":"VariableDeclaration","scope":42137,"src":"5365:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42081,"name":"uint256","nodeType":"ElementaryTypeName","src":"5365:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42084,"mutability":"mutable","name":"beneficiary","nameLocation":"5397:11:43","nodeType":"VariableDeclaration","scope":42137,"src":"5389:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42083,"name":"address","nodeType":"ElementaryTypeName","src":"5389:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42086,"mutability":"mutable","name":"beneficiaryName","nameLocation":"5434:15:43","nodeType":"VariableDeclaration","scope":42137,"src":"5418:31:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42085,"name":"string","nodeType":"ElementaryTypeName","src":"5418:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42088,"mutability":"mutable","name":"message","nameLocation":"5475:7:43","nodeType":"VariableDeclaration","scope":42137,"src":"5459:23:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42087,"name":"string","nodeType":"ElementaryTypeName","src":"5459:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42090,"mutability":"mutable","name":"account","nameLocation":"5500:7:43","nodeType":"VariableDeclaration","scope":42137,"src":"5492:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42089,"name":"address","nodeType":"ElementaryTypeName","src":"5492:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5355:158:43"},"returnParameters":{"id":42094,"nodeType":"ParameterList","parameters":[],"src":"5537:0:43"},"scope":42138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":41866,"name":"Initializable","nameLocations":["850:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":39506,"src":"850:13:43"},"id":41867,"nodeType":"InheritanceSpecifier","src":"850:13:43"},{"baseName":{"id":41868,"name":"ERC20Upgradeable","nameLocations":["865:16:43"],"nodeType":"IdentifierPath","referencedDeclaration":40305,"src":"865:16:43"},"id":41869,"nodeType":"InheritanceSpecifier","src":"865:16:43"},{"baseName":{"id":41870,"name":"PausableUpgradeable","nameLocations":["883:19:43"],"nodeType":"IdentifierPath","referencedDeclaration":40527,"src":"883:19:43"},"id":41871,"nodeType":"InheritanceSpecifier","src":"883:19:43"},{"baseName":{"id":41872,"name":"OwnableUpgradeable","nameLocations":["904:18:43"],"nodeType":"IdentifierPath","referencedDeclaration":39252,"src":"904:18:43"},"id":41873,"nodeType":"InheritanceSpecifier","src":"904:18:43"}],"canonicalName":"CreditToken","contractDependencies":[],"contractKind":"contract","documentation":{"id":41865,"nodeType":"StructuredDocumentation","src":"522:304:43","text":"@title CMARK CreditToken\n @author Atmosfearful\n @notice ERC20 representing issued carbon credits.\n Credit holders can retire or transfer their balance.\n The contract is managed by the parent CreditTokenFactory, which retains the power to issue, cancel, or pause credits."},"fullyImplemented":true,"linearizedBaseContracts":[42138,39252,40527,40305,40727,41459,41433,40351,39506],"name":"CreditToken","nameLocation":"835:11:43","scope":42139,"usedErrors":[39088,39093,39269,39272,40390,40393,40697,40702,40707,40716,40721,40726,42783,42786,42804],"usedEvents":[39099,39277,40382,40387,41367,41376,41896]}],"license":"UNLICENSED"},"id":43} \ No newline at end of file +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"MaxLength","type":"error"},{"inputs":[],"name":"MinLength","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":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"string","name":"beneficiaryName","type":"string"},{"indexed":false,"internalType":"string","name":"message","type":"string"},{"indexed":true,"internalType":"string","name":"creditId","type":"string"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"string","name":"consumptionCountryCode","type":"string"}],"name":"Retired","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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"},{"internalType":"address","name":"account","type":"address"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"parentFactory","type":"address"},{"internalType":"string","name":"creditId","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"string","name":"beneficiaryName","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"string","name":"consumptionCountryCode","type":"string"}],"name":"retire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"string","name":"beneficiaryName","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"string","name":"consumptionCountryCode","type":"string"},{"internalType":"address","name":"account","type":"address"}],"name":"retireFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}] diff --git a/lib/abis/CarbonmarkCreditTokenFactory.json b/lib/abis/CarbonmarkCreditTokenFactory.json index f7dc51ad..a4f767e6 100644 --- a/lib/abis/CarbonmarkCreditTokenFactory.json +++ b/lib/abis/CarbonmarkCreditTokenFactory.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beacon","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelCredits","inputs":[{"name":"creditId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"reason","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"creditAddressToId","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"creditAddresses","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"creditIdToAddress","inputs":[{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deployNewBeacon","inputs":[{"name":"creditTokenImpl","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllCreditAddresses","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"creditTokenImpl","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"issueCredits","inputs":[{"name":"creditId","type":"string","internalType":"string"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseCredit","inputs":[{"name":"creditId","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpauseCredit","inputs":[{"name":"creditId","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeBeacon","inputs":[{"name":"creditTokenImpl","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Canceled","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"reason","type":"string","indexed":false,"internalType":"string"},{"name":"creditId","type":"string","indexed":true,"internalType":"string"},{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Issued","inputs":[{"name":"creditId","type":"string","indexed":true,"internalType":"string"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"creditTokenAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CreditDoesNotExist","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EmptyReason","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MaxLength","inputs":[]},{"type":"error","name":"NoFactoryIssuance","inputs":[]},{"type":"error","name":"NoSelfIssuance","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotPendingOwner","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroAmount","inputs":[]}],"bytecode":{"object":"0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516124d26100f95f395f818161100b01528181611034015261117801526124d25ff3fe60806040526004361061013c575f3560e01c8063715018a6116100b3578063ad3cb1cc1161006d578063ad3cb1cc14610378578063d0fc205c146103a8578063d69e3ba6146103c7578063e30c397814610406578063f2fde38b14610425578063f319969514610444575f5ffd5b8063715018a6146102c257806378017977146102d657806379ba5097146102f55780638456cb59146103095780638da5cb5b1461031d5780639c1e1e4d14610359575f5ffd5b8063485cc95511610104578063485cc955146101ea5780634f1ef2861461020957806352d1902d1461021c57806353a612591461023e57806359659e901461025d5780635c975abb14610294575f5ffd5b806317528e031461014057806317d4ecaa1461016a5780631bce45831461018b5780633cc42c4c146101aa5780633f4ba83a146101d6575b5f5ffd5b34801561014b575f5ffd5b50610154610463565b6040516101619190611528565b60405180910390f35b348015610175575f5ffd5b506101896101843660046115d3565b6104c3565b005b348015610196575f5ffd5b506101896101a536600461165b565b61060d565b3480156101b5575f5ffd5b506101c96101c436600461165b565b61067e565b60405161016191906116a2565b3480156101e1575f5ffd5b50610189610715565b3480156101f5575f5ffd5b506101896102043660046116b4565b610727565b610189610217366004611770565b6108a7565b348015610227575f5ffd5b506102306108c6565b604051908152602001610161565b348015610249575f5ffd5b506101896102583660046117ce565b6108e1565b348015610268575f5ffd5b5060035461027c906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b34801561029f575f5ffd5b505f51602061247d5f395f51905f525460ff166040519015158152602001610161565b3480156102cd575f5ffd5b50610189610932565b3480156102e1575f5ffd5b506101896102f03660046117ce565b610943565b348015610300575f5ffd5b50610189610994565b348015610314575f5ffd5b506101896109e6565b348015610328575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027c565b348015610364575f5ffd5b5061018961037336600461165b565b6109f6565b348015610383575f5ffd5b506101c9604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156103b3575f5ffd5b5061027c6103c236600461180d565b610a6b565b3480156103d2575f5ffd5b5061027c6103e1366004611824565b80516020818301810180515f825292820191909301209152546001600160a01b031681565b348015610411575f5ffd5b5060045461027c906001600160a01b031681565b348015610430575f5ffd5b5061018961043f36600461165b565b610a93565b34801561044f575f5ffd5b5061018961045e366004611871565b610abd565b606060028054806020026020016040519081016040528092919081815260200182805480156104b957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161049b575b5050505050905090565b6104cb610e29565b6104d3610e89565b6104dc84610eb9565b61051e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101009250610edc915050565b5f82900361053f5760405163db72b02360e01b815260040160405180910390fd5b6105498686610efe565b6040516315f5a0b160e21b8152600481018690526001600160a01b03838116602483015291909116906357d682c4906044015f604051808303815f87803b158015610592575f5ffd5b505af11580156105a4573d5f5f3e3d5ffd5b50505050806001600160a01b031686866040516105c29291906118ca565b60405180910390207fc8ded87dca1c06d31a7c5e58b55909b294b937bc640451a37f7ca84222a134768686866040516105fd93929190611901565b60405180910390a3505050505050565b610615610e29565b61061e81610f51565b600354604051631b2ce7f360e11b81526001600160a01b038381166004830152909116908190633659cfe6906024015f604051808303815f87803b158015610664575f5ffd5b505af1158015610676573d5f5f3e3d5ffd5b505050505050565b60016020525f9081526040902080546106969061191a565b80601f01602080910402602001604051908101604052809291908181526020018280546106c29061191a565b801561070d5780601f106106e45761010080835404028352916020019161070d565b820191905f5260205f20905b8154815290600101906020018083116106f057829003601f168201915b505050505081565b61071d610e29565b610725610f78565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561076c5750825b90505f8267ffffffffffffffff1660011480156107885750303b155b905081158015610796575080155b156107b45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156107de57845460ff60401b1916600160401b1785555b6107e787610fd7565b6107ef610fe8565b6107f7610ff8565b5f86306040516108069061150e565b6001600160a01b03928316815291166020820152604001604051809103905ff080158015610836573d5f5f3e3d5ffd5b50600380546001600160a01b0319166001600160a01b039290921691909117905550831561089e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6108af611000565b6108b8826110a4565b6108c282826110ac565b5050565b5f6108cf61116d565b505f51602061245d5f395f51905f5290565b6108e9610e29565b6108f1610e89565b6108fb8282610efe565b6001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610664575f5ffd5b61093a610e29565b6107255f6111b6565b61094b610e29565b610953610e89565b61095d8282610efe565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610664575f5ffd5b6004546001600160a01b031633146109bf57604051630614e5c760e21b815260040160405180910390fd5b6004546109d4906001600160a01b03166111b6565b600480546001600160a01b0319169055565b6109ee610e29565b610725611226565b6109fe610e29565b610a0781610f51565b5f8130604051610a169061150e565b6001600160a01b03928316815291166020820152604001604051809103905ff080158015610a46573d5f5f3e3d5ffd5b50600380546001600160a01b0319166001600160a01b03929092169190911790555050565b60028181548110610a7a575f80fd5b5f918252602090912001546001600160a01b0316905081565b610a9b610e29565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610ac5610e29565b610acd610e89565b610ad681610f51565b610adf82610eb9565b306001600160a01b03821603610b08576040516362b2197160e11b815260040160405180910390fd5b6001600160a01b0381165f9081526001602052604090208054610b2a9061191a565b159050610b4a5760405163096a9ddb60e21b815260040160405180910390fd5b5f5f8585604051610b5c9291906118ca565b908152604051908190036020019020546001600160a01b031690508015610c3d576040516340c10f1960e01b81526001600160a01b038381166004830152602482018590528216906340c10f19906044015f604051808303815f87803b158015610bc4575f5ffd5b505af1158015610bd6573d5f5f3e3d5ffd5b50505050806001600160a01b0316826001600160a01b03168686604051610bfe9291906118ca565b604051908190038120868252907f30fe01827ac796747c8d3e64aedb0619c3ec05c3679d3dc86b6c6e88977368469060200160405180910390a4610e22565b5f308686604051602401610c5393929190611952565b60408051601f198184030181529181526020820180516001600160e01b03166379ccf11760e11b17905260035490519192505f916001600160a01b03909116908390610c9e9061151b565b610ca9929190611976565b604051809103905ff080158015610cc2573d5f5f3e3d5ffd5b5090505f819050805f8989604051610cdb9291906118ca565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790559183165f908152600190915220610d1e888a836119dd565b50600280546001810182555f919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038381169182179092556040516340c10f1960e01b8152918716600483015260248201889052906340c10f19906044015f604051808303815f87803b158015610daa575f5ffd5b505af1158015610dbc573d5f5f3e3d5ffd5b50505050806001600160a01b0316856001600160a01b03168989604051610de49291906118ca565b604051908190038120898252907f30fe01827ac796747c8d3e64aedb0619c3ec05c3679d3dc86b6c6e88977368469060200160405180910390a45050505b5050505050565b33610e5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107255760405163118cdaa760e01b81523360048201526024015b60405180910390fd5b5f51602061247d5f395f51905f525460ff16156107255760405163d93c066560e01b815260040160405180910390fd5b805f03610ed957604051631f2a200560e01b815260040160405180910390fd5b50565b80825111156108c257604051631dfb275f60e21b815260040160405180910390fd5b5f5f5f8484604051610f119291906118ca565b908152604051908190036020019020546001600160a01b0316905080610f4a5760405163dc5ccecd60e01b815260040160405180910390fd5b9392505050565b6001600160a01b038116610ed95760405163d92e233d60e01b815260040160405180910390fd5b610f8061126e565b5f51602061247d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610fdf61129d565b610ed9816112e6565b610ff061129d565b610725611320565b61072561129d565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061108657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661107a5f51602061245d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156107255760405163703e46dd60e11b815260040160405180910390fd5b610ed9610e29565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611106575060408051601f3d908101601f1916820190925261110391810190611a97565b60015b61112e57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e80565b5f51602061245d5f395f51905f52811461115e57604051632a87526960e21b815260048101829052602401610e80565b6111688383611340565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107255760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61122e610e89565b5f51602061247d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610fb9565b5f51602061247d5f395f51905f525460ff1661072557604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661072557604051631afcd79f60e31b815260040160405180910390fd5b6112ee61129d565b6001600160a01b03811661131757604051631e4fbdf760e01b81525f6004820152602401610e80565b610ed9816111b6565b61132861129d565b5f51602061247d5f395f51905f52805460ff19169055565b61134982611395565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561138d5761116882826113f8565b6108c261146a565b806001600160a01b03163b5f036113ca57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e80565b5f51602061245d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114149190611aae565b5f60405180830381855af49150503d805f811461144c576040519150601f19603f3d011682016040523d82523d5f602084013e611451565b606091505b5091509150611461858383611489565b95945050505050565b34156107255760405163b398979f60e01b815260040160405180910390fd5b60608261149e57611499826114e5565b610f4a565b81511580156114b557506001600160a01b0384163b155b156114de57604051639996b31560e01b81526001600160a01b0385166004820152602401610e80565b5092915050565b8051156114f55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61042180611ac583390190565b61057780611ee683390190565b602080825282518282018190525f918401906040840190835b818110156115685783516001600160a01b0316835260209384019390920191600101611541565b509095945050505050565b5f5f83601f840112611583575f5ffd5b50813567ffffffffffffffff81111561159a575f5ffd5b6020830191508360208285010111156115b1575f5ffd5b9250929050565b80356001600160a01b03811681146115ce575f5ffd5b919050565b5f5f5f5f5f5f608087890312156115e8575f5ffd5b863567ffffffffffffffff8111156115fe575f5ffd5b61160a89828a01611573565b90975095505060208701359350604087013567ffffffffffffffff811115611630575f5ffd5b61163c89828a01611573565b909450925061164f9050606088016115b8565b90509295509295509295565b5f6020828403121561166b575f5ffd5b610f4a826115b8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610f4a6020830184611674565b5f5f604083850312156116c5575f5ffd5b6116ce836115b8565b91506116dc602084016115b8565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115611713576117136116e5565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715611742576117426116e5565b604052838152905080828401851015611759575f5ffd5b838360208301375f60208583010152509392505050565b5f5f60408385031215611781575f5ffd5b61178a836115b8565b9150602083013567ffffffffffffffff8111156117a5575f5ffd5b8301601f810185136117b5575f5ffd5b6117c4858235602084016116f9565b9150509250929050565b5f5f602083850312156117df575f5ffd5b823567ffffffffffffffff8111156117f5575f5ffd5b61180185828601611573565b90969095509350505050565b5f6020828403121561181d575f5ffd5b5035919050565b5f60208284031215611834575f5ffd5b813567ffffffffffffffff81111561184a575f5ffd5b8201601f8101841361185a575f5ffd5b611869848235602084016116f9565b949350505050565b5f5f5f5f60608587031215611884575f5ffd5b843567ffffffffffffffff81111561189a575f5ffd5b6118a687828801611573565b909550935050602085013591506118bf604086016115b8565b905092959194509250565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f6114616040830184866118d9565b600181811c9082168061192e57607f821691505b60208210810361194c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b03841681526040602082018190525f9061146190830184866118d9565b6001600160a01b03831681526040602082018190525f9061186990830184611674565b601f82111561116857805f5260205f20601f840160051c810160208510156119be5750805b601f840160051c820191505b81811015610e22575f81556001016119ca565b67ffffffffffffffff8311156119f5576119f56116e5565b611a0983611a03835461191a565b83611999565b5f601f841160018114611a3a575f8515611a235750838201355b5f19600387901b1c1916600186901b178355610e22565b5f83815260208120601f198716915b82811015611a695786850135825560209485019460019092019101611a49565b5086821015611a85575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215611aa7575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe608060405234801561000f575f5ffd5b5060405161042138038061042183398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f5ffd5b919050565b5f5f60408385031215610170575f5ffd5b61017983610144565b915061018760208401610144565b90509250929050565b6102848061019d5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c610067366004610221565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c6100d6565b5f546001600160a01b031661007b565b61006c6100bd366004610221565b6100e9565b6100ca610128565b6100d381610154565b50565b6100de610128565b6100e75f6101d2565b565b6100f1610128565b6001600160a01b03811661011f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100d3816101d2565b5f546001600160a01b031633146100e75760405163118cdaa760e01b8152336004820152602401610116565b806001600160a01b03163b5f036101895760405163211eb15960e21b81526001600160a01b0382166004820152602401610116565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610231575f5ffd5b81356001600160a01b0381168114610247575f5ffd5b939250505056fea26469706673582212203a347609cb05985b68c63f07feffcb632d7506ef257ced194c754e0f24f0299964736f6c634300081b003360a060405260405161057738038061057783398101604081905261002291610354565b61002c828261003e565b506001600160a01b0316608052610445565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e49190610416565b82610209565b505050565b6100f761027c565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d29190610416565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f5f846001600160a01b031684604051610225919061042f565b5f60405180830381855af49150503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50909250905061027385838361029d565b95945050505050565b341561029b5760405163b398979f60e01b815260040160405180910390fd5b565b6060826102b2576102ad826102fc565b6102f5565b81511580156102c957506001600160a01b0384163b155b156102f257604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b50805b9392505050565b80511561030c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461033b575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610365575f5ffd5b61036e83610325565b60208401519092506001600160401b03811115610389575f5ffd5b8301601f81018513610399575f5ffd5b80516001600160401b038111156103b2576103b2610340565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103e0576103e0610340565b6040528181528282016020018710156103f7575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f60208284031215610426575f5ffd5b6102f582610325565b5f82518060208501845e5f920191825250919050565b60805161011b61045c5f395f601d015261011b5ff3fe6080604052600a600c565b005b60186014601a565b609d565b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156076573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906098919060ba565b905090565b365f5f375f5f365f845af43d5f5f3e80801560b6573d5ff35b3d5ffd5b5f6020828403121560c9575f5ffd5b81516001600160a01b038116811460de575f5ffd5b939250505056fea2646970667358221220cc6700ef8311f9efb9efe2e33da91138818294b050ded687597e3507cb67df6764736f6c634300081b0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220de3b89c47dfe030e89e9b1111bb92f4b9e025e95bbb55ca794835d5db2aab2c964736f6c634300081b0033","sourceMap":"1148:8064:44:-:0;;;1171:4:25;1128:48;;2906:53:44;;;;;;;;;-1:-1:-1;2930:22:44;:20;:22::i;:::-;1148:8064;;7711:422:24;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:24;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:24;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:24;-1:-1:-1;;;;;8035:33:24;;;;;8087:29;;158:50:51;;;8087:29:24;;146:2:51;131:18;8087:29:24;;;;;;;7981:146;7760:373;7711:422::o;14:200:51:-;1148:8064:44;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061013c575f3560e01c8063715018a6116100b3578063ad3cb1cc1161006d578063ad3cb1cc14610378578063d0fc205c146103a8578063d69e3ba6146103c7578063e30c397814610406578063f2fde38b14610425578063f319969514610444575f5ffd5b8063715018a6146102c257806378017977146102d657806379ba5097146102f55780638456cb59146103095780638da5cb5b1461031d5780639c1e1e4d14610359575f5ffd5b8063485cc95511610104578063485cc955146101ea5780634f1ef2861461020957806352d1902d1461021c57806353a612591461023e57806359659e901461025d5780635c975abb14610294575f5ffd5b806317528e031461014057806317d4ecaa1461016a5780631bce45831461018b5780633cc42c4c146101aa5780633f4ba83a146101d6575b5f5ffd5b34801561014b575f5ffd5b50610154610463565b6040516101619190611528565b60405180910390f35b348015610175575f5ffd5b506101896101843660046115d3565b6104c3565b005b348015610196575f5ffd5b506101896101a536600461165b565b61060d565b3480156101b5575f5ffd5b506101c96101c436600461165b565b61067e565b60405161016191906116a2565b3480156101e1575f5ffd5b50610189610715565b3480156101f5575f5ffd5b506101896102043660046116b4565b610727565b610189610217366004611770565b6108a7565b348015610227575f5ffd5b506102306108c6565b604051908152602001610161565b348015610249575f5ffd5b506101896102583660046117ce565b6108e1565b348015610268575f5ffd5b5060035461027c906001600160a01b031681565b6040516001600160a01b039091168152602001610161565b34801561029f575f5ffd5b505f51602061247d5f395f51905f525460ff166040519015158152602001610161565b3480156102cd575f5ffd5b50610189610932565b3480156102e1575f5ffd5b506101896102f03660046117ce565b610943565b348015610300575f5ffd5b50610189610994565b348015610314575f5ffd5b506101896109e6565b348015610328575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031661027c565b348015610364575f5ffd5b5061018961037336600461165b565b6109f6565b348015610383575f5ffd5b506101c9604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156103b3575f5ffd5b5061027c6103c236600461180d565b610a6b565b3480156103d2575f5ffd5b5061027c6103e1366004611824565b80516020818301810180515f825292820191909301209152546001600160a01b031681565b348015610411575f5ffd5b5060045461027c906001600160a01b031681565b348015610430575f5ffd5b5061018961043f36600461165b565b610a93565b34801561044f575f5ffd5b5061018961045e366004611871565b610abd565b606060028054806020026020016040519081016040528092919081815260200182805480156104b957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161049b575b5050505050905090565b6104cb610e29565b6104d3610e89565b6104dc84610eb9565b61051e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101009250610edc915050565b5f82900361053f5760405163db72b02360e01b815260040160405180910390fd5b6105498686610efe565b6040516315f5a0b160e21b8152600481018690526001600160a01b03838116602483015291909116906357d682c4906044015f604051808303815f87803b158015610592575f5ffd5b505af11580156105a4573d5f5f3e3d5ffd5b50505050806001600160a01b031686866040516105c29291906118ca565b60405180910390207fc8ded87dca1c06d31a7c5e58b55909b294b937bc640451a37f7ca84222a134768686866040516105fd93929190611901565b60405180910390a3505050505050565b610615610e29565b61061e81610f51565b600354604051631b2ce7f360e11b81526001600160a01b038381166004830152909116908190633659cfe6906024015f604051808303815f87803b158015610664575f5ffd5b505af1158015610676573d5f5f3e3d5ffd5b505050505050565b60016020525f9081526040902080546106969061191a565b80601f01602080910402602001604051908101604052809291908181526020018280546106c29061191a565b801561070d5780601f106106e45761010080835404028352916020019161070d565b820191905f5260205f20905b8154815290600101906020018083116106f057829003601f168201915b505050505081565b61071d610e29565b610725610f78565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561076c5750825b90505f8267ffffffffffffffff1660011480156107885750303b155b905081158015610796575080155b156107b45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156107de57845460ff60401b1916600160401b1785555b6107e787610fd7565b6107ef610fe8565b6107f7610ff8565b5f86306040516108069061150e565b6001600160a01b03928316815291166020820152604001604051809103905ff080158015610836573d5f5f3e3d5ffd5b50600380546001600160a01b0319166001600160a01b039290921691909117905550831561089e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6108af611000565b6108b8826110a4565b6108c282826110ac565b5050565b5f6108cf61116d565b505f51602061245d5f395f51905f5290565b6108e9610e29565b6108f1610e89565b6108fb8282610efe565b6001600160a01b0316638456cb596040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610664575f5ffd5b61093a610e29565b6107255f6111b6565b61094b610e29565b610953610e89565b61095d8282610efe565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610664575f5ffd5b6004546001600160a01b031633146109bf57604051630614e5c760e21b815260040160405180910390fd5b6004546109d4906001600160a01b03166111b6565b600480546001600160a01b0319169055565b6109ee610e29565b610725611226565b6109fe610e29565b610a0781610f51565b5f8130604051610a169061150e565b6001600160a01b03928316815291166020820152604001604051809103905ff080158015610a46573d5f5f3e3d5ffd5b50600380546001600160a01b0319166001600160a01b03929092169190911790555050565b60028181548110610a7a575f80fd5b5f918252602090912001546001600160a01b0316905081565b610a9b610e29565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610ac5610e29565b610acd610e89565b610ad681610f51565b610adf82610eb9565b306001600160a01b03821603610b08576040516362b2197160e11b815260040160405180910390fd5b6001600160a01b0381165f9081526001602052604090208054610b2a9061191a565b159050610b4a5760405163096a9ddb60e21b815260040160405180910390fd5b5f5f8585604051610b5c9291906118ca565b908152604051908190036020019020546001600160a01b031690508015610c3d576040516340c10f1960e01b81526001600160a01b038381166004830152602482018590528216906340c10f19906044015f604051808303815f87803b158015610bc4575f5ffd5b505af1158015610bd6573d5f5f3e3d5ffd5b50505050806001600160a01b0316826001600160a01b03168686604051610bfe9291906118ca565b604051908190038120868252907f30fe01827ac796747c8d3e64aedb0619c3ec05c3679d3dc86b6c6e88977368469060200160405180910390a4610e22565b5f308686604051602401610c5393929190611952565b60408051601f198184030181529181526020820180516001600160e01b03166379ccf11760e11b17905260035490519192505f916001600160a01b03909116908390610c9e9061151b565b610ca9929190611976565b604051809103905ff080158015610cc2573d5f5f3e3d5ffd5b5090505f819050805f8989604051610cdb9291906118ca565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790559183165f908152600190915220610d1e888a836119dd565b50600280546001810182555f919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038381169182179092556040516340c10f1960e01b8152918716600483015260248201889052906340c10f19906044015f604051808303815f87803b158015610daa575f5ffd5b505af1158015610dbc573d5f5f3e3d5ffd5b50505050806001600160a01b0316856001600160a01b03168989604051610de49291906118ca565b604051908190038120898252907f30fe01827ac796747c8d3e64aedb0619c3ec05c3679d3dc86b6c6e88977368469060200160405180910390a45050505b5050505050565b33610e5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107255760405163118cdaa760e01b81523360048201526024015b60405180910390fd5b5f51602061247d5f395f51905f525460ff16156107255760405163d93c066560e01b815260040160405180910390fd5b805f03610ed957604051631f2a200560e01b815260040160405180910390fd5b50565b80825111156108c257604051631dfb275f60e21b815260040160405180910390fd5b5f5f5f8484604051610f119291906118ca565b908152604051908190036020019020546001600160a01b0316905080610f4a5760405163dc5ccecd60e01b815260040160405180910390fd5b9392505050565b6001600160a01b038116610ed95760405163d92e233d60e01b815260040160405180910390fd5b610f8061126e565b5f51602061247d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610fdf61129d565b610ed9816112e6565b610ff061129d565b610725611320565b61072561129d565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061108657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661107a5f51602061245d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156107255760405163703e46dd60e11b815260040160405180910390fd5b610ed9610e29565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611106575060408051601f3d908101601f1916820190925261110391810190611a97565b60015b61112e57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610e80565b5f51602061245d5f395f51905f52811461115e57604051632a87526960e21b815260048101829052602401610e80565b6111688383611340565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107255760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61122e610e89565b5f51602061247d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610fb9565b5f51602061247d5f395f51905f525460ff1661072557604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661072557604051631afcd79f60e31b815260040160405180910390fd5b6112ee61129d565b6001600160a01b03811661131757604051631e4fbdf760e01b81525f6004820152602401610e80565b610ed9816111b6565b61132861129d565b5f51602061247d5f395f51905f52805460ff19169055565b61134982611395565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561138d5761116882826113f8565b6108c261146a565b806001600160a01b03163b5f036113ca57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610e80565b5f51602061245d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114149190611aae565b5f60405180830381855af49150503d805f811461144c576040519150601f19603f3d011682016040523d82523d5f602084013e611451565b606091505b5091509150611461858383611489565b95945050505050565b34156107255760405163b398979f60e01b815260040160405180910390fd5b60608261149e57611499826114e5565b610f4a565b81511580156114b557506001600160a01b0384163b155b156114de57604051639996b31560e01b81526001600160a01b0385166004820152602401610e80565b5092915050565b8051156114f55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61042180611ac583390190565b61057780611ee683390190565b602080825282518282018190525f918401906040840190835b818110156115685783516001600160a01b0316835260209384019390920191600101611541565b509095945050505050565b5f5f83601f840112611583575f5ffd5b50813567ffffffffffffffff81111561159a575f5ffd5b6020830191508360208285010111156115b1575f5ffd5b9250929050565b80356001600160a01b03811681146115ce575f5ffd5b919050565b5f5f5f5f5f5f608087890312156115e8575f5ffd5b863567ffffffffffffffff8111156115fe575f5ffd5b61160a89828a01611573565b90975095505060208701359350604087013567ffffffffffffffff811115611630575f5ffd5b61163c89828a01611573565b909450925061164f9050606088016115b8565b90509295509295509295565b5f6020828403121561166b575f5ffd5b610f4a826115b8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610f4a6020830184611674565b5f5f604083850312156116c5575f5ffd5b6116ce836115b8565b91506116dc602084016115b8565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115611713576117136116e5565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715611742576117426116e5565b604052838152905080828401851015611759575f5ffd5b838360208301375f60208583010152509392505050565b5f5f60408385031215611781575f5ffd5b61178a836115b8565b9150602083013567ffffffffffffffff8111156117a5575f5ffd5b8301601f810185136117b5575f5ffd5b6117c4858235602084016116f9565b9150509250929050565b5f5f602083850312156117df575f5ffd5b823567ffffffffffffffff8111156117f5575f5ffd5b61180185828601611573565b90969095509350505050565b5f6020828403121561181d575f5ffd5b5035919050565b5f60208284031215611834575f5ffd5b813567ffffffffffffffff81111561184a575f5ffd5b8201601f8101841361185a575f5ffd5b611869848235602084016116f9565b949350505050565b5f5f5f5f60608587031215611884575f5ffd5b843567ffffffffffffffff81111561189a575f5ffd5b6118a687828801611573565b909550935050602085013591506118bf604086016115b8565b905092959194509250565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f6114616040830184866118d9565b600181811c9082168061192e57607f821691505b60208210810361194c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160a01b03841681526040602082018190525f9061146190830184866118d9565b6001600160a01b03831681526040602082018190525f9061186990830184611674565b601f82111561116857805f5260205f20601f840160051c810160208510156119be5750805b601f840160051c820191505b81811015610e22575f81556001016119ca565b67ffffffffffffffff8311156119f5576119f56116e5565b611a0983611a03835461191a565b83611999565b5f601f841160018114611a3a575f8515611a235750838201355b5f19600387901b1c1916600186901b178355610e22565b5f83815260208120601f198716915b82811015611a695786850135825560209485019460019092019101611a49565b5086821015611a85575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60208284031215611aa7575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe608060405234801561000f575f5ffd5b5060405161042138038061042183398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f5ffd5b919050565b5f5f60408385031215610170575f5ffd5b61017983610144565b915061018760208401610144565b90509250929050565b6102848061019d5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c610067366004610221565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c6100d6565b5f546001600160a01b031661007b565b61006c6100bd366004610221565b6100e9565b6100ca610128565b6100d381610154565b50565b6100de610128565b6100e75f6101d2565b565b6100f1610128565b6001600160a01b03811661011f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100d3816101d2565b5f546001600160a01b031633146100e75760405163118cdaa760e01b8152336004820152602401610116565b806001600160a01b03163b5f036101895760405163211eb15960e21b81526001600160a01b0382166004820152602401610116565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610231575f5ffd5b81356001600160a01b0381168114610247575f5ffd5b939250505056fea26469706673582212203a347609cb05985b68c63f07feffcb632d7506ef257ced194c754e0f24f0299964736f6c634300081b003360a060405260405161057738038061057783398101604081905261002291610354565b61002c828261003e565b506001600160a01b0316608052610445565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e49190610416565b82610209565b505050565b6100f761027c565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d29190610416565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f5f846001600160a01b031684604051610225919061042f565b5f60405180830381855af49150503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50909250905061027385838361029d565b95945050505050565b341561029b5760405163b398979f60e01b815260040160405180910390fd5b565b6060826102b2576102ad826102fc565b6102f5565b81511580156102c957506001600160a01b0384163b155b156102f257604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b50805b9392505050565b80511561030c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461033b575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610365575f5ffd5b61036e83610325565b60208401519092506001600160401b03811115610389575f5ffd5b8301601f81018513610399575f5ffd5b80516001600160401b038111156103b2576103b2610340565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103e0576103e0610340565b6040528181528282016020018710156103f7575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f60208284031215610426575f5ffd5b6102f582610325565b5f82518060208501845e5f920191825250919050565b60805161011b61045c5f395f601d015261011b5ff3fe6080604052600a600c565b005b60186014601a565b609d565b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156076573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906098919060ba565b905090565b365f5f375f5f365f845af43d5f5f3e80801560b6573d5ff35b3d5ffd5b5f6020828403121560c9575f5ffd5b81516001600160a01b038116811460de575f5ffd5b939250505056fea2646970667358221220cc6700ef8311f9efb9efe2e33da91138818294b050ded687597e3507cb67df6764736f6c634300081b0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220de3b89c47dfe030e89e9b1111bb92f4b9e025e95bbb55ca794835d5db2aab2c964736f6c634300081b0033","sourceMap":"1148:8064:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3460:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5704:463;;;;;;;;;;-1:-1:-1;5704:463:44;;;;;:::i;:::-;;:::i;:::-;;7275:243;;;;;;;;;;-1:-1:-1;7275:243:44;;;;;:::i;:::-;;:::i;1613:51::-;;;;;;;;;;-1:-1:-1;1613:51:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6862:65::-;;;;;;;;;;;;;:::i;2965:378::-;;;;;;;;;;-1:-1:-1;2965:378:44;;;;;:::i;:::-;;:::i;4161:214:25:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;:::-;;;4598:25:51;;;4586:2;4571:18;3708:134:25;4452:177:51;6364:145:44;;;;;;;;;;-1:-1:-1;6364:145:44;;;;;:::i;:::-;;:::i;1883:21::-;;;;;;;;;;-1:-1:-1;1883:21:44;;;;-1:-1:-1;;;;;1883:21:44;;;;;;-1:-1:-1;;;;;5214:32:51;;;5196:51;;5184:2;5169:18;1883:21:44;5050:203:51;2692:145:28;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;2821:9:28;;;2692:145;;5423:14:51;;5416:22;5398:41;;5386:2;5371:18;2692:145:28;5258:187:51;3155:101:23;;;;;;;;;;;;;:::i;6640:149:44:-;;;;;;;;;;-1:-1:-1;6640:149:44;;;;;:::i;:::-;;:::i;8395:193::-;;;;;;;;;;;;;:::i;6795:61::-;;;;;;;;;;;;;:::i;2441:144:23:-;;;;;;;;;;-1:-1:-1;1313:22:23;2570:8;-1:-1:-1;;;;;2570:8:23;2441:144;;8029:310:44;;;;;;;;;;-1:-1:-1;8029:310:44;;;;;:::i;:::-;;:::i;1819:58:25:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:25;;;;;1736:32:44;;;;;;;;;;-1:-1:-1;1736:32:44;;;;;:::i;:::-;;:::i;1467:51::-;;;;;;;;;;-1:-1:-1;1467:51:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1467:51:44;;;1995:27;;;;;;;;;;-1:-1:-1;1995:27:44;;;;-1:-1:-1;;;;;1995:27:44;;;8712:111;;;;;;;;;;-1:-1:-1;8712:111:44;;;;;:::i;:::-;;:::i;3775:1538::-;;;;;;;;;;-1:-1:-1;3775:1538:44;;;;;:::i;:::-;;:::i;3460:113::-;3516:16;3551:15;3544:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3544:22:44;;;;;;;;;;;;;;;;;;;;;;;3460:113;:::o;5704:463::-;2334:13:23;:11;:13::i;:::-;2316:19:28::1;:17;:19::i;:::-;5879:30:44::2;5902:6;5879:22;:30::i;:::-;5919:45;5938:6;;5919:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;1368:3:44::2;::::0;-1:-1:-1;5919:18:44::2;::::0;-1:-1:-1;;5919:45:44:i:2;:::-;6002:1;5978:25:::0;;;5974:58:::2;;6012:20;;-1:-1:-1::0;;;6012:20:44::2;;;;;;;;;;;5974:58;6054:27;6072:8;;6054:17;:27::i;:::-;6042:62;::::0;-1:-1:-1;;;6042:62:44;;::::2;::::0;::::2;6914:25:51::0;;;-1:-1:-1;;;;;6975:32:51;;;6955:18;;;6948:60;6042:47:44;;;::::2;::::0;::::2;::::0;6887:18:51;;6042:62:44::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6154:5;-1:-1:-1::0;;;;;6119:41:44::2;6144:8;;6119:41;;;;;;;:::i;:::-;;;;;;;;;6128:6;6136;;6119:41;;;;;;;;:::i;:::-;;;;;;;;5704:463:::0;;;;;;:::o;7275:243::-;2334:13:23;:11;:13::i;:::-;7352:40:44::1;7376:15;7352:23;:40::i;:::-;7454:6;::::0;7471:40:::1;::::0;-1:-1:-1;;;7471:40:44;;-1:-1:-1;;;;;5214:32:51;;;7471:40:44::1;::::0;::::1;5196:51:51::0;7454:6:44;;::::1;::::0;;;7471:23:::1;::::0;5169:18:51;;7471:40:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7342:176;7275:243:::0;:::o;1613:51::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6862:65::-;2334:13:23;:11;:13::i;:::-;6910:10:44::1;:8;:10::i;:::-;6862:65::o:0;2965:378::-;8870:21:24;4302:15;;-1:-1:-1;;;4302:15:24;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:24;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:24;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:24;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:24;-1:-1:-1;;;5013:22:24;;;4979:67;3063:28:44::1;3078:12;3063:14;:28::i;:::-;3101:17;:15;:17::i;:::-;3128:24;:22;:24::i;:::-;3162:27;3227:15;3264:4;3192:107;;;;;:::i;:::-;-1:-1:-1::0;;;;;8469:32:51;;;8451:51;;8538:32;;8533:2;8518:18;;8511:60;8439:2;8424:18;3192:107:44::1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;3309:6:44::1;:27:::0;;-1:-1:-1;;;;;;3309:27:44::1;-1:-1:-1::0;;;;;3309:27:44;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;5066:101:24;;;;5100:23;;-1:-1:-1;;;;5100:23:24;;;5142:14;;-1:-1:-1;8735:50:51;;5142:14:24;;8723:2:51;8708:18;5142:14:24;;;;;;;5066:101;4092:1081;;;;;2965:378:44;;:::o;4161:214:25:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:25;:::o;6364:145:44:-;2334:13:23;:11;:13::i;:::-;2316:19:28::1;:17;:19::i;:::-;6466:27:44::2;6484:8;;6466:17;:27::i;:::-;-1:-1:-1::0;;;;;6454:46:44::2;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3155:101:23::0;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;6640:149:44:-:0;2334:13:23;:11;:13::i;:::-;2316:19:28::1;:17;:19::i;:::-;6744:27:44::2;6762:8;;6744:17;:27::i;:::-;-1:-1:-1::0;;;;;6732:48:44::2;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8395:193:::0;8459:12;;-1:-1:-1;;;;;8459:12:44;8445:10;:26;8441:63;;8480:24;;-1:-1:-1;;;8480:24:44;;;;;;;;;;;8441:63;8533:12;;8514:32;;-1:-1:-1;;;;;8533:12:44;8514:18;:32::i;:::-;8556:12;:25;;-1:-1:-1;;;;;;8556:25:44;;;8395:193::o;6795:61::-;2334:13:23;:11;:13::i;:::-;6841:8:44::1;:6;:8::i;8029:310::-:0;2334:13:23;:11;:13::i;:::-;8108:40:44::1;8132:15;8108:23;:40::i;:::-;8158:27;8223:15;8260:4;8188:107;;;;;:::i;:::-;-1:-1:-1::0;;;;;8469:32:51;;;8451:51;;8538:32;;8533:2;8518:18;;8511:60;8439:2;8424:18;8188:107:44::1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;8305:6:44::1;:27:::0;;-1:-1:-1;;;;;;8305:27:44::1;-1:-1:-1::0;;;;;8305:27:44;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;8029:310:44:o;1736:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1736:32:44;;-1:-1:-1;1736:32:44;:::o;8712:111::-;2334:13:23;:11;:13::i;:::-;8793:12:44::1;:23:::0;;-1:-1:-1;;;;;;8793:23:44::1;-1:-1:-1::0;;;;;8793:23:44;;;::::1;::::0;;;::::1;::::0;;8712:111::o;3775:1538::-;2334:13:23;:11;:13::i;:::-;2316:19:28::1;:17;:19::i;:::-;3894:27:44::2;3918:2;3894:23;:27::i;:::-;3931:30;3954:6;3931:22;:30::i;:::-;4033:4;-1:-1:-1::0;;;;;4019:19:44;::::2;::::0;4015:58:::2;;4047:26;;-1:-1:-1::0;;;4047:26:44::2;;;;;;;;;;;4015:58;-1:-1:-1::0;;;;;4154:21:44;::::2;;::::0;;;:17:::2;:21;::::0;;;;4148:35;;::::2;::::0;::::2;:::i;:::-;:40:::0;;-1:-1:-1;4144:76:44::2;;4197:23;;-1:-1:-1::0;;;4197:23:44::2;;;;;;;;;;;4144:76;4231:27;4261:17;4279:8;;4261:27;;;;;;;:::i;:::-;::::0;;;::::2;::::0;;;;;::::2;::::0;;;;-1:-1:-1;;;;;4261:27:44::2;::::0;-1:-1:-1;4302:33:44;;4298:1009:::2;;4391:49;::::0;-1:-1:-1;;;4391:49:44;;-1:-1:-1;;;;;8988:32:51;;;4391:49:44::2;::::0;::::2;8970:51:51::0;9037:18;;;9030:34;;;4391:37:44;::::2;::::0;::::2;::::0;8943:18:51;;4391:49:44::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4488:19;-1:-1:-1::0;;;;;4459:49:44::2;4484:2;-1:-1:-1::0;;;;;4459:49:44::2;4466:8;;4459:49;;;;;;;:::i;:::-;;::::0;;;;::::2;::::0;;4598:25:51;;;4459:49:44;::::2;::::0;4586:2:51;4571:18;4459:49:44::2;;;;;;;4298:1009;;;4638:21;4757:4;4845:8;;4662:205;;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;4662:205:44;;::::2;::::0;;;;;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;4662:205:44::2;-1:-1:-1::0;;;4662:205:44::2;::::0;;4928:6:::2;::::0;4912:33;;4662:205;;-1:-1:-1;;;;;;;;4928:6:44;;::::2;::::0;4662:205;;4912:33:::2;::::0;::::2;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;4881:64;;4959:22;4992:16;4959:50;;5053:14;5023:17;5041:8;;5023:27;;;;;;;:::i;:::-;::::0;;;::::2;::::0;;::::2;::::0;;;;;;;;:44;;-1:-1:-1;;;;;;5023:44:44::2;-1:-1:-1::0;;;;;5023:44:44;;::::2;;::::0;;5081:33;;::::2;-1:-1:-1::0;5081:33:44;;;-1:-1:-1;5081:33:44;;;;:44:::2;5117:8:::0;;5081:33;:44:::2;:::i;:::-;-1:-1:-1::0;5139:15:44::2;:36:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;5139:36:44;;;;;::::2;::::0;;-1:-1:-1;;;;;;5139:36:44::2;-1:-1:-1::0;;;;;5139:36:44;;::::2;::::0;;::::2;::::0;;;5189:44:::2;::::0;-1:-1:-1;;;5189:44:44;;8988:32:51;;;5189:44:44::2;::::0;::::2;8970:51:51::0;9037:18;;;9030:34;;;5139:36:44;5189:32:::2;::::0;8943:18:51;;5189:44:44::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5281:14;-1:-1:-1::0;;;;;5252:44:44::2;5277:2;-1:-1:-1::0;;;;;5252:44:44::2;5259:8;;5252:44;;;;;;;:::i;:::-;;::::0;;;;::::2;::::0;;4598:25:51;;;5252:44:44;::::2;::::0;4586:2:51;4571:18;5252:44:44::2;;;;;;;4525:782;;;4298:1009;3884:1429;3775:1538:::0;;;;:::o;2658:162:23:-;966:10:27;2717:7:23;1313:22;2570:8;-1:-1:-1;;;;;2570:8:23;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:23;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:23;;966:10:27;2763:40:23;;;5196:51:51;5169:18;;2763:40:23;;;;;;;;2905:128:28;-1:-1:-1;;;;;;;;;;;2821:9:28;;;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:28;;;;;;;;;;;252:113:47;319:6;329:1;319:11;315:43;;339:19;;-1:-1:-1;;;339:19:47;;;;;;;;;;;315:43;252:113;:::o;371:136::-;470:3;456;450:17;:23;446:54;;;482:18;;-1:-1:-1;;;482:18:47;;;;;;;;;;;8977:233:44;9053:7;9072:12;9087:17;9105:8;;9087:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;9087:27:44;;-1:-1:-1;9087:27:44;9124:58;;9155:27;;-1:-1:-1;;;9155:27:44;;;;;;;;;;;9124:58;9199:4;8977:233;-1:-1:-1;;;8977:233:44:o;126:120:47:-;-1:-1:-1;;;;;192:18:47;;188:51;;219:20;;-1:-1:-1;;;219:20:47;;;;;;;;;;;3674:178:28;2563:16;:14;:16::i;:::-;-1:-1:-1;;;;;;;;;;;3791:17:28;;-1:-1:-1;;3791:17:28::1;::::0;;3823:22:::1;966:10:27::0;3832:12:28::1;3823:22;::::0;-1:-1:-1;;;;;5214:32:51;;;5196:51;;5184:2;5169:18;3823:22:28::1;;;;;;;3722:130;3674:178::o:0;1847:127:23:-;6931:20:24;:18;:20::i;:::-;1929:38:23::1;1954:12;1929:24;:38::i;1836:97:28:-:0;6931:20:24;:18;:20::i;:::-;1899:27:28::1;:25;:27::i;2970:67:25:-:0;6931:20:24;:18;:20::i;4603:312:25:-;4683:4;-1:-1:-1;;;;;4692:6:25;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:25;:32;-1:-1:-1;;;;;;;;;;;2035:53:33;-1:-1:-1;;;;;2035:53:33;;1957:138;4753:32:25;-1:-1:-1;;;;;4753:42:25;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:25;;;;;;;;;;;8887:84:44;2334:13:23;:11;:13::i;6057:538:25:-;6174:17;-1:-1:-1;;;;;6156:50:25;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:25;;;;;;;;-1:-1:-1;;6156:52:25;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:25;;-1:-1:-1;;;;;5214:32:51;;6518:60:25;;;5196:51:51;5169:18;;6518:60:25;5050:203:51;6152:437:25;-1:-1:-1;;;;;;;;;;;6250:40:25;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:25;;;;;4598:25:51;;;4571:18;;6317:34:25;4452:177:51;6246:120:25;6379:54;6409:17;6428:4;6379:29;:54::i;:::-;6209:235;6057:538;;:::o;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:25;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:25;;;;;;;;;;;3774:248:23;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:23;;-1:-1:-1;;;;;3941:19:23;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;3366:176:28:-;2316:19;:17;:19::i;:::-;-1:-1:-1;;;;;;;;;;;3484:16:28;;-1:-1:-1;;3484:16:28::1;3496:4;3484:16;::::0;;3515:20:::1;966:10:27::0;3522:12:28::1;887:96:27::0;3105:126:28;-1:-1:-1;;;;;;;;;;;2821:9:28;;;3163:62;;3199:15;;-1:-1:-1;;;3199:15:28;;;;;;;;;;;7084:141:24;8870:21;8560:40;-1:-1:-1;;;8560:40:24;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:24;;;;;;;;;;;1980:235:23;6931:20:24;:18;:20::i;:::-;-1:-1:-1;;;;;2076:26:23;::::1;2072:95;;2125:31;::::0;-1:-1:-1;;;2125:31:23;;2153:1:::1;2125:31;::::0;::::1;5196:51:51::0;5169:18;;2125:31:23::1;5050:203:51::0;2072:95:23::1;2176:32;2195:12;2176:18;:32::i;1939:156:28:-:0;6931:20:24;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2071:17:28;;-1:-1:-1;;2071:17:28::1;::::0;;1939:156::o;2779:335:33:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:33;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;2186:281::-;2263:17;-1:-1:-1;;;;;2263:29:33;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:33;;-1:-1:-1;;;;;5214:32:51;;2320:47:33;;;5196:51:51;5169:18;;2320:47:33;5050:203:51;2259:119:33;-1:-1:-1;;;;;;;;;;;2387:73:33;;-1:-1:-1;;;;;;2387:73:33;-1:-1:-1;;;;;2387:73:33;;;;;;;;;;2186:281::o;4106:253:40:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:40;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:40:o;6598:122:33:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:33;;;;;;;;;;;4625:582:40;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:40;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:40;;-1:-1:-1;;;;;5214:32:51;;5121:24:40;;;5196:51:51;5169:18;;5121:24:40;5050:203:51;5041:119:40;-1:-1:-1;5180:10:40;4625:582;-1:-1:-1;;4625:582:40:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:40;;;;;;;;;;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;14:637:51:-;204:2;216:21;;;286:13;;189:18;;;308:22;;;156:4;;387:15;;;361:2;346:18;;;156:4;430:195;444:6;441:1;438:13;430:195;;;509:13;;-1:-1:-1;;;;;505:39:51;493:52;;574:2;600:15;;;;565:12;;;;541:1;459:9;430:195;;;-1:-1:-1;642:3:51;;14:637;-1:-1:-1;;;;;14:637:51:o;656:348::-;708:8;718:6;772:3;765:4;757:6;753:17;749:27;739:55;;790:1;787;780:12;739:55;-1:-1:-1;813:20:51;;856:18;845:30;;842:50;;;888:1;885;878:12;842:50;925:4;917:6;913:17;901:29;;977:3;970:4;961:6;953;949:19;945:30;942:39;939:59;;;994:1;991;984:12;939:59;656:348;;;;;:::o;1009:173::-;1077:20;;-1:-1:-1;;;;;1126:31:51;;1116:42;;1106:70;;1172:1;1169;1162:12;1106:70;1009:173;;;:::o;1187:905::-;1297:6;1305;1313;1321;1329;1337;1390:3;1378:9;1369:7;1365:23;1361:33;1358:53;;;1407:1;1404;1397:12;1358:53;1447:9;1434:23;1480:18;1472:6;1469:30;1466:50;;;1512:1;1509;1502:12;1466:50;1551:59;1602:7;1593:6;1582:9;1578:22;1551:59;:::i;:::-;1629:8;;-1:-1:-1;1525:85:51;-1:-1:-1;;1733:2:51;1718:18;;1705:32;;-1:-1:-1;1814:2:51;1799:18;;1786:32;1843:18;1830:32;;1827:52;;;1875:1;1872;1865:12;1827:52;1914:61;1967:7;1956:8;1945:9;1941:24;1914:61;:::i;:::-;1994:8;;-1:-1:-1;1888:87:51;-1:-1:-1;2048:38:51;;-1:-1:-1;2082:2:51;2067:18;;2048:38;:::i;:::-;2038:48;;1187:905;;;;;;;;:::o;2097:186::-;2156:6;2209:2;2197:9;2188:7;2184:23;2180:32;2177:52;;;2225:1;2222;2215:12;2177:52;2248:29;2267:9;2248:29;:::i;2288:289::-;2330:3;2368:5;2362:12;2395:6;2390:3;2383:19;2451:6;2444:4;2437:5;2433:16;2426:4;2421:3;2417:14;2411:47;2503:1;2496:4;2487:6;2482:3;2478:16;2474:27;2467:38;2566:4;2559:2;2555:7;2550:2;2542:6;2538:15;2534:29;2529:3;2525:39;2521:50;2514:57;;;2288:289;;;;:::o;2582:220::-;2731:2;2720:9;2713:21;2694:4;2751:45;2792:2;2781:9;2777:18;2769:6;2751:45;:::i;2807:260::-;2875:6;2883;2936:2;2924:9;2915:7;2911:23;2907:32;2904:52;;;2952:1;2949;2942:12;2904:52;2975:29;2994:9;2975:29;:::i;:::-;2965:39;;3023:38;3057:2;3046:9;3042:18;3023:38;:::i;:::-;3013:48;;2807:260;;;;;:::o;3072:127::-;3133:10;3128:3;3124:20;3121:1;3114:31;3164:4;3161:1;3154:15;3188:4;3185:1;3178:15;3204:715;3268:5;3300:1;3324:18;3316:6;3313:30;3310:56;;;3346:18;;:::i;:::-;-1:-1:-1;3501:2:51;3495:9;-1:-1:-1;;3414:2:51;3393:15;;3389:29;;3559:2;3547:15;3543:29;3531:42;;3624:22;;;3603:18;3588:34;;3585:62;3582:88;;;3650:18;;:::i;:::-;3686:2;3679:22;3734;;;3719:6;-1:-1:-1;3719:6:51;3771:16;;;3768:25;-1:-1:-1;3765:45:51;;;3806:1;3803;3796:12;3765:45;3856:6;3851:3;3844:4;3836:6;3832:17;3819:44;3911:1;3904:4;3895:6;3887;3883:19;3879:30;3872:41;;3204:715;;;;;:::o;3924:523::-;4001:6;4009;4062:2;4050:9;4041:7;4037:23;4033:32;4030:52;;;4078:1;4075;4068:12;4030:52;4101:29;4120:9;4101:29;:::i;:::-;4091:39;;4181:2;4170:9;4166:18;4153:32;4208:18;4200:6;4197:30;4194:50;;;4240:1;4237;4230:12;4194:50;4263:22;;4316:4;4308:13;;4304:27;-1:-1:-1;4294:55:51;;4345:1;4342;4335:12;4294:55;4368:73;4433:7;4428:2;4415:16;4410:2;4406;4402:11;4368:73;:::i;:::-;4358:83;;;3924:523;;;;;:::o;4634:411::-;4705:6;4713;4766:2;4754:9;4745:7;4741:23;4737:32;4734:52;;;4782:1;4779;4772:12;4734:52;4822:9;4809:23;4855:18;4847:6;4844:30;4841:50;;;4887:1;4884;4877:12;4841:50;4926:59;4977:7;4968:6;4957:9;4953:22;4926:59;:::i;:::-;5004:8;;4900:85;;-1:-1:-1;4634:411:51;-1:-1:-1;;;;4634:411:51:o;5450:226::-;5509:6;5562:2;5550:9;5541:7;5537:23;5533:32;5530:52;;;5578:1;5575;5568:12;5530:52;-1:-1:-1;5623:23:51;;5450:226;-1:-1:-1;5450:226:51:o;5681:450::-;5750:6;5803:2;5791:9;5782:7;5778:23;5774:32;5771:52;;;5819:1;5816;5809:12;5771:52;5859:9;5846:23;5892:18;5884:6;5881:30;5878:50;;;5924:1;5921;5914:12;5878:50;5947:22;;6000:4;5992:13;;5988:27;-1:-1:-1;5978:55:51;;6029:1;6026;6019:12;5978:55;6052:73;6117:7;6112:2;6099:16;6094:2;6090;6086:11;6052:73;:::i;:::-;6042:83;5681:450;-1:-1:-1;;;;5681:450:51:o;6136:599::-;6225:6;6233;6241;6249;6302:2;6290:9;6281:7;6277:23;6273:32;6270:52;;;6318:1;6315;6308:12;6270:52;6358:9;6345:23;6391:18;6383:6;6380:30;6377:50;;;6423:1;6420;6413:12;6377:50;6462:59;6513:7;6504:6;6493:9;6489:22;6462:59;:::i;:::-;6540:8;;-1:-1:-1;6436:85:51;-1:-1:-1;;6644:2:51;6629:18;;6616:32;;-1:-1:-1;6691:38:51;6725:2;6710:18;;6691:38;:::i;:::-;6681:48;;6136:599;;;;;;;:::o;7019:273::-;7204:6;7196;7191:3;7178:33;7160:3;7230:16;;7255:13;;;7230:16;7019:273;-1:-1:-1;7019:273:51:o;7297:267::-;7386:6;7381:3;7374:19;7438:6;7431:5;7424:4;7419:3;7415:14;7402:43;-1:-1:-1;7490:1:51;7465:16;;;7483:4;7461:27;;;7454:38;;;;7546:2;7525:15;;;-1:-1:-1;;7521:29:51;7512:39;;;7508:50;;7297:267::o;7569:318::-;7756:6;7745:9;7738:25;7799:2;7794;7783:9;7779:18;7772:30;7719:4;7819:62;7877:2;7866:9;7862:18;7854:6;7846;7819:62;:::i;7892:380::-;7971:1;7967:12;;;;8014;;;8035:61;;8089:4;8081:6;8077:17;8067:27;;8035:61;8142:2;8134:6;8131:14;8111:18;8108:38;8105:161;;8188:10;8183:3;8179:20;8176:1;8169:31;8223:4;8220:1;8213:15;8251:4;8248:1;8241:15;8105:161;;7892:380;;;:::o;9257:344::-;-1:-1:-1;;;;;9444:32:51;;9426:51;;9513:2;9508;9493:18;;9486:30;;;-1:-1:-1;;9533:62:51;;9576:18;;9568:6;9560;9533:62;:::i;9606:315::-;-1:-1:-1;;;;;9781:32:51;;9763:51;;9850:2;9845;9830:18;;9823:30;;;-1:-1:-1;;9870:45:51;;9896:18;;9888:6;9870:45;:::i;10052:518::-;10154:2;10149:3;10146:11;10143:421;;;10190:5;10187:1;10180:16;10234:4;10231:1;10221:18;10304:2;10292:10;10288:19;10285:1;10281:27;10275:4;10271:38;10340:4;10328:10;10325:20;10322:47;;;-1:-1:-1;10363:4:51;10322:47;10418:2;10413:3;10409:12;10406:1;10402:20;10396:4;10392:31;10382:41;;10473:81;10491:2;10484:5;10481:13;10473:81;;;10550:1;10536:16;;10517:1;10506:13;10473:81;;10746:1198;10870:18;10865:3;10862:27;10859:53;;;10892:18;;:::i;:::-;10921:94;11011:3;10971:38;11003:4;10997:11;10971:38;:::i;:::-;10965:4;10921:94;:::i;:::-;11041:1;11066:2;11061:3;11058:11;11083:1;11078:608;;;;11730:1;11747:3;11744:93;;;-1:-1:-1;11803:19:51;;;11790:33;11744:93;-1:-1:-1;;10703:1:51;10699:11;;;10695:24;10691:29;10681:40;10727:1;10723:11;;;10678:57;11850:78;;11051:887;;11078:608;9999:1;9992:14;;;10036:4;10023:18;;-1:-1:-1;;11114:17:51;;;11229:229;11243:7;11240:1;11237:14;11229:229;;;11332:19;;;11319:33;11304:49;;11439:4;11424:20;;;;11392:1;11380:14;;;;11259:12;11229:229;;;11233:3;11486;11477:7;11474:16;11471:159;;;11610:1;11606:6;11600:3;11594;11591:1;11587:11;11583:21;11579:34;11575:39;11562:9;11557:3;11553:19;11540:33;11536:79;11528:6;11521:95;11471:159;;;11673:1;11667:3;11664:1;11660:11;11656:19;11650:4;11643:33;11051:887;;10746:1198;;;:::o;11949:184::-;12019:6;12072:2;12060:9;12051:7;12047:23;12043:32;12040:52;;;12088:1;12085;12078:12;12040:52;-1:-1:-1;12111:16:51;;11949:184;-1:-1:-1;11949:184:51:o;12138:301::-;12267:3;12305:6;12299:13;12351:6;12344:4;12336:6;12332:17;12327:3;12321:37;12413:1;12377:16;;12402:13;;;-1:-1:-1;12377:16:51;12138:301;-1:-1:-1;12138:301:51:o","linkReferences":{},"immutableReferences":{"39526":[{"start":4107,"length":32},{"start":4148,"length":32},{"start":4472,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptOwnership()":"79ba5097","beacon()":"59659e90","cancelCredits(string,uint256,string,address)":"17d4ecaa","creditAddressToId(address)":"3cc42c4c","creditAddresses(uint256)":"d0fc205c","creditIdToAddress(string)":"d69e3ba6","deployNewBeacon(address)":"9c1e1e4d","getAllCreditAddresses()":"17528e03","initialize(address,address)":"485cc955","issueCredits(string,uint256,address)":"f3199695","owner()":"8da5cb5b","pause()":"8456cb59","pauseCredit(string)":"53a61259","paused()":"5c975abb","pendingOwner()":"e30c3978","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","unpauseCredit(string)":"78017977","upgradeBeacon(address)":"1bce4583","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CreditDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyReason\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFactoryIssuance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSelfIssuance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPendingOwner\",\"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\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Canceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creditTokenAddress\",\"type\":\"address\"}],\"name\":\"Issued\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"beacon\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"cancelCredits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"creditAddressToId\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"creditAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"creditIdToAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creditTokenImpl\",\"type\":\"address\"}],\"name\":\"deployNewBeacon\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllCreditAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creditTokenImpl\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"issueCredits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"}],\"name\":\"pauseCredit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"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\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"creditId\",\"type\":\"string\"}],\"name\":\"unpauseCredit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creditTokenImpl\",\"type\":\"address\"}],\"name\":\"upgradeBeacon\",\"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\"}],\"devdoc\":{\"author\":\"Atmosfearful\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CreditDoesNotExist()\":[{\"details\":\"Revert when canceling, pausing, or unpausing a non-existent credit token\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EmptyReason()\":[{\"details\":\"Revert when attempting to issue credits with an empty reason\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"MaxLength()\":[{\"details\":\"Revert when the string length is greater than the maximum allowed\"}],\"NoFactoryIssuance()\":[{\"details\":\"Revert when attempting to issue credits to the factory\"}],\"NoSelfIssuance()\":[{\"details\":\"Revert when attempting to issue credits to a credit contract\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"NotPendingOwner()\":[{\"details\":\"Revert as only the pending owner can accept ownership\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ZeroAddress()\":[{\"details\":\"Revert when setting certain values to zero address\"}],\"ZeroAmount()\":[{\"details\":\"Revert when attempting to issue credits with a zero amount\"}]},\"events\":{\"Canceled(uint256,string,string,address)\":{\"params\":{\"account\":\"Account that held the canceled credit balance.\",\"amount\":\"Amount of credits canceled.\",\"creditId\":\"ID of the canceled credit.\",\"reason\":\"Reason for credit cancellation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Issued(string,uint256,address,address)\":{\"params\":{\"amount\":\"Amount of credits issued.\",\"creditId\":\"ID of the credit.\",\"creditTokenAddress\":\"Address of the CreditToken contract.\",\"to\":\"Address of the account that received the credits.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"cancelCredits(string,uint256,string,address)\":{\"details\":\"Paused credits can still be canceled.\",\"params\":{\"amount\":\"The amount of credits to cancel.\",\"creditId\":\"The ID of the credit to cancel.\",\"owner\":\"The address of the account from which to cancel credits.\",\"reason\":\"The reason for cancellation.\"}},\"deployNewBeacon(address)\":{\"details\":\"Only newly issued credits will use this new beacon's implementation. Prefer `upgradeBeacon()` instead, if implementation is backwards compatible. Or consider deploying a new factory instead. After deploying a new beacon, the previous beacon can no longer be upgraded.\",\"params\":{\"creditTokenImpl\":\"Address of the new CreditToken implementation\"}},\"getAllCreditAddresses()\":{\"returns\":{\"_0\":\"address[] array of addresses\"}},\"issueCredits(string,uint256,address)\":{\"params\":{\"amount\":\"The amount of credits to issue\",\"creditId\":\"The credit ID to deploy 'CMARK-1-2024'\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pauseCredit(string)\":{\"details\":\"Paused credits can still be canceled, but not issued.\",\"params\":{\"creditId\":\"The ID of the credit token to pause.\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"params\":{\"newOwner\":\"The new owner of the contract\"}},\"unpauseCredit(string)\":{\"params\":{\"creditId\":\"The ID of the credit token to unpause.\"}},\"upgradeBeacon(address)\":{\"details\":\"This upgrades all child credits who were already deployed with this beacon. For backwards-incompatible upgrades, see `deployNewBeacon()`.\",\"params\":{\"creditTokenImpl\":\"Address of the new CreditToken implementation\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"CANCEL_REASON_MAX\":{\"details\":\"Maximum length of the string for credit cancellation reason.\"}},\"title\":\"Factory for CMARK ERC20 credit contracts\",\"version\":1},\"userdoc\":{\"events\":{\"Canceled(uint256,string,string,address)\":{\"notice\":\"Emitted when credits are removed from circulation without claiming environmental benefit.\"},\"Issued(string,uint256,address,address)\":{\"notice\":\"Emitted when credits are issued to a new or existing CreditToken contract.\"}},\"kind\":\"user\",\"methods\":{\"acceptOwnership()\":{\"notice\":\"Accept pending ownership transfer\"},\"beacon()\":{\"notice\":\"Address of the current UpgradeableBeacon. It points to impl. contract for child CreditTokens\"},\"cancelCredits(string,uint256,string,address)\":{\"notice\":\"Cancels a specified amount of credits for a given credit ID and owner.\"},\"creditAddressToId(address)\":{\"notice\":\"Mapping of token (proxy) address to creditId string, for issued credits.\"},\"creditAddresses(uint256)\":{\"notice\":\"List of all issued credit token (proxy) addresses\"},\"creditIdToAddress(string)\":{\"notice\":\"Mapping of creditId string to token (proxy) address, for issued credits.\"},\"deployNewBeacon(address)\":{\"notice\":\"Deploys new UpgradeableBeacon for backwards-incompatable CreditToken upgrades.\"},\"getAllCreditAddresses()\":{\"notice\":\"Get a list of all deployed CreditToken contracts.\"},\"issueCredits(string,uint256,address)\":{\"notice\":\"Issues new credits to a new or existing credit token contract\"},\"pauseCredit(string)\":{\"notice\":\"Pauses the specified CreditToken contract.\"},\"pendingOwner()\":{\"notice\":\"Address of pending ('pushed') owner, for push/pullownership transfer\"},\"transferOwnership(address)\":{\"notice\":\"Push ownership request to a new pending owner.\"},\"unpauseCredit(string)\":{\"notice\":\"Unpauses the specified CreditToken contract.\"},\"upgradeBeacon(address)\":{\"notice\":\"Upgrade CreditTokens by pointing the existing beacon at a new implementation.\"}},\"notice\":\"The factory is used to: - Issue new credits (deploying a new CreditToken contract if needed) - Cancel a balance of credits - Pause and unpause CreditToken contracts - Upgrade the implementation contract for CreditTokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CreditTokenFactory.sol\":\"CreditTokenFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x490959f972df54829d0ffacb71fa025429d9b7b9ebd118f418b41e9c0041ef73\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1883bc1a16a88922abccd415d1b41caf00c38ee581ae3e5976018d9c17d2c4b7\",\"dweb:/ipfs/QmP2vzQM8RR8ce675KhuZEaUicAPRMUbPLwBsTpxByvn18\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152\",\"dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x387ebdcb365b8e620f26645d2b34a161cd39eedfb0219e8baff55630c5ae113c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://744ea187c195e31cb9201e63ca291fca9e623747f54f0ba390b366a6213b8964\",\"dweb:/ipfs/Qmc547qfV4sz65DC9B4okx1HvgxwUzJR7zTfKKbTzL3UQT\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol\":{\"keccak256\":\"0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299\",\"dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"src/CreditToken.sol\":{\"keccak256\":\"0x722852033c16370f1db4c31a9a3a5bc359d7fd70c497162e26e5a8a0119aab1d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://15794947a5584b5fd7dedc88c1b4aa2592c28b245c8144647071a94f67605465\",\"dweb:/ipfs/Qmeci7vJGZNywjgt6pScNxPTqxmJV9tizcAcxUpKFAHndC\"]},\"src/CreditTokenFactory.sol\":{\"keccak256\":\"0xd5083181d857a33377da9ced414e50960dfbf75f55366b791d246d3487b2cbbd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://df57e7aac241c1d8bc4816c31f3057745fa1931236ab6e91e1819bcd9fc8a4bf\",\"dweb:/ipfs/QmQi1EirSh3YEam7txk1Zs76Yh5a389KMi4Jny7ZXBkp4z\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x16bb1be9438c1de8e12ce17e17e516bad3261fd24247b73d8f4eaaec395e2373\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c769f34f5423d278844ac97c8cddbc8116eca43c0c4112bed1104f733f6b977f\",\"dweb:/ipfs/QmPFm7iN5RYwiyYsvvqXt9MKAMFYTgB2ThNpKZWGTtgVY2\"]},\"src/libraries/Validate.sol\":{\"keccak256\":\"0x99f00322e5a11077ff2681fbe690d0e2fa19af997ec8c1c738220a6f175eb741\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ab7636eb2ac4d0a82f793d2be022ec946e0c8c4819831e4f42f638fe706335c9\",\"dweb:/ipfs/QmVZcPfU2qMeGa4uP2c8bjNBLnv17a1xoxAgS7DeHG7Z93\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CreditDoesNotExist"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EmptyReason"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"MaxLength"},{"inputs":[],"type":"error","name":"NoFactoryIssuance"},{"inputs":[],"type":"error","name":"NoSelfIssuance"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotPendingOwner"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[],"type":"error","name":"ZeroAmount"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false},{"internalType":"string","name":"creditId","type":"string","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"Canceled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"string","name":"creditId","type":"string","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"address","name":"creditTokenAddress","type":"address","indexed":true}],"type":"event","name":"Issued","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"beacon","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"creditId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelCredits"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"creditAddressToId","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"creditAddresses","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"creditIdToAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"creditTokenImpl","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deployNewBeacon"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAllCreditAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"creditTokenImpl","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"issueCredits"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"pauseCredit"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"unpauseCredit"},{"inputs":[{"internalType":"address","name":"creditTokenImpl","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeBeacon"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"cancelCredits(string,uint256,string,address)":{"details":"Paused credits can still be canceled.","params":{"amount":"The amount of credits to cancel.","creditId":"The ID of the credit to cancel.","owner":"The address of the account from which to cancel credits.","reason":"The reason for cancellation."}},"deployNewBeacon(address)":{"details":"Only newly issued credits will use this new beacon's implementation. Prefer `upgradeBeacon()` instead, if implementation is backwards compatible. Or consider deploying a new factory instead. After deploying a new beacon, the previous beacon can no longer be upgraded.","params":{"creditTokenImpl":"Address of the new CreditToken implementation"}},"getAllCreditAddresses()":{"returns":{"_0":"address[] array of addresses"}},"issueCredits(string,uint256,address)":{"params":{"amount":"The amount of credits to issue","creditId":"The credit ID to deploy 'CMARK-1-2024'"}},"owner()":{"details":"Returns the address of the current owner."},"pauseCredit(string)":{"details":"Paused credits can still be canceled, but not issued.","params":{"creditId":"The ID of the credit token to pause."}},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"params":{"newOwner":"The new owner of the contract"}},"unpauseCredit(string)":{"params":{"creditId":"The ID of the credit token to unpause."}},"upgradeBeacon(address)":{"details":"This upgrades all child credits who were already deployed with this beacon. For backwards-incompatible upgrades, see `deployNewBeacon()`.","params":{"creditTokenImpl":"Address of the new CreditToken implementation"}},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOwnership()":{"notice":"Accept pending ownership transfer"},"beacon()":{"notice":"Address of the current UpgradeableBeacon. It points to impl. contract for child CreditTokens"},"cancelCredits(string,uint256,string,address)":{"notice":"Cancels a specified amount of credits for a given credit ID and owner."},"creditAddressToId(address)":{"notice":"Mapping of token (proxy) address to creditId string, for issued credits."},"creditAddresses(uint256)":{"notice":"List of all issued credit token (proxy) addresses"},"creditIdToAddress(string)":{"notice":"Mapping of creditId string to token (proxy) address, for issued credits."},"deployNewBeacon(address)":{"notice":"Deploys new UpgradeableBeacon for backwards-incompatable CreditToken upgrades."},"getAllCreditAddresses()":{"notice":"Get a list of all deployed CreditToken contracts."},"issueCredits(string,uint256,address)":{"notice":"Issues new credits to a new or existing credit token contract"},"pauseCredit(string)":{"notice":"Pauses the specified CreditToken contract."},"pendingOwner()":{"notice":"Address of pending ('pushed') owner, for push/pullownership transfer"},"transferOwnership(address)":{"notice":"Push ownership request to a new pending owner."},"unpauseCredit(string)":{"notice":"Unpauses the specified CreditToken contract."},"upgradeBeacon(address)":{"notice":"Upgrade CreditTokens by pointing the existing beacon at a new implementation."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/CreditTokenFactory.sol":"CreditTokenFactory"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x490959f972df54829d0ffacb71fa025429d9b7b9ebd118f418b41e9c0041ef73","urls":["bzz-raw://1883bc1a16a88922abccd415d1b41caf00c38ee581ae3e5976018d9c17d2c4b7","dweb:/ipfs/QmP2vzQM8RR8ce675KhuZEaUicAPRMUbPLwBsTpxByvn18"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72","urls":["bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152","dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol":{"keccak256":"0x387ebdcb365b8e620f26645d2b34a161cd39eedfb0219e8baff55630c5ae113c","urls":["bzz-raw://744ea187c195e31cb9201e63ca291fca9e623747f54f0ba390b366a6213b8964","dweb:/ipfs/Qmc547qfV4sz65DC9B4okx1HvgxwUzJR7zTfKKbTzL3UQT"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol":{"keccak256":"0x5920bac7215d12961e23b207f6e81a1d64aa4935a4469abe95b64a96a3c3007b","urls":["bzz-raw://b34bb828c45c3a4ebf6c2c585971abf5089e61357a3818a2900c7e85b74a1299","dweb:/ipfs/QmewGAzKsPXYfSjCKxuH1SekKxtdyzhdbdyxjF5gohLigt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"src/CreditToken.sol":{"keccak256":"0x722852033c16370f1db4c31a9a3a5bc359d7fd70c497162e26e5a8a0119aab1d","urls":["bzz-raw://15794947a5584b5fd7dedc88c1b4aa2592c28b245c8144647071a94f67605465","dweb:/ipfs/Qmeci7vJGZNywjgt6pScNxPTqxmJV9tizcAcxUpKFAHndC"],"license":"UNLICENSED"},"src/CreditTokenFactory.sol":{"keccak256":"0xd5083181d857a33377da9ced414e50960dfbf75f55366b791d246d3487b2cbbd","urls":["bzz-raw://df57e7aac241c1d8bc4816c31f3057745fa1931236ab6e91e1819bcd9fc8a4bf","dweb:/ipfs/QmQi1EirSh3YEam7txk1Zs76Yh5a389KMi4Jny7ZXBkp4z"],"license":"UNLICENSED"},"src/libraries/Errors.sol":{"keccak256":"0x16bb1be9438c1de8e12ce17e17e516bad3261fd24247b73d8f4eaaec395e2373","urls":["bzz-raw://c769f34f5423d278844ac97c8cddbc8116eca43c0c4112bed1104f733f6b977f","dweb:/ipfs/QmPFm7iN5RYwiyYsvvqXt9MKAMFYTgB2ThNpKZWGTtgVY2"],"license":"UNLICENSED"},"src/libraries/Validate.sol":{"keccak256":"0x99f00322e5a11077ff2681fbe690d0e2fa19af997ec8c1c738220a6f175eb741","urls":["bzz-raw://ab7636eb2ac4d0a82f793d2be022ec946e0c8c4819831e4f42f638fe706335c9","dweb:/ipfs/QmVZcPfU2qMeGa4uP2c8bjNBLnv17a1xoxAgS7DeHG7Z93"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":42176,"contract":"src/CreditTokenFactory.sol:CreditTokenFactory","label":"creditIdToAddress","offset":0,"slot":"0","type":"t_mapping(t_string_memory_ptr,t_address)"},{"astId":42181,"contract":"src/CreditTokenFactory.sol:CreditTokenFactory","label":"creditAddressToId","offset":0,"slot":"1","type":"t_mapping(t_address,t_string_storage)"},{"astId":42185,"contract":"src/CreditTokenFactory.sol:CreditTokenFactory","label":"creditAddresses","offset":0,"slot":"2","type":"t_array(t_address)dyn_storage"},{"astId":42188,"contract":"src/CreditTokenFactory.sol:CreditTokenFactory","label":"beacon","offset":0,"slot":"3","type":"t_address"},{"astId":42191,"contract":"src/CreditTokenFactory.sol:CreditTokenFactory","label":"pendingOwner","offset":0,"slot":"4","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"encoding":"dynamic_array","label":"address[]","numberOfBytes":"32","base":"t_address"},"t_mapping(t_address,t_string_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => string)","numberOfBytes":"32","value":"t_string_storage"},"t_mapping(t_string_memory_ptr,t_address)":{"encoding":"mapping","key":"t_string_memory_ptr","label":"mapping(string => address)","numberOfBytes":"32","value":"t_address"},"t_string_memory_ptr":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/CreditTokenFactory.sol","id":42675,"exportedSymbols":{"BeaconProxy":[41257],"CreditToken":[42138],"CreditTokenFactory":[42674],"Errors":[42805],"Initializable":[39506],"OwnableUpgradeable":[39252],"PausableUpgradeable":[40527],"UUPSUpgradeable":[39688],"UpgradeableBeacon":[41355],"Validate":[42864]},"nodeType":"SourceUnit","src":"39:9174:44","nodes":[{"id":42140,"nodeType":"PragmaDirective","src":"39:24:44","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":42142,"nodeType":"ImportDirective","src":"65:101:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":39253,"symbolAliases":[{"foreign":{"id":42141,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39252,"src":"73:18:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42144,"nodeType":"ImportDirective","src":"167:102:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":40528,"symbolAliases":[{"foreign":{"id":42143,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40527,"src":"175:19:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42146,"nodeType":"ImportDirective","src":"270:96:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":39507,"symbolAliases":[{"foreign":{"id":42145,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39506,"src":"278:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42148,"nodeType":"ImportDirective","src":"367:81:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol","file":"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":42147,"name":"BeaconProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"375:11:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42150,"nodeType":"ImportDirective","src":"449:93:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol","file":"@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":41356,"symbolAliases":[{"foreign":{"id":42149,"name":"UpgradeableBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41355,"src":"457:17:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42152,"nodeType":"ImportDirective","src":"543:100:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":39689,"symbolAliases":[{"foreign":{"id":42151,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39688,"src":"551:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42154,"nodeType":"ImportDirective","src":"644:46:44","nodes":[],"absolutePath":"src/CreditToken.sol","file":"./CreditToken.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":42139,"symbolAliases":[{"foreign":{"id":42153,"name":"CreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42138,"src":"652:11:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42156,"nodeType":"ImportDirective","src":"691:46:44","nodes":[],"absolutePath":"src/libraries/Errors.sol","file":"./libraries/Errors.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":42806,"symbolAliases":[{"foreign":{"id":42155,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42805,"src":"699:6:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42158,"nodeType":"ImportDirective","src":"738:50:44","nodes":[],"absolutePath":"src/libraries/Validate.sol","file":"./libraries/Validate.sol","nameLocation":"-1:-1:-1","scope":42675,"sourceUnit":42865,"symbolAliases":[{"foreign":{"id":42157,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"746:8:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42674,"nodeType":"ContractDefinition","src":"1148:8064:44","nodes":[{"id":42171,"nodeType":"VariableDeclaration","src":"1331:40:44","nodes":[],"constant":true,"documentation":{"id":42168,"nodeType":"StructuredDocumentation","src":"1257:69:44","text":"@dev Maximum length of the string for credit cancellation reason."},"mutability":"constant","name":"CANCEL_REASON_MAX","nameLocation":"1348:17:44","scope":42674,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42169,"name":"uint256","nodeType":"ElementaryTypeName","src":"1331:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323536","id":42170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1368:3:44","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"visibility":"internal"},{"id":42176,"nodeType":"VariableDeclaration","src":"1467:51:44","nodes":[],"constant":false,"documentation":{"id":42172,"nodeType":"StructuredDocumentation","src":"1378:84:44","text":"@notice Mapping of creditId string to token (proxy) address, for issued credits."},"functionSelector":"d69e3ba6","mutability":"mutable","name":"creditIdToAddress","nameLocation":"1501:17:44","scope":42674,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_address_$","typeString":"mapping(string => address)"},"typeName":{"id":42175,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":42173,"name":"string","nodeType":"ElementaryTypeName","src":"1475:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"1467:26:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_address_$","typeString":"mapping(string => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":42174,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"id":42181,"nodeType":"VariableDeclaration","src":"1613:51:44","nodes":[],"constant":false,"documentation":{"id":42177,"nodeType":"StructuredDocumentation","src":"1524:84:44","text":"@notice Mapping of token (proxy) address to creditId string, for issued credits."},"functionSelector":"3cc42c4c","mutability":"mutable","name":"creditAddressToId","nameLocation":"1647:17:44","scope":42674,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_string_storage_$","typeString":"mapping(address => string)"},"typeName":{"id":42180,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":42178,"name":"address","nodeType":"ElementaryTypeName","src":"1621:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1613:26:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_string_storage_$","typeString":"mapping(address => string)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":42179,"name":"string","nodeType":"ElementaryTypeName","src":"1632:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"public"},{"id":42185,"nodeType":"VariableDeclaration","src":"1736:32:44","nodes":[],"constant":false,"documentation":{"id":42182,"nodeType":"StructuredDocumentation","src":"1670:61:44","text":"@notice List of all issued credit token (proxy) addresses"},"functionSelector":"d0fc205c","mutability":"mutable","name":"creditAddresses","nameLocation":"1753:15:44","scope":42674,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":42183,"name":"address","nodeType":"ElementaryTypeName","src":"1736:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42184,"nodeType":"ArrayTypeName","src":"1736:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"id":42188,"nodeType":"VariableDeclaration","src":"1883:21:44","nodes":[],"constant":false,"documentation":{"id":42186,"nodeType":"StructuredDocumentation","src":"1774:104:44","text":"@notice Address of the current UpgradeableBeacon. It points to impl. contract for child CreditTokens"},"functionSelector":"59659e90","mutability":"mutable","name":"beacon","nameLocation":"1898:6:44","scope":42674,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42187,"name":"address","nodeType":"ElementaryTypeName","src":"1883:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":42191,"nodeType":"VariableDeclaration","src":"1995:27:44","nodes":[],"constant":false,"documentation":{"id":42189,"nodeType":"StructuredDocumentation","src":"1910:80:44","text":"@notice Address of pending ('pushed') owner, for push/pullownership transfer"},"functionSelector":"e30c3978","mutability":"mutable","name":"pendingOwner","nameLocation":"2010:12:44","scope":42674,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42190,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":42202,"nodeType":"EventDefinition","src":"2364:96:44","nodes":[],"anonymous":false,"documentation":{"id":42192,"nodeType":"StructuredDocumentation","src":"2029:330:44","text":"@notice Emitted when credits are removed from circulation without claiming environmental benefit.\n @param amount Amount of credits canceled.\n @param reason Reason for credit cancellation.\n @param creditId ID of the canceled credit.\n @param account Account that held the canceled credit balance."},"eventSelector":"c8ded87dca1c06d31a7c5e58b55909b294b937bc640451a37f7ca84222a13476","name":"Canceled","nameLocation":"2370:8:44","parameters":{"id":42201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42194,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2387:6:44","nodeType":"VariableDeclaration","scope":42202,"src":"2379:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42193,"name":"uint256","nodeType":"ElementaryTypeName","src":"2379:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42196,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2402:6:44","nodeType":"VariableDeclaration","scope":42202,"src":"2395:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42195,"name":"string","nodeType":"ElementaryTypeName","src":"2395:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42198,"indexed":true,"mutability":"mutable","name":"creditId","nameLocation":"2425:8:44","nodeType":"VariableDeclaration","scope":42202,"src":"2410:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42197,"name":"string","nodeType":"ElementaryTypeName","src":"2410:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42200,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2451:7:44","nodeType":"VariableDeclaration","scope":42202,"src":"2435:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42199,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2378:81:44"}},{"id":42213,"nodeType":"EventDefinition","src":"2790:110:44","nodes":[],"anonymous":false,"documentation":{"id":42203,"nodeType":"StructuredDocumentation","src":"2466:319:44","text":"@notice Emitted when credits are issued to a new or existing CreditToken contract.\n @param creditId ID of the credit.\n @param amount Amount of credits issued.\n @param to Address of the account that received the credits.\n @param creditTokenAddress Address of the CreditToken contract."},"eventSelector":"30fe01827ac796747c8d3e64aedb0619c3ec05c3679d3dc86b6c6e8897736846","name":"Issued","nameLocation":"2796:6:44","parameters":{"id":42212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42205,"indexed":true,"mutability":"mutable","name":"creditId","nameLocation":"2818:8:44","nodeType":"VariableDeclaration","scope":42213,"src":"2803:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42204,"name":"string","nodeType":"ElementaryTypeName","src":"2803:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42207,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2836:6:44","nodeType":"VariableDeclaration","scope":42213,"src":"2828:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42206,"name":"uint256","nodeType":"ElementaryTypeName","src":"2828:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42209,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2860:2:44","nodeType":"VariableDeclaration","scope":42213,"src":"2844:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42208,"name":"address","nodeType":"ElementaryTypeName","src":"2844:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42211,"indexed":true,"mutability":"mutable","name":"creditTokenAddress","nameLocation":"2880:18:44","nodeType":"VariableDeclaration","scope":42213,"src":"2864:34:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42210,"name":"address","nodeType":"ElementaryTypeName","src":"2864:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2802:97:44"}},{"id":42220,"nodeType":"FunctionDefinition","src":"2906:53:44","nodes":[],"body":{"id":42219,"nodeType":"Block","src":"2920:39:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42216,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39474,"src":"2930:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2930:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42218,"nodeType":"ExpressionStatement","src":"2930:22:44"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":42214,"nodeType":"ParameterList","parameters":[],"src":"2917:2:44"},"returnParameters":{"id":42215,"nodeType":"ParameterList","parameters":[],"src":"2920:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":42260,"nodeType":"FunctionDefinition","src":"2965:378:44","nodes":[],"body":{"id":42259,"nodeType":"Block","src":"3053:290:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":42230,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42222,"src":"3078:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42229,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39112,"src":"3063:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":42231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3063:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42232,"nodeType":"ExpressionStatement","src":"3063:28:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42233,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40403,"src":"3101:15:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3101:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42235,"nodeType":"ExpressionStatement","src":"3101:17:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42236,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39560,"src":"3128:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3128:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42238,"nodeType":"ExpressionStatement","src":"3128:24:44"},{"assignments":[42241],"declarations":[{"constant":false,"id":42241,"mutability":"mutable","name":"newBeacon","nameLocation":"3180:9:44","nodeType":"VariableDeclaration","scope":42259,"src":"3162:27:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"},"typeName":{"id":42240,"nodeType":"UserDefinedTypeName","pathNode":{"id":42239,"name":"UpgradeableBeacon","nameLocations":["3162:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":41355,"src":"3162:17:44"},"referencedDeclaration":41355,"src":"3162:17:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"visibility":"internal"}],"id":42251,"initialValue":{"arguments":[{"id":42245,"name":"creditTokenImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42224,"src":"3227:15:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":42248,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3264:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}],"id":42247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3256:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42246,"name":"address","nodeType":"ElementaryTypeName","src":"3256:7:44","typeDescriptions":{}}},"id":42249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3256:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3192:21:44","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_UpgradeableBeacon_$41355_$","typeString":"function (address,address) returns (contract UpgradeableBeacon)"},"typeName":{"id":42243,"nodeType":"UserDefinedTypeName","pathNode":{"id":42242,"name":"UpgradeableBeacon","nameLocations":["3196:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":41355,"src":"3196:17:44"},"referencedDeclaration":41355,"src":"3196:17:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}}},"id":42250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3192:107:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"nodeType":"VariableDeclarationStatement","src":"3162:137:44"},{"expression":{"id":42257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42252,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42188,"src":"3309:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":42255,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42241,"src":"3326:9:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}],"id":42254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3318:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42253,"name":"address","nodeType":"ElementaryTypeName","src":"3318:7:44","typeDescriptions":{}}},"id":42256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3309:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42258,"nodeType":"ExpressionStatement","src":"3309:27:44"}]},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":42227,"kind":"modifierInvocation","modifierName":{"id":42226,"name":"initializer","nameLocations":["3041:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":39360,"src":"3041:11:44"},"nodeType":"ModifierInvocation","src":"3041:11:44"}],"name":"initialize","nameLocation":"2974:10:44","parameters":{"id":42225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42222,"mutability":"mutable","name":"initialOwner","nameLocation":"2993:12:44","nodeType":"VariableDeclaration","scope":42260,"src":"2985:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42221,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42224,"mutability":"mutable","name":"creditTokenImpl","nameLocation":"3015:15:44","nodeType":"VariableDeclaration","scope":42260,"src":"3007:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42223,"name":"address","nodeType":"ElementaryTypeName","src":"3007:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2984:47:44"},"returnParameters":{"id":42228,"nodeType":"ParameterList","parameters":[],"src":"3053:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42270,"nodeType":"FunctionDefinition","src":"3460:113:44","nodes":[],"body":{"id":42269,"nodeType":"Block","src":"3534:39:44","nodes":[],"statements":[{"expression":{"id":42267,"name":"creditAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42185,"src":"3551:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":42266,"id":42268,"nodeType":"Return","src":"3544:22:44"}]},"documentation":{"id":42261,"nodeType":"StructuredDocumentation","src":"3349:106:44","text":"@notice Get a list of all deployed CreditToken contracts.\n @return address[] array of addresses"},"functionSelector":"17528e03","implemented":true,"kind":"function","modifiers":[],"name":"getAllCreditAddresses","nameLocation":"3469:21:44","parameters":{"id":42262,"nodeType":"ParameterList","parameters":[],"src":"3490:2:44"},"returnParameters":{"id":42266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42270,"src":"3516:16:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":42263,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42264,"nodeType":"ArrayTypeName","src":"3516:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3515:18:44"},"scope":42674,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":42416,"nodeType":"FunctionDefinition","src":"3775:1538:44","nodes":[],"body":{"id":42415,"nodeType":"Block","src":"3884:1429:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":42287,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"3918:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42284,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"3894:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3903:14:44","memberName":"notZeroAddress","nodeType":"MemberAccess","referencedDeclaration":42827,"src":"3894:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":42288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42289,"nodeType":"ExpressionStatement","src":"3894:27:44"},{"expression":{"arguments":[{"id":42293,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42275,"src":"3954:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42290,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"3931:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3940:13:44","memberName":"notZeroAmount","nodeType":"MemberAccess","referencedDeclaration":42842,"src":"3931:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":42294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3931:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42295,"nodeType":"ExpressionStatement","src":"3931:30:44"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42296,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"4019:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":42299,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4033:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}],"id":42298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4025:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42297,"name":"address","nodeType":"ElementaryTypeName","src":"4025:7:44","typeDescriptions":{}}},"id":42300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4025:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4019:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42307,"nodeType":"IfStatement","src":"4015:58:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42302,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42805,"src":"4047:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$42805_$","typeString":"type(library Errors)"}},"id":42304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4054:17:44","memberName":"NoFactoryIssuance","nodeType":"MemberAccess","referencedDeclaration":42792,"src":"4047:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4047:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42306,"nodeType":"RevertStatement","src":"4040:33:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"baseExpression":{"id":42310,"name":"creditAddressToId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42181,"src":"4154:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_string_storage_$","typeString":"mapping(address => string storage ref)"}},"id":42312,"indexExpression":{"id":42311,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"4172:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4154:21:44","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"id":42309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4148:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42308,"name":"bytes","nodeType":"ElementaryTypeName","src":"4148:5:44","typeDescriptions":{}}},"id":42313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4148:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":42314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4177:6:44","memberName":"length","nodeType":"MemberAccess","src":"4148:35:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":42315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4187:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4148:40:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42322,"nodeType":"IfStatement","src":"4144:76:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42317,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42805,"src":"4197:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$42805_$","typeString":"type(library Errors)"}},"id":42319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4204:14:44","memberName":"NoSelfIssuance","nodeType":"MemberAccess","referencedDeclaration":42795,"src":"4197:21:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4197:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42321,"nodeType":"RevertStatement","src":"4190:30:44"}},{"assignments":[42324],"declarations":[{"constant":false,"id":42324,"mutability":"mutable","name":"existingCreditToken","nameLocation":"4239:19:44","nodeType":"VariableDeclaration","scope":42415,"src":"4231:27:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42323,"name":"address","nodeType":"ElementaryTypeName","src":"4231:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42328,"initialValue":{"baseExpression":{"id":42325,"name":"creditIdToAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42176,"src":"4261:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_address_$","typeString":"mapping(string memory => address)"}},"id":42327,"indexExpression":{"id":42326,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42273,"src":"4279:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4261:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4231:57:44"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42329,"name":"existingCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42324,"src":"4302:19:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":42332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":42331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4325:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42330,"name":"address","nodeType":"ElementaryTypeName","src":"4325:7:44","typeDescriptions":{}}},"id":42333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4302:33:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42413,"nodeType":"Block","src":"4525:782:44","statements":[{"assignments":[42352],"declarations":[{"constant":false,"id":42352,"mutability":"mutable","name":"initData","nameLocation":"4651:8:44","nodeType":"VariableDeclaration","scope":42413,"src":"4638:21:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42351,"name":"bytes","nodeType":"ElementaryTypeName","src":"4638:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":42362,"initialValue":{"arguments":[{"hexValue":"696e697469616c697a6528616464726573732c737472696e6729","id":42355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4703:28:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_f399e22e5ddc44ddd58785aafd83fa9646fb12ca0a901658b6bb6f8ddc009f0a","typeString":"literal_string \"initialize(address,string)\""},"value":"initialize(address,string)"},{"arguments":[{"id":42358,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4757:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}],"id":42357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4749:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42356,"name":"address","nodeType":"ElementaryTypeName","src":"4749:7:44","typeDescriptions":{}}},"id":42359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42360,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42273,"src":"4845:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f399e22e5ddc44ddd58785aafd83fa9646fb12ca0a901658b6bb6f8ddc009f0a","typeString":"literal_string \"initialize(address,string)\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"expression":{"id":42353,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4662:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4666:19:44","memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"4662:23:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":42361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4662:205:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4638:229:44"},{"assignments":[42365],"declarations":[{"constant":false,"id":42365,"mutability":"mutable","name":"proxyCreditToken","nameLocation":"4893:16:44","nodeType":"VariableDeclaration","scope":42413,"src":"4881:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BeaconProxy_$41257","typeString":"contract BeaconProxy"},"typeName":{"id":42364,"nodeType":"UserDefinedTypeName","pathNode":{"id":42363,"name":"BeaconProxy","nameLocations":["4881:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":41257,"src":"4881:11:44"},"referencedDeclaration":41257,"src":"4881:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_BeaconProxy_$41257","typeString":"contract BeaconProxy"}},"visibility":"internal"}],"id":42372,"initialValue":{"arguments":[{"id":42369,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42188,"src":"4928:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42370,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42352,"src":"4936:8:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4912:15:44","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_BeaconProxy_$41257_$","typeString":"function (address,bytes memory) payable returns (contract BeaconProxy)"},"typeName":{"id":42367,"nodeType":"UserDefinedTypeName","pathNode":{"id":42366,"name":"BeaconProxy","nameLocations":["4916:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":41257,"src":"4916:11:44"},"referencedDeclaration":41257,"src":"4916:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_BeaconProxy_$41257","typeString":"contract BeaconProxy"}}},"id":42371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4912:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BeaconProxy_$41257","typeString":"contract BeaconProxy"}},"nodeType":"VariableDeclarationStatement","src":"4881:64:44"},{"assignments":[42374],"declarations":[{"constant":false,"id":42374,"mutability":"mutable","name":"newCreditToken","nameLocation":"4967:14:44","nodeType":"VariableDeclaration","scope":42413,"src":"4959:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42373,"name":"address","nodeType":"ElementaryTypeName","src":"4959:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42379,"initialValue":{"arguments":[{"id":42377,"name":"proxyCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42365,"src":"4992:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_BeaconProxy_$41257","typeString":"contract BeaconProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BeaconProxy_$41257","typeString":"contract BeaconProxy"}],"id":42376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4984:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42375,"name":"address","nodeType":"ElementaryTypeName","src":"4984:7:44","typeDescriptions":{}}},"id":42378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4959:50:44"},{"expression":{"id":42384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42380,"name":"creditIdToAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42176,"src":"5023:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_address_$","typeString":"mapping(string memory => address)"}},"id":42382,"indexExpression":{"id":42381,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42273,"src":"5041:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5023:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":42383,"name":"newCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42374,"src":"5053:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5023:44:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42385,"nodeType":"ExpressionStatement","src":"5023:44:44"},{"expression":{"id":42390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42386,"name":"creditAddressToId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42181,"src":"5081:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_string_storage_$","typeString":"mapping(address => string storage ref)"}},"id":42388,"indexExpression":{"id":42387,"name":"newCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42374,"src":"5099:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5081:33:44","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":42389,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42273,"src":"5117:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"src":"5081:44:44","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":42391,"nodeType":"ExpressionStatement","src":"5081:44:44"},{"expression":{"arguments":[{"id":42395,"name":"newCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42374,"src":"5160:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42392,"name":"creditAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42185,"src":"5139:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":42394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5155:4:44","memberName":"push","nodeType":"MemberAccess","src":"5139:20:44","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":42396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42397,"nodeType":"ExpressionStatement","src":"5139:36:44"},{"expression":{"arguments":[{"id":42402,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"5222:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42403,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42275,"src":"5226:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":42399,"name":"newCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42374,"src":"5201:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42398,"name":"CreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42138,"src":"5189:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CreditToken_$42138_$","typeString":"type(contract CreditToken)"}},"id":42400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5189:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CreditToken_$42138","typeString":"contract CreditToken"}},"id":42401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5217:4:44","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":42036,"src":"5189:32:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":42404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5189:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42405,"nodeType":"ExpressionStatement","src":"5189:44:44"},{"eventCall":{"arguments":[{"id":42407,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42273,"src":"5259:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42408,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42275,"src":"5269:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":42409,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"5277:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42410,"name":"newCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42374,"src":"5281:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42406,"name":"Issued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42213,"src":"5252:6:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (string memory,uint256,address,address)"}},"id":42411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5252:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42412,"nodeType":"EmitStatement","src":"5247:49:44"}]},"id":42414,"nodeType":"IfStatement","src":"4298:1009:44","trueBody":{"id":42350,"nodeType":"Block","src":"4337:182:44","statements":[{"expression":{"arguments":[{"id":42339,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"4429:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42340,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42275,"src":"4433:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":42336,"name":"existingCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42324,"src":"4403:19:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42335,"name":"CreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42138,"src":"4391:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CreditToken_$42138_$","typeString":"type(contract CreditToken)"}},"id":42337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4391:32:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CreditToken_$42138","typeString":"contract CreditToken"}},"id":42338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4424:4:44","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":42036,"src":"4391:37:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":42341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4391:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42342,"nodeType":"ExpressionStatement","src":"4391:49:44"},{"eventCall":{"arguments":[{"id":42344,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42273,"src":"4466:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42345,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42275,"src":"4476:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":42346,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42277,"src":"4484:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42347,"name":"existingCreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42324,"src":"4488:19:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42343,"name":"Issued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42213,"src":"4459:6:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (string memory,uint256,address,address)"}},"id":42348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4459:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42349,"nodeType":"EmitStatement","src":"4454:54:44"}]}}]},"documentation":{"id":42271,"nodeType":"StructuredDocumentation","src":"3579:191:44","text":"@notice Issues new credits to a new or existing credit token contract\n @param creditId The credit ID to deploy 'CMARK-1-2024'\n @param amount The amount of credits to issue"},"functionSelector":"f3199695","implemented":true,"kind":"function","modifiers":[{"id":42280,"kind":"modifierInvocation","modifierName":{"id":42279,"name":"onlyOwner","nameLocations":["3860:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"3860:9:44"},"nodeType":"ModifierInvocation","src":"3860:9:44"},{"id":42282,"kind":"modifierInvocation","modifierName":{"id":42281,"name":"whenNotPaused","nameLocations":["3870:13:44"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"3870:13:44"},"nodeType":"ModifierInvocation","src":"3870:13:44"}],"name":"issueCredits","nameLocation":"3784:12:44","parameters":{"id":42278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42273,"mutability":"mutable","name":"creditId","nameLocation":"3813:8:44","nodeType":"VariableDeclaration","scope":42416,"src":"3797:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42272,"name":"string","nodeType":"ElementaryTypeName","src":"3797:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42275,"mutability":"mutable","name":"amount","nameLocation":"3831:6:44","nodeType":"VariableDeclaration","scope":42416,"src":"3823:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42274,"name":"uint256","nodeType":"ElementaryTypeName","src":"3823:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42277,"mutability":"mutable","name":"to","nameLocation":"3847:2:44","nodeType":"VariableDeclaration","scope":42416,"src":"3839:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42276,"name":"address","nodeType":"ElementaryTypeName","src":"3839:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3796:54:44"},"returnParameters":{"id":42283,"nodeType":"ParameterList","parameters":[],"src":"3884:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42476,"nodeType":"FunctionDefinition","src":"5704:463:44","nodes":[],"body":{"id":42475,"nodeType":"Block","src":"5869:298:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":42435,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42421,"src":"5902:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42432,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"5879:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5888:13:44","memberName":"notZeroAmount","nodeType":"MemberAccess","referencedDeclaration":42842,"src":"5879:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":42436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5879:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42437,"nodeType":"ExpressionStatement","src":"5879:30:44"},{"expression":{"arguments":[{"id":42441,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42423,"src":"5938:6:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42442,"name":"CANCEL_REASON_MAX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42171,"src":"5946:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":42438,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"5919:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5928:9:44","memberName":"maxLength","nodeType":"MemberAccess","referencedDeclaration":42863,"src":"5919:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (string memory,uint256) pure"}},"id":42443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5919:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42444,"nodeType":"ExpressionStatement","src":"5919:45:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":42447,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42423,"src":"5984:6:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":42446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5978:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42445,"name":"bytes","nodeType":"ElementaryTypeName","src":"5978:5:44","typeDescriptions":{}}},"id":42448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5978:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":42449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5992:6:44","memberName":"length","nodeType":"MemberAccess","src":"5978:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":42450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6002:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5978:25:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42457,"nodeType":"IfStatement","src":"5974:58:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42452,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42805,"src":"6012:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$42805_$","typeString":"type(library Errors)"}},"id":42454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6019:11:44","memberName":"EmptyReason","nodeType":"MemberAccess","referencedDeclaration":42789,"src":"6012:18:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6012:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42456,"nodeType":"RevertStatement","src":"6005:27:44"}},{"expression":{"arguments":[{"id":42464,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42421,"src":"6090:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":42465,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42425,"src":"6098:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":42460,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42419,"src":"6072:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":42459,"name":"_getCreditAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42673,"src":"6054:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_calldata_ptr_$returns$_t_address_$","typeString":"function (string calldata) view returns (address)"}},"id":42461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6054:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42458,"name":"CreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42138,"src":"6042:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CreditToken_$42138_$","typeString":"type(contract CreditToken)"}},"id":42462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6042:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CreditToken_$42138","typeString":"contract CreditToken"}},"id":42463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6083:6:44","memberName":"cancel","nodeType":"MemberAccess","referencedDeclaration":42001,"src":"6042:47:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) external"}},"id":42466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6042:62:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42467,"nodeType":"ExpressionStatement","src":"6042:62:44"},{"eventCall":{"arguments":[{"id":42469,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42421,"src":"6128:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":42470,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42423,"src":"6136:6:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42471,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42419,"src":"6144:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":42472,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42425,"src":"6154:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42468,"name":"Canceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42202,"src":"6119:8:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256,string memory,string memory,address)"}},"id":42473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6119:41:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42474,"nodeType":"EmitStatement","src":"6114:46:44"}]},"documentation":{"id":42417,"nodeType":"StructuredDocumentation","src":"5319:380:44","text":"@notice Cancels a specified amount of credits for a given credit ID and owner.\n @dev Paused credits can still be canceled.\n @param creditId The ID of the credit to cancel.\n @param amount The amount of credits to cancel.\n @param reason The reason for cancellation.\n @param owner The address of the account from which to cancel credits."},"functionSelector":"17d4ecaa","implemented":true,"kind":"function","modifiers":[{"id":42428,"kind":"modifierInvocation","modifierName":{"id":42427,"name":"onlyOwner","nameLocations":["5833:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"5833:9:44"},"nodeType":"ModifierInvocation","src":"5833:9:44"},{"id":42430,"kind":"modifierInvocation","modifierName":{"id":42429,"name":"whenNotPaused","nameLocations":["5851:13:44"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"5851:13:44"},"nodeType":"ModifierInvocation","src":"5851:13:44"}],"name":"cancelCredits","nameLocation":"5713:13:44","parameters":{"id":42426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42419,"mutability":"mutable","name":"creditId","nameLocation":"5743:8:44","nodeType":"VariableDeclaration","scope":42476,"src":"5727:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42418,"name":"string","nodeType":"ElementaryTypeName","src":"5727:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42421,"mutability":"mutable","name":"amount","nameLocation":"5761:6:44","nodeType":"VariableDeclaration","scope":42476,"src":"5753:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5753:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42423,"mutability":"mutable","name":"reason","nameLocation":"5785:6:44","nodeType":"VariableDeclaration","scope":42476,"src":"5769:22:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42422,"name":"string","nodeType":"ElementaryTypeName","src":"5769:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42425,"mutability":"mutable","name":"owner","nameLocation":"5801:5:44","nodeType":"VariableDeclaration","scope":42476,"src":"5793:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42424,"name":"address","nodeType":"ElementaryTypeName","src":"5793:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5726:81:44"},"returnParameters":{"id":42431,"nodeType":"ParameterList","parameters":[],"src":"5869:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42495,"nodeType":"FunctionDefinition","src":"6364:145:44","nodes":[],"body":{"id":42494,"nodeType":"Block","src":"6444:65:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":42488,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42479,"src":"6484:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":42487,"name":"_getCreditAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42673,"src":"6466:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_calldata_ptr_$returns$_t_address_$","typeString":"function (string calldata) view returns (address)"}},"id":42489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6466:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42486,"name":"CreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42138,"src":"6454:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CreditToken_$42138_$","typeString":"type(contract CreditToken)"}},"id":42490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6454:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CreditToken_$42138","typeString":"contract CreditToken"}},"id":42491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6495:5:44","memberName":"pause","nodeType":"MemberAccess","referencedDeclaration":42010,"src":"6454:46:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":42492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6454:48:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42493,"nodeType":"ExpressionStatement","src":"6454:48:44"}]},"documentation":{"id":42477,"nodeType":"StructuredDocumentation","src":"6173:186:44","text":"@notice Pauses the specified CreditToken contract.\n @dev Paused credits can still be canceled, but not issued.\n @param creditId The ID of the credit token to pause."},"functionSelector":"53a61259","implemented":true,"kind":"function","modifiers":[{"id":42482,"kind":"modifierInvocation","modifierName":{"id":42481,"name":"onlyOwner","nameLocations":["6420:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"6420:9:44"},"nodeType":"ModifierInvocation","src":"6420:9:44"},{"id":42484,"kind":"modifierInvocation","modifierName":{"id":42483,"name":"whenNotPaused","nameLocations":["6430:13:44"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"6430:13:44"},"nodeType":"ModifierInvocation","src":"6430:13:44"}],"name":"pauseCredit","nameLocation":"6373:11:44","parameters":{"id":42480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42479,"mutability":"mutable","name":"creditId","nameLocation":"6401:8:44","nodeType":"VariableDeclaration","scope":42495,"src":"6385:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42478,"name":"string","nodeType":"ElementaryTypeName","src":"6385:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6384:26:44"},"returnParameters":{"id":42485,"nodeType":"ParameterList","parameters":[],"src":"6444:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42514,"nodeType":"FunctionDefinition","src":"6640:149:44","nodes":[],"body":{"id":42513,"nodeType":"Block","src":"6722:67:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":42507,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42498,"src":"6762:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":42506,"name":"_getCreditAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42673,"src":"6744:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_calldata_ptr_$returns$_t_address_$","typeString":"function (string calldata) view returns (address)"}},"id":42508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6744:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42505,"name":"CreditToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42138,"src":"6732:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CreditToken_$42138_$","typeString":"type(contract CreditToken)"}},"id":42509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6732:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CreditToken_$42138","typeString":"contract CreditToken"}},"id":42510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6773:7:44","memberName":"unpause","nodeType":"MemberAccess","referencedDeclaration":42019,"src":"6732:48:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":42511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6732:50:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42512,"nodeType":"ExpressionStatement","src":"6732:50:44"}]},"documentation":{"id":42496,"nodeType":"StructuredDocumentation","src":"6515:120:44","text":"@notice Unpauses the specified CreditToken contract.\n @param creditId The ID of the credit token to unpause."},"functionSelector":"78017977","implemented":true,"kind":"function","modifiers":[{"id":42501,"kind":"modifierInvocation","modifierName":{"id":42500,"name":"onlyOwner","nameLocations":["6698:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"6698:9:44"},"nodeType":"ModifierInvocation","src":"6698:9:44"},{"id":42503,"kind":"modifierInvocation","modifierName":{"id":42502,"name":"whenNotPaused","nameLocations":["6708:13:44"],"nodeType":"IdentifierPath","referencedDeclaration":40429,"src":"6708:13:44"},"nodeType":"ModifierInvocation","src":"6708:13:44"}],"name":"unpauseCredit","nameLocation":"6649:13:44","parameters":{"id":42499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42498,"mutability":"mutable","name":"creditId","nameLocation":"6679:8:44","nodeType":"VariableDeclaration","scope":42514,"src":"6663:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42497,"name":"string","nodeType":"ElementaryTypeName","src":"6663:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6662:26:44"},"returnParameters":{"id":42504,"nodeType":"ParameterList","parameters":[],"src":"6722:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42523,"nodeType":"FunctionDefinition","src":"6795:61:44","nodes":[],"body":{"id":42522,"nodeType":"Block","src":"6831:25:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42519,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40502,"src":"6841:6:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6841:8:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42521,"nodeType":"ExpressionStatement","src":"6841:8:44"}]},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":42517,"kind":"modifierInvocation","modifierName":{"id":42516,"name":"onlyOwner","nameLocations":["6821:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"6821:9:44"},"nodeType":"ModifierInvocation","src":"6821:9:44"}],"name":"pause","nameLocation":"6804:5:44","parameters":{"id":42515,"nodeType":"ParameterList","parameters":[],"src":"6809:2:44"},"returnParameters":{"id":42518,"nodeType":"ParameterList","parameters":[],"src":"6831:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42532,"nodeType":"FunctionDefinition","src":"6862:65:44","nodes":[],"body":{"id":42531,"nodeType":"Block","src":"6900:27:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42528,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40526,"src":"6910:8:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6910:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42530,"nodeType":"ExpressionStatement","src":"6910:10:44"}]},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":42526,"kind":"modifierInvocation","modifierName":{"id":42525,"name":"onlyOwner","nameLocations":["6890:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"6890:9:44"},"nodeType":"ModifierInvocation","src":"6890:9:44"}],"name":"unpause","nameLocation":"6871:7:44","parameters":{"id":42524,"nodeType":"ParameterList","parameters":[],"src":"6878:2:44"},"returnParameters":{"id":42527,"nodeType":"ParameterList","parameters":[],"src":"6900:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42560,"nodeType":"FunctionDefinition","src":"7275:243:44","nodes":[],"body":{"id":42559,"nodeType":"Block","src":"7342:176:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":42543,"name":"creditTokenImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42535,"src":"7376:15:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42540,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"7352:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7361:14:44","memberName":"notZeroAddress","nodeType":"MemberAccess","referencedDeclaration":42827,"src":"7352:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":42544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7352:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42545,"nodeType":"ExpressionStatement","src":"7352:40:44"},{"assignments":[42548],"declarations":[{"constant":false,"id":42548,"mutability":"mutable","name":"currentBeacon","nameLocation":"7420:13:44","nodeType":"VariableDeclaration","scope":42559,"src":"7402:31:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"},"typeName":{"id":42547,"nodeType":"UserDefinedTypeName","pathNode":{"id":42546,"name":"UpgradeableBeacon","nameLocations":["7402:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":41355,"src":"7402:17:44"},"referencedDeclaration":41355,"src":"7402:17:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"visibility":"internal"}],"id":42552,"initialValue":{"arguments":[{"id":42550,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42188,"src":"7454:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42549,"name":"UpgradeableBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41355,"src":"7436:17:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UpgradeableBeacon_$41355_$","typeString":"type(contract UpgradeableBeacon)"}},"id":42551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7436:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"nodeType":"VariableDeclarationStatement","src":"7402:59:44"},{"expression":{"arguments":[{"id":42556,"name":"creditTokenImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42535,"src":"7495:15:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42553,"name":"currentBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42548,"src":"7471:13:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"id":42555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7485:9:44","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":41328,"src":"7471:23:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":42557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7471:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42558,"nodeType":"ExpressionStatement","src":"7471:40:44"}]},"documentation":{"id":42533,"nodeType":"StructuredDocumentation","src":"6933:337:44","text":"@notice Upgrade CreditTokens by pointing the existing beacon at a new implementation.\n @dev This upgrades all child credits who were already deployed with this beacon.\n For backwards-incompatible upgrades, see `deployNewBeacon()`.\n @param creditTokenImpl Address of the new CreditToken implementation"},"functionSelector":"1bce4583","implemented":true,"kind":"function","modifiers":[{"id":42538,"kind":"modifierInvocation","modifierName":{"id":42537,"name":"onlyOwner","nameLocations":["7332:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"7332:9:44"},"nodeType":"ModifierInvocation","src":"7332:9:44"}],"name":"upgradeBeacon","nameLocation":"7284:13:44","parameters":{"id":42536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42535,"mutability":"mutable","name":"creditTokenImpl","nameLocation":"7306:15:44","nodeType":"VariableDeclaration","scope":42560,"src":"7298:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42534,"name":"address","nodeType":"ElementaryTypeName","src":"7298:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7297:25:44"},"returnParameters":{"id":42539,"nodeType":"ParameterList","parameters":[],"src":"7342:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42595,"nodeType":"FunctionDefinition","src":"8029:310:44","nodes":[],"body":{"id":42594,"nodeType":"Block","src":"8098:241:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":42571,"name":"creditTokenImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42563,"src":"8132:15:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42568,"name":"Validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42864,"src":"8108:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Validate_$42864_$","typeString":"type(library Validate)"}},"id":42570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8117:14:44","memberName":"notZeroAddress","nodeType":"MemberAccess","referencedDeclaration":42827,"src":"8108:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":42572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8108:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42573,"nodeType":"ExpressionStatement","src":"8108:40:44"},{"assignments":[42576],"declarations":[{"constant":false,"id":42576,"mutability":"mutable","name":"newBeacon","nameLocation":"8176:9:44","nodeType":"VariableDeclaration","scope":42594,"src":"8158:27:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"},"typeName":{"id":42575,"nodeType":"UserDefinedTypeName","pathNode":{"id":42574,"name":"UpgradeableBeacon","nameLocations":["8158:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":41355,"src":"8158:17:44"},"referencedDeclaration":41355,"src":"8158:17:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"visibility":"internal"}],"id":42586,"initialValue":{"arguments":[{"id":42580,"name":"creditTokenImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42563,"src":"8223:15:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":42583,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8260:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CreditTokenFactory_$42674","typeString":"contract CreditTokenFactory"}],"id":42582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8252:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42581,"name":"address","nodeType":"ElementaryTypeName","src":"8252:7:44","typeDescriptions":{}}},"id":42584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8252:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"8188:21:44","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$_t_address_$returns$_t_contract$_UpgradeableBeacon_$41355_$","typeString":"function (address,address) returns (contract UpgradeableBeacon)"},"typeName":{"id":42578,"nodeType":"UserDefinedTypeName","pathNode":{"id":42577,"name":"UpgradeableBeacon","nameLocations":["8192:17:44"],"nodeType":"IdentifierPath","referencedDeclaration":41355,"src":"8192:17:44"},"referencedDeclaration":41355,"src":"8192:17:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}}},"id":42585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:107:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}},"nodeType":"VariableDeclarationStatement","src":"8158:137:44"},{"expression":{"id":42592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42587,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42188,"src":"8305:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":42590,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42576,"src":"8322:9:44","typeDescriptions":{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UpgradeableBeacon_$41355","typeString":"contract UpgradeableBeacon"}],"id":42589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8314:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42588,"name":"address","nodeType":"ElementaryTypeName","src":"8314:7:44","typeDescriptions":{}}},"id":42591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8314:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8305:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42593,"nodeType":"ExpressionStatement","src":"8305:27:44"}]},"documentation":{"id":42561,"nodeType":"StructuredDocumentation","src":"7524:500:44","text":"@notice Deploys new UpgradeableBeacon for backwards-incompatable CreditToken upgrades.\n @dev Only newly issued credits will use this new beacon's implementation.\n Prefer `upgradeBeacon()` instead, if implementation is backwards compatible.\n Or consider deploying a new factory instead.\n After deploying a new beacon, the previous beacon can no longer be upgraded.\n @param creditTokenImpl Address of the new CreditToken implementation"},"functionSelector":"9c1e1e4d","implemented":true,"kind":"function","modifiers":[{"id":42566,"kind":"modifierInvocation","modifierName":{"id":42565,"name":"onlyOwner","nameLocations":["8088:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"8088:9:44"},"nodeType":"ModifierInvocation","src":"8088:9:44"}],"name":"deployNewBeacon","nameLocation":"8038:15:44","parameters":{"id":42564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42563,"mutability":"mutable","name":"creditTokenImpl","nameLocation":"8062:15:44","nodeType":"VariableDeclaration","scope":42595,"src":"8054:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42562,"name":"address","nodeType":"ElementaryTypeName","src":"8054:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8053:25:44"},"returnParameters":{"id":42567,"nodeType":"ParameterList","parameters":[],"src":"8098:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42621,"nodeType":"FunctionDefinition","src":"8395:193:44","nodes":[],"body":{"id":42620,"nodeType":"Block","src":"8431:157:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42599,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8445:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8449:6:44","memberName":"sender","nodeType":"MemberAccess","src":"8445:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":42601,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42191,"src":"8459:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8445:26:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42608,"nodeType":"IfStatement","src":"8441:63:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42603,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42805,"src":"8480:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$42805_$","typeString":"type(library Errors)"}},"id":42605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8487:15:44","memberName":"NotPendingOwner","nodeType":"MemberAccess","referencedDeclaration":42801,"src":"8480:22:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8480:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42607,"nodeType":"RevertStatement","src":"8473:31:44"}},{"expression":{"arguments":[{"id":42610,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42191,"src":"8533:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42609,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39251,"src":"8514:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":42611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8514:32:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42612,"nodeType":"ExpressionStatement","src":"8514:32:44"},{"expression":{"id":42618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42613,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42191,"src":"8556:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":42616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8579:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":42615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8571:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42614,"name":"address","nodeType":"ElementaryTypeName","src":"8571:7:44","typeDescriptions":{}}},"id":42617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8571:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8556:25:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42619,"nodeType":"ExpressionStatement","src":"8556:25:44"}]},"documentation":{"id":42596,"nodeType":"StructuredDocumentation","src":"8345:45:44","text":"@notice Accept pending ownership transfer"},"functionSelector":"79ba5097","implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"8404:15:44","parameters":{"id":42597,"nodeType":"ParameterList","parameters":[],"src":"8419:2:44"},"returnParameters":{"id":42598,"nodeType":"ParameterList","parameters":[],"src":"8431:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":42635,"nodeType":"FunctionDefinition","src":"8712:111:44","nodes":[],"body":{"id":42634,"nodeType":"Block","src":"8783:40:44","nodes":[],"statements":[{"expression":{"id":42632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42630,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42191,"src":"8793:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":42631,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42624,"src":"8808:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8793:23:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42633,"nodeType":"ExpressionStatement","src":"8793:23:44"}]},"baseFunctions":[39222],"documentation":{"id":42622,"nodeType":"StructuredDocumentation","src":"8594:113:44","text":"@notice Push ownership request to a new pending owner.\n @param newOwner The new owner of the contract"},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":42628,"kind":"modifierInvocation","modifierName":{"id":42627,"name":"onlyOwner","nameLocations":["8773:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"8773:9:44"},"nodeType":"ModifierInvocation","src":"8773:9:44"}],"name":"transferOwnership","nameLocation":"8721:17:44","overrides":{"id":42626,"nodeType":"OverrideSpecifier","overrides":[],"src":"8764:8:44"},"parameters":{"id":42625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42624,"mutability":"mutable","name":"newOwner","nameLocation":"8747:8:44","nodeType":"VariableDeclaration","scope":42635,"src":"8739:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42623,"name":"address","nodeType":"ElementaryTypeName","src":"8739:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8738:18:44"},"returnParameters":{"id":42629,"nodeType":"ParameterList","parameters":[],"src":"8783:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":42645,"nodeType":"FunctionDefinition","src":"8887:84:44","nodes":[],"body":{"id":42644,"nodeType":"Block","src":"8969:2:44","nodes":[],"statements":[]},"baseFunctions":[39642],"documentation":{"id":42636,"nodeType":"StructuredDocumentation","src":"8829:53:44","text":"@dev enforce that the UUPS upgrade is admin-only."},"implemented":true,"kind":"function","modifiers":[{"id":42642,"kind":"modifierInvocation","modifierName":{"id":42641,"name":"onlyOwner","nameLocations":["8959:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":39147,"src":"8959:9:44"},"nodeType":"ModifierInvocation","src":"8959:9:44"}],"name":"_authorizeUpgrade","nameLocation":"8896:17:44","overrides":{"id":42640,"nodeType":"OverrideSpecifier","overrides":[],"src":"8950:8:44"},"parameters":{"id":42639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42638,"mutability":"mutable","name":"newImplementation","nameLocation":"8922:17:44","nodeType":"VariableDeclaration","scope":42645,"src":"8914:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42637,"name":"address","nodeType":"ElementaryTypeName","src":"8914:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8913:27:44"},"returnParameters":{"id":42643,"nodeType":"ParameterList","parameters":[],"src":"8969:0:44"},"scope":42674,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42673,"nodeType":"FunctionDefinition","src":"8977:233:44","nodes":[],"body":{"id":42672,"nodeType":"Block","src":"9062:148:44","nodes":[],"statements":[{"assignments":[42653],"declarations":[{"constant":false,"id":42653,"mutability":"mutable","name":"addr","nameLocation":"9080:4:44","nodeType":"VariableDeclaration","scope":42672,"src":"9072:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42652,"name":"address","nodeType":"ElementaryTypeName","src":"9072:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42657,"initialValue":{"baseExpression":{"id":42654,"name":"creditIdToAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42176,"src":"9087:17:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_address_$","typeString":"mapping(string memory => address)"}},"id":42656,"indexExpression":{"id":42655,"name":"creditId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42647,"src":"9105:8:44","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9087:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9072:42:44"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42658,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42653,"src":"9128:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":42661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9144:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":42660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9136:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42659,"name":"address","nodeType":"ElementaryTypeName","src":"9136:7:44","typeDescriptions":{}}},"id":42662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9136:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9128:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42669,"nodeType":"IfStatement","src":"9124:58:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42664,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42805,"src":"9155:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$42805_$","typeString":"type(library Errors)"}},"id":42666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9162:18:44","memberName":"CreditDoesNotExist","nodeType":"MemberAccess","referencedDeclaration":42798,"src":"9155:25:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9155:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42668,"nodeType":"RevertStatement","src":"9148:34:44"}},{"expression":{"id":42670,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42653,"src":"9199:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42651,"id":42671,"nodeType":"Return","src":"9192:11:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getCreditAddress","nameLocation":"8986:17:44","parameters":{"id":42648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42647,"mutability":"mutable","name":"creditId","nameLocation":"9020:8:44","nodeType":"VariableDeclaration","scope":42673,"src":"9004:24:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":42646,"name":"string","nodeType":"ElementaryTypeName","src":"9004:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9003:26:44"},"returnParameters":{"id":42651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42673,"src":"9053:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42649,"name":"address","nodeType":"ElementaryTypeName","src":"9053:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9052:9:44"},"scope":42674,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":42160,"name":"Initializable","nameLocations":["1179:13:44"],"nodeType":"IdentifierPath","referencedDeclaration":39506,"src":"1179:13:44"},"id":42161,"nodeType":"InheritanceSpecifier","src":"1179:13:44"},{"baseName":{"id":42162,"name":"UUPSUpgradeable","nameLocations":["1194:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":39688,"src":"1194:15:44"},"id":42163,"nodeType":"InheritanceSpecifier","src":"1194:15:44"},{"baseName":{"id":42164,"name":"OwnableUpgradeable","nameLocations":["1211:18:44"],"nodeType":"IdentifierPath","referencedDeclaration":39252,"src":"1211:18:44"},"id":42165,"nodeType":"InheritanceSpecifier","src":"1211:18:44"},{"baseName":{"id":42166,"name":"PausableUpgradeable","nameLocations":["1231:19:44"],"nodeType":"IdentifierPath","referencedDeclaration":40527,"src":"1231:19:44"},"id":42167,"nodeType":"InheritanceSpecifier","src":"1231:19:44"}],"canonicalName":"CreditTokenFactory","contractDependencies":[41257,41355],"contractKind":"contract","documentation":{"id":42159,"nodeType":"StructuredDocumentation","src":"790:358:44","text":"@title Factory for CMARK ERC20 credit contracts\n @author Atmosfearful\n @notice The factory is used to:\n - Issue new credits (deploying a new CreditToken contract if needed)\n - Cancel a balance of credits\n - Pause and unpause CreditToken contracts\n - Upgrade the implementation contract for CreditTokens"},"fullyImplemented":true,"linearizedBaseContracts":[42674,40527,39252,40351,39688,40685,39506],"name":"CreditTokenFactory","nameLocation":"1157:18:44","scope":42675,"usedErrors":[39088,39093,39269,39272,39533,39538,40390,40393,40895,40908,41472,41475,42783,42786,42789,42792,42795,42798,42801,42804],"usedEvents":[39099,39277,40382,40387,40874,42202,42213]}],"license":"UNLICENSED"},"id":44} \ No newline at end of file +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"CreditDoesNotExist","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"EmptyReason","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"MaxLength","type":"error"},{"inputs":[],"name":"NoFactoryIssuance","type":"error"},{"inputs":[],"name":"NoSelfIssuance","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotPendingOwner","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"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":true,"internalType":"string","name":"creditId","type":"string"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Canceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"creditId","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"creditTokenAddress","type":"address"}],"name":"Issued","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"beacon","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"name":"cancelCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"creditAddressToId","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"creditAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"creditIdToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creditTokenImpl","type":"address"}],"name":"deployNewBeacon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllCreditAddresses","outputs":[{"internalType":"address[]","name":"allCreditAddresses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"creditTokenImpl","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"issueCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"}],"name":"pauseCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"creditId","type":"string"}],"name":"unpauseCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creditTokenImpl","type":"address"}],"name":"upgradeBeacon","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"}] diff --git a/polygon-digital-carbon/src/templates/CarbonmarkCreditTokenFactory.ts b/polygon-digital-carbon/src/templates/CarbonmarkCreditTokenFactory.ts new file mode 100644 index 00000000..b78eee32 --- /dev/null +++ b/polygon-digital-carbon/src/templates/CarbonmarkCreditTokenFactory.ts @@ -0,0 +1,16 @@ +import { CarbonmarkCreditToken } from '../../generated/templates' +import { + NewTokenProject +} from '../../generated/C3ProjectTokenFactory/C3ProjectTokenFactory' +import { loadOrCreateCarbonCredit, updateCarbonCreditWithCall } from '../utils/CarbonCredit' +import { createTokenWithCall } from '../utils/Token' + + +export function handleNewCarbonmarkCredit(event: NewTokenProject): void { + // Start indexing the C3T tokens; `event.params.tokenAddress` is the + // address of the new token contract + CarbonmarkCreditToken.create(event.params.tokenAddress) + loadOrCreateCarbonCredit(event.params.tokenAddress, 'CMARK', null) + createTokenWithCall(event.params.tokenAddress, event.block) + updateCarbonCreditWithCall(event.params.tokenAddress, '') +} diff --git a/polygon-digital-carbon/subgraph.yaml b/polygon-digital-carbon/subgraph.yaml index cbe7360f..b5e75996 100644 --- a/polygon-digital-carbon/subgraph.yaml +++ b/polygon-digital-carbon/subgraph.yaml @@ -5,7 +5,7 @@ schema: file: ./schema.graphql dataSources: - kind: ethereum/contract - name: CarbonProjectsAddress + name: CarbonProjectsAddress network: matic source: address: '0x599a978c43F5cEa1B26a399D28869Ad4690DC07d' @@ -74,12 +74,12 @@ dataSources: - name: ERC20 file: ../lib/abis/ERC20.json - name: ToucanContractRegistry - file: ../lib/abis/ToucanContractRegistry.json + file: ../lib/abis/ToucanContractRegistry.json - name: ToucanCarbonOffsetBatches - file: ../lib/abis/ToucanCarbonOffsetBatches.json + file: ../lib/abis/ToucanCarbonOffsetBatches.json eventHandlers: - event: TokenCreated(uint256,address) - handler: handleNewPuroTCO2 + handler: handleNewPuroTCO2 - kind: ethereum/contract name: ToucanCarbonOffsetBatch network: matic @@ -107,7 +107,7 @@ dataSources: - event: BatchUpdated(uint256,string,uint256) handler: handleBatchUpdated - event: Transfer(indexed address,indexed address,indexed uint256) - handler: handleBatchTransfer + handler: handleBatchTransfer - kind: ethereum/contract name: BCT network: matic @@ -238,7 +238,7 @@ dataSources: file: ../lib/abis/ERC20.json eventHandlers: - event: Transfer(indexed address,indexed address,uint256) - handler: handleCreditTransfer + handler: handleCreditTransfer - kind: ethereum/contract name: MossCarbonOffset network: matic @@ -280,11 +280,11 @@ dataSources: file: ../lib/abis/CCO2.json - name: ERC20 file: ../lib/abis/ERC20.json - eventHandlers: + eventHandlers: - event: Transfer(indexed address,indexed address,uint256) - handler: handleCreditTransfer + handler: handleCreditTransfer - event: burnedCO2Token(uint256) - handler: handleCCO2Retired + handler: handleCCO2Retired - kind: ethereum/contract name: Coorest network: matic @@ -302,9 +302,9 @@ dataSources: abis: - name: Coorest file: ../lib/abis/Coorest.json - eventHandlers: - - event: returnedPoccID(uint256) - handler: handleReturnedPoccID + eventHandlers: + - event: returnedPoccID(uint256) + handler: handleReturnedPoccID - kind: ethereum/contract name: C3ProjectTokenFactory network: matic @@ -336,6 +336,37 @@ dataSources: handler: handleStartAsyncToken - event: EndAsyncToken(address,address,address,uint256,string,string,uint256,uint256,bool,uint256) handler: handleEndAsyncToken + - kind: ethereum/contract + name: CarbonmarkCreditTokenFactory + network: matic + source: + address: '0xa4c951B30952f5E2feFC8a92F4d3c7551925A63B' + abi: CarbonmarkCreditTokenFactory + startBlock: 65350000 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + file: ./src/templates/CarbonmarkCreditTokenFactory.ts + entities: + - CarbonmarkCreditTokenFactory + abis: + - name: CarbonmarkCreditTokenFactory + file: ../lib/abis/CarbonmarkCreditTokenFactory.json + - name: C3ProjectToken + file: ../lib/abis/CarbonmarkCreditToken.json + - name: ERC20 + file: ../lib/abis/ERC20.json + # TODO: determine whether to include + # - name: CarbonmarkCertificateNFT + # file: ../lib/abis/CarbonmarkCertificateNFT.json + eventHandlers: + # TODO: implement this handler + - event: Issued(string,uint256,address,address) + handler: handleNewCarbonmarkCredit + # TODO: determine if we need a handler for cancellation event + # - event: Issued(string,uint256,address,address) + # handler: handleCancelledCMARK - kind: ethereum/contract name: UBO network: matic @@ -510,7 +541,7 @@ dataSources: file: ../lib/abis/ERC20.json eventHandlers: - event: C3Retired(indexed address,indexed address,string,string,indexed address,address,uint256) - handler: handleC3Retired + handler: handleC3Retired - kind: ethereum/contract name: KlimaInfinity network: matic @@ -535,9 +566,9 @@ dataSources: - name: ToucanCarbonOffsets file: ../lib/abis/ToucanCarbonOffsets.json - name: ToucanContractRegistry - file: ../lib/abis/ToucanContractRegistry.json + file: ../lib/abis/ToucanContractRegistry.json - name: ToucanCarbonOffsetBatches - file: ../lib/abis/ToucanCarbonOffsetBatches.json + file: ../lib/abis/ToucanCarbonOffsetBatches.json eventHandlers: - event: CarbonRetired(uint8,indexed address,string,indexed address,string,string,indexed address,address,uint256) handler: handleCarbonRetired @@ -620,7 +651,7 @@ templates: handler: handleToucanPuroRetirementReverted - event: Transfer(indexed address,indexed address,uint256) handler: handleCreditTransfer - file: ./src/TransferHandler.ts + file: ./src/TransferHandler.ts - name: C3ProjectToken kind: ethereum/contract network: matic @@ -641,6 +672,26 @@ templates: - event: Transfer(indexed address,indexed address,uint256) handler: handleCreditTransfer file: ./src/TransferHandler.ts + - name: CarbonmarkCreditToken + kind: ethereum/contract + network: matic + source: + abi: CarbonmarkCreditToken + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - CarbonmarkCreditToken + abis: + - name: CarbonmarkCreditToken + file: ../lib/abis/CarbonmarkCreditToken.json + - name: ERC20 + file: ../lib/abis/ERC20.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleCreditTransfer + file: ./src/TransferHandler.ts - name: ICRProjectToken kind: ethereum/contract network: matic @@ -677,7 +728,7 @@ templates: file: ./src/MetadataHandler.ts handler: handleC3RetirementMetadata entities: - - C3RetireRequest + - C3RetireRequest - C3RetirementMetadata - C3MetadataProject abis: