{
	"format": "sphinx-sol-ct-artifact-1",
	"address": "0x77bee1ad2ac0ace98a9b5b58d75685c8b4d94948",
	"sourceName": "node_modules/@bananapus/buyback-hook-v6/src/JBBuybackHook.sol",
	"contractName": "JBBuybackHook",
	"chainId": "0xa",
	"abi": [
		{
			"type": "constructor",
			"inputs": [
				{
					"name": "directory",
					"type": "address",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "permissions",
					"type": "address",
					"internalType": "contract IJBPermissions"
				},
				{
					"name": "prices",
					"type": "address",
					"internalType": "contract IJBPrices"
				},
				{
					"name": "projects",
					"type": "address",
					"internalType": "contract IJBProjects"
				},
				{
					"name": "tokens",
					"type": "address",
					"internalType": "contract IJBTokens"
				},
				{
					"name": "deployer",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "trustedForwarder",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "nonpayable"
		},
		{
			"type": "receive",
			"stateMutability": "payable"
		},
		{
			"type": "function",
			"name": "DIRECTORY",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBDirectory"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "MAX_TWAP_WINDOW",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "MIN_TWAP_WINDOW",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "PERMISSIONS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBPermissions"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "PRICES",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBPrices"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "PROJECTS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBProjects"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "TOKENS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBTokens"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "TWAP_SLIPPAGE_DENOMINATOR",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "afterCashOutRecordedWith",
			"inputs": [
				{
					"name": "context",
					"type": "tuple",
					"internalType": "struct JBAfterCashOutRecordedContext",
					"components": [
						{
							"name": "holder",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "projectId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "rulesetId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "cashOutCount",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "reclaimedAmount",
							"type": "tuple",
							"internalType": "struct JBTokenAmount",
							"components": [
								{
									"name": "token",
									"type": "address",
									"internalType": "address"
								},
								{
									"name": "decimals",
									"type": "uint8",
									"internalType": "uint8"
								},
								{
									"name": "currency",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "value",
									"type": "uint256",
									"internalType": "uint256"
								}
							]
						},
						{
							"name": "forwardedAmount",
							"type": "tuple",
							"internalType": "struct JBTokenAmount",
							"components": [
								{
									"name": "token",
									"type": "address",
									"internalType": "address"
								},
								{
									"name": "decimals",
									"type": "uint8",
									"internalType": "uint8"
								},
								{
									"name": "currency",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "value",
									"type": "uint256",
									"internalType": "uint256"
								}
							]
						},
						{
							"name": "cashOutTaxRate",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "beneficiary",
							"type": "address",
							"internalType": "address payable"
						},
						{
							"name": "hookMetadata",
							"type": "bytes",
							"internalType": "bytes"
						},
						{
							"name": "cashOutMetadata",
							"type": "bytes",
							"internalType": "bytes"
						}
					]
				}
			],
			"outputs": [],
			"stateMutability": "payable"
		},
		{
			"type": "function",
			"name": "afterPayRecordedWith",
			"inputs": [
				{
					"name": "context",
					"type": "tuple",
					"internalType": "struct JBAfterPayRecordedContext",
					"components": [
						{
							"name": "payer",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "projectId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "rulesetId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "amount",
							"type": "tuple",
							"internalType": "struct JBTokenAmount",
							"components": [
								{
									"name": "token",
									"type": "address",
									"internalType": "address"
								},
								{
									"name": "decimals",
									"type": "uint8",
									"internalType": "uint8"
								},
								{
									"name": "currency",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "value",
									"type": "uint256",
									"internalType": "uint256"
								}
							]
						},
						{
							"name": "forwardedAmount",
							"type": "tuple",
							"internalType": "struct JBTokenAmount",
							"components": [
								{
									"name": "token",
									"type": "address",
									"internalType": "address"
								},
								{
									"name": "decimals",
									"type": "uint8",
									"internalType": "uint8"
								},
								{
									"name": "currency",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "value",
									"type": "uint256",
									"internalType": "uint256"
								}
							]
						},
						{
							"name": "weight",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "newlyIssuedTokenCount",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "beneficiary",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "hookMetadata",
							"type": "bytes",
							"internalType": "bytes"
						},
						{
							"name": "payerMetadata",
							"type": "bytes",
							"internalType": "bytes"
						}
					]
				}
			],
			"outputs": [],
			"stateMutability": "payable"
		},
		{
			"type": "function",
			"name": "beforeCashOutRecordedWith",
			"inputs": [
				{
					"name": "context",
					"type": "tuple",
					"internalType": "struct JBBeforeCashOutRecordedContext",
					"components": [
						{
							"name": "terminal",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "holder",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "projectId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "rulesetId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "cashOutCount",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "totalSupply",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "surplus",
							"type": "tuple",
							"internalType": "struct JBTokenAmount",
							"components": [
								{
									"name": "token",
									"type": "address",
									"internalType": "address"
								},
								{
									"name": "decimals",
									"type": "uint8",
									"internalType": "uint8"
								},
								{
									"name": "currency",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "value",
									"type": "uint256",
									"internalType": "uint256"
								}
							]
						},
						{
							"name": "scopeCashOutsToLocalBalances",
							"type": "bool",
							"internalType": "bool"
						},
						{
							"name": "cashOutTaxRate",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "beneficiaryIsFeeless",
							"type": "bool",
							"internalType": "bool"
						},
						{
							"name": "metadata",
							"type": "bytes",
							"internalType": "bytes"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "cashOutTaxRate",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "cashOutCount",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "totalSupply",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "effectiveSurplusValue",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "hookSpecifications",
					"type": "tuple[]",
					"internalType": "struct JBCashOutHookSpecification[]",
					"components": [
						{
							"name": "hook",
							"type": "address",
							"internalType": "contract IJBCashOutHook"
						},
						{
							"name": "noop",
							"type": "bool",
							"internalType": "bool"
						},
						{
							"name": "amount",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "metadata",
							"type": "bytes",
							"internalType": "bytes"
						}
					]
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "beforePayRecordedWith",
			"inputs": [
				{
					"name": "context",
					"type": "tuple",
					"internalType": "struct JBBeforePayRecordedContext",
					"components": [
						{
							"name": "terminal",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "payer",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "amount",
							"type": "tuple",
							"internalType": "struct JBTokenAmount",
							"components": [
								{
									"name": "token",
									"type": "address",
									"internalType": "address"
								},
								{
									"name": "decimals",
									"type": "uint8",
									"internalType": "uint8"
								},
								{
									"name": "currency",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "value",
									"type": "uint256",
									"internalType": "uint256"
								}
							]
						},
						{
							"name": "projectId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "rulesetId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "beneficiary",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "weight",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "reservedPercent",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "metadata",
							"type": "bytes",
							"internalType": "bytes"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "weight",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "hookSpecifications",
					"type": "tuple[]",
					"internalType": "struct JBPayHookSpecification[]",
					"components": [
						{
							"name": "hook",
							"type": "address",
							"internalType": "contract IJBPayHook"
						},
						{
							"name": "noop",
							"type": "bool",
							"internalType": "bool"
						},
						{
							"name": "amount",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "metadata",
							"type": "bytes",
							"internalType": "bytes"
						}
					]
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "hasMintPermissionFor",
			"inputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "address",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				},
				{
					"name": "",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "bool",
					"internalType": "bool"
				}
			],
			"stateMutability": "pure"
		},
		{
			"type": "function",
			"name": "initializePoolFor",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "fee",
					"type": "uint24",
					"internalType": "uint24"
				},
				{
					"name": "tickSpacing",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "twapWindow",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "sqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "isTrustedForwarder",
			"inputs": [
				{
					"name": "forwarder",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "bool",
					"internalType": "bool"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "oracleHook",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IHooks"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "poolKeyOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "key",
					"type": "tuple",
					"internalType": "struct PoolKey",
					"components": [
						{
							"name": "currency0",
							"type": "address",
							"internalType": "Currency"
						},
						{
							"name": "currency1",
							"type": "address",
							"internalType": "Currency"
						},
						{
							"name": "fee",
							"type": "uint24",
							"internalType": "uint24"
						},
						{
							"name": "tickSpacing",
							"type": "int24",
							"internalType": "int24"
						},
						{
							"name": "hooks",
							"type": "address",
							"internalType": "contract IHooks"
						}
					]
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "poolManager",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IPoolManager"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "projectTokenOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "setChainSpecificConstants",
			"inputs": [
				{
					"name": "newPoolManager",
					"type": "address",
					"internalType": "contract IPoolManager"
				},
				{
					"name": "newOracleHook",
					"type": "address",
					"internalType": "contract IHooks"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "setPoolFor",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "fee",
					"type": "uint24",
					"internalType": "uint24"
				},
				{
					"name": "tickSpacing",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "twapWindow",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "setPoolFor",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "poolKey",
					"type": "tuple",
					"internalType": "struct PoolKey",
					"components": [
						{
							"name": "currency0",
							"type": "address",
							"internalType": "Currency"
						},
						{
							"name": "currency1",
							"type": "address",
							"internalType": "Currency"
						},
						{
							"name": "fee",
							"type": "uint24",
							"internalType": "uint24"
						},
						{
							"name": "tickSpacing",
							"type": "int24",
							"internalType": "int24"
						},
						{
							"name": "hooks",
							"type": "address",
							"internalType": "contract IHooks"
						}
					]
				},
				{
					"name": "twapWindow",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "setTwapWindowOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "newWindow",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "supportsInterface",
			"inputs": [
				{
					"name": "interfaceId",
					"type": "bytes4",
					"internalType": "bytes4"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "bool",
					"internalType": "bool"
				}
			],
			"stateMutability": "pure"
		},
		{
			"type": "function",
			"name": "trustedForwarder",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "twapWindowOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "unlockCallback",
			"inputs": [
				{
					"name": "data",
					"type": "bytes",
					"internalType": "bytes"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "bytes",
					"internalType": "bytes"
				}
			],
			"stateMutability": "nonpayable"
		},
		{
			"type": "event",
			"name": "CashOutSwap",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "cashOutCount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "poolId",
					"type": "bytes32",
					"indexed": true,
					"internalType": "PoolId"
				},
				{
					"name": "amountReceived",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "Mint",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "leftoverAmount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "tokenCount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "PoolAdded",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "poolId",
					"type": "bytes32",
					"indexed": false,
					"internalType": "PoolId"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "SellSwapReverted",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "holder",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "amount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "Swap",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "amountToSwapWith",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "poolId",
					"type": "bytes32",
					"indexed": true,
					"internalType": "PoolId"
				},
				{
					"name": "amountReceived",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "TwapWindowChanged",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "oldWindow",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "newWindow",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "error",
			"name": "FailedCall",
			"inputs": []
		},
		{
			"type": "error",
			"name": "InsufficientBalance",
			"inputs": [
				{
					"name": "balance",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "needed",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_AlreadyConfigured",
			"inputs": []
		},
		{
			"type": "error",
			"name": "JBBuybackHook_CallerNotPoolManager",
			"inputs": [
				{
					"name": "caller",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_CallerNotTerminal",
			"inputs": [
				{
					"name": "caller",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_InsufficientPayAmount",
			"inputs": [
				{
					"name": "swapAmount",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "totalPaid",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_InvalidTwapWindow",
			"inputs": [
				{
					"name": "value",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "min",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "max",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_PoolAlreadySet",
			"inputs": [
				{
					"name": "poolId",
					"type": "bytes32",
					"internalType": "PoolId"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_PoolInitializedAtWrongPrice",
			"inputs": [
				{
					"name": "actualSqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				},
				{
					"name": "expectedSqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_PoolKeyCurrenciesMismatch",
			"inputs": []
		},
		{
			"type": "error",
			"name": "JBBuybackHook_PoolNotInitialized",
			"inputs": [
				{
					"name": "poolId",
					"type": "bytes32",
					"internalType": "PoolId"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_PoolNotSet",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_SpecifiedSlippageExceeded",
			"inputs": [
				{
					"name": "amount",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "minimum",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_TerminalTokenIsProjectToken",
			"inputs": [
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_Unauthorized",
			"inputs": [
				{
					"name": "caller",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBBuybackHook_ZeroProjectToken",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBPermissioned_Unauthorized",
			"inputs": [
				{
					"name": "account",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "sender",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "permissionId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "PRBMath_MulDiv_Overflow",
			"inputs": [
				{
					"name": "x",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "y",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "denominator",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "SafeERC20FailedOperation",
			"inputs": [
				{
					"name": "token",
					"type": "address",
					"internalType": "address"
				}
			]
		}
	],
	"args": [
		"0x5AfF29060E023e6FB87BE5596652B33c65Af535B",
		"0xf92AC1aB5A00033E35a3975739124F61928C36B0",
		"0xad45E4627f068d1e6b21E5301870d807543a8401",
		"0x6017d1FBa9DC279BFA0B03fD931C22E242AB3691",
		"0x1f80d8f057eE36b4C2656D107E4e4558B71bA7D9",
		"0x4dc161eF837fF1C4485b08DDFcDB182F2157bE18",
		"0x3bA60b60933916a7C87D0860DcEE62a0CE34E3e2"
	],
	"solcInputHash": "6c677009476b320066216b256beb212f",
	"receipt": {
		"type": "0x2",
		"status": "0x1",
		"cumulativeGasUsed": "0x868dac",
		"logs": [
			{
				"address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
				"topics": [
					"0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
					"0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
					"0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38",
					"0x680da5fcc02cddd909a07a99c1734cc2c697eefb8b80d86d3cdd6d099ec4c64a"
				],
				"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
				"blockHash": "0x7345b75593edf2f309a2f973754a315247efdd49d4d4e913062da0125a541bc5",
				"blockNumber": "0x92a1454",
				"blockTimestamp": "0x6a480261",
				"transactionHash": "0x11fec56b621dcc414a95a54f14e119a7e0aece1d91daf57e077fd92db1ae0943",
				"transactionIndex": "0xd",
				"logIndex": "0x46",
				"removed": false
			},
			{
				"address": "0x4dc161ef837ff1c4485b08ddfcdb182f2157be18",
				"topics": [
					"0xb648d3644f584ed1c2232d53c46d87e693586486ad0d1175f8656013110b714e"
				],
				"data": "0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d380000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000637cf00818ebea3004d20a4386346354fbe6dec33d23871cabc048826ce2315cd6fc6101a06040523461024e5761627c60e0813803918261001d81610252565b93849283398101031261024e5780516001600160a01b038116810361024e576020820151906001600160a01b038216820361024e576040830151916001600160a01b038316830361024e576060840151916001600160a01b038316830361024e576080850151916001600160a01b038316830361024e576100ac60c06100a560a0890161028b565b970161028b565b9060805260a05260c052610120526101005260e052610160526101246100d26040610252565b600781526618d85cda13dd5d60ca1b6020909101523060601b6001600160601b0319167f86b14ff4df1839d4c5ed01550f2540ea56ad3e38000000000000000000000000186001600160e01b03191690565b610140526101836101356040610252565b600381526270617960e81b6020909101523060601b6001600160601b0319167fadc756803e4eb4ccfb136b73d5f72e3dc0d452d3000000000000000000000000186001600160e01b03191690565b61018052604051615fdc90816102a08239608051818181610254015281816105d60152613df2015260a051818181610fd5015281816110300152615fa1015260c051818181610ee9015281816116890152818161223a0152612c9a015260e0518181816115be01526128ff015261010051818181610405015281816110b5015281816112cd0152818161148b0152611546015261012051818181611122015281816116030152613eb0015261014051816133f90152610160518161030e015261018051816121dd0152f35b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027757604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361024e5756fe61026080604052600436101561001d575b50361561001b575f80fd5b005b5f905f3560e01c90816301ffc9a714611d15575080631337f9861461164f5780631a65893b146116325780631d831d5c146115ed5780631eabcd34146115a857806327e5141114611575578063293c499914611530578063345c42131461143e57806349e303831461126d57806353fd8e3114611062578063572b6c05146110045780637da0a87714610fbf578063826a5e7414610f1857806388bc2ef314610ed35780638cc3584614610dfc57806391dd7346146108155780639782ed71146107d05780639785f1ed146107a757806399f6d77f146106a7578063b7433b35146103c6578063b88a92b4146103a8578063bac6b2ad146102dc578063c22903b2146102c7578063db312fae146102aa578063dc4c90d314610283578063f434c9141461023e5763f672acac03610010573461023b57602036600319011261023b576004356001600160401b038111610239576101c060031982360301126102395761018b906004016133a2565b92939060409592955195869560a0870193875260208701526040860152606085015260a06080850152825180915260c08401602060c08360051b870101940192905b8282106101dc57505050500390f35b91936001919395506020610229819260bf198a8203018652608060608a51878060a01b03815116845285810151151586850152604081015160408501520151918160608201520190611ec6565b96019201920185949391926101cd565b505b80fd5b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b57546040516001600160a01b039091168152602090f35b503461023b578060031936011261023b5760206040516127108152f35b506102d96102d436611dc8565b612c6f565b80f35b503461023b57604036600319011261023b576004356001600160a01b038116908190036102395761030b611e42565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036103955782546001600160a01b038116610383576bffffffffffffffffffffffff60a01b1617825560018060a01b03166bffffffffffffffffffffffff60a01b600154161760015580f35b6001622c6feb60e11b03198452600484fd5b634758af1b60e01b835233600452602483fd5b503461023b578060031936011261023b5760206040516202a3008152f35b503461023b57606036600319011261023b576004356103e3611e42565b6040516331a9108f60e11b8152600481018390526044359291906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561069c57859161065e575b50610446615f76565b6001600160a01b0391821691168082141580610596575b61056b57505061046c83614d21565b6001600160a01b03811661eeee03610565575082915b81845260056020526040842060018060a01b0384165f5260205260ff60405f20541615610544578184526004602081815260408087206001600160a01b0387165f81815291845282822054878a529484528289209082529092529020829055927fac260005f5a1d1cb696ab1065059083a3769fa09f4b4699f1dafd670d071a921919061053e610510615f76565b6040805197885260208801949094526001600160a01b03908116938701939093529116939081906060820190565b0390a380f35b633d56755560e01b845260048290526001600160a01b038316602452604484fd5b91610482565b908360849260405192631326f75560e11b8452600484015260248301526044820152601c6064820152fd5b50604051631a45b42760e11b8152600481018290526024810183905260448101859052601c606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610653578791610615575b501561045d565b90506020813d60201161064b575b8161063060209383611f50565b810103126106475761064190611f71565b5f61060e565b8680fd5b3d9150610623565b6040513d89823e3d90fd5b90506020813d602011610694575b8161067960209383611f50565b810103126106905761068a9061203d565b5f61043d565b8480fd5b3d915061066c565b6040513d87823e3d90fd5b503461023b5761016036600319011261023b5761012036602319011261023b57604051906106d482611f34565b60243565ffffffffffff8116810361023957825260443565ffffffffffff8116810361023957602083015260643565ffffffffffff8116810361023957604083015260843565ffffffffffff8116810361023957606083015260a43563ffffffff8116810361023957608083015260c4356001600160701b03811681036102395760a083015260e43563ffffffff811681036102395760c083015261010435916001600160a01b03831683036102395760209260e08201526101006101243591015261079e611e58565b50604051908152f35b503461023b578060031936011261023b576001546040516001600160a01b039091168152602090f35b503461023b57604036600319011261023b5760406107ec611e42565b9160043581526004602052209060018060a01b03165f52602052602060405f2054604051908152f35b503461023b57602036600319011261023b57600435906001600160401b03821161023b573660238301121561023b5781600401356001600160401b0381116102395782019036602483011161023b5780546001600160a01b03169133839003610de957610100848203126102395760a060246040519261089484611f19565b869003016023190112610239576040516108ad81611eea565b6108b960248601611e6f565b81526108c760448601611e6f565b6020820152606485013562ffffff81168103610ba55760408201526108ee60848601611e1e565b60608201526108ff60a48601611e6f565b6080820152815261091260c48501611fb0565b93610940602083019580875260e4830135906101046040860194838652013590816060870152151591614b31565b93825186511515925195600160ff1b8714610dd55760405193606085018581106001600160401b03821117610dc15792610a006109cf938993602098979660405287528787019a84038b52604087019060018060a01b031681526040519084898301528882526109b1604083611f50565b604051633cf3645360e21b81529b8c98899788966004880190611e83565b51151560a48601525160c4850152516001600160a01b031660e4840152610120610104840152610124830190611ec6565b03925af1928315610db6578293610d82575b508260801d935115155f14610d4a575180516020909101516001600160a01b03918216949116906001600160801b03908190610a4d90612c4f565b169316935b6001600160a01b031680610c7e57508154604051630476982d60e21b8152906020908290600490829088906001600160a01b03165af18015610c7357610c44575b505b6001600160a01b031680158015610be15747945b83546001600160a01b031690813b15610690578491606483926040519485938492630b0d9c0960e01b845289600485015230602485015260448401525af18015610bd657908491610bbd575b505015610b40575050610b0b610b3c9247611fe5565b604051916020830152604082015260408152610b28606082611f50565b604051918291602083526020830190611ec6565b0390f35b6020602491604051928380926370a0823160e01b82523060048301525afa918215610bb15791610b79575b50610b3c92610b0b91611fe5565b90506020813d602011610ba9575b81610b9460209383611f50565b81010312610ba55751610b3c610b6b565b5f80fd5b3d9150610b87565b604051903d90823e3d90fd5b81610bc791611f50565b610bd257825f610af5565b8280fd5b6040513d86823e3d90fd5b6040516370a0823160e01b8152306004820152602081602481865afa908115610bd6578491610c12575b5094610aa9565b90506020813d602011610c3c575b81610c2d60209383611f50565b81010312610ba557515f610c0b565b3d9150610c20565b610c659060203d602011610c6c575b610c5d8183611f50565b810190612006565b505f610a93565b503d610c53565b6040513d85823e3d90fd5b82546001600160a01b0316803b15610d4657838091602460405180948193632961046560e21b83528760048401525af18015610bd65785918591610d2d575b50508354610cd6926001600160a01b0390911690614ca9565b8154604051630476982d60e21b8152906020908290600490829087906001600160a01b03165af18015610c7357610d0e575b50610a95565b610d269060203d602011610c6c57610c5d8183611f50565b505f610d08565b81925090610d3a91611f50565b610bd25783835f610cbd565b8380fd5b51602081015190516001600160a01b0391821694939116906001600160801b03908190610d7990600f0b612c4f565b16931693610a52565b9092506020813d602011610dae575b81610d9e60209383611f50565b810103126102395751915f610a12565b3d9150610d91565b6040513d84823e3d90fd5b634e487b7160e01b88526041600452602488fd5b634e487b7160e01b86526011600452602486fd5b63cb25844560e01b825233600452602482fd5b503461023b57602036600319011261023b576004356001600160401b03811161023957610180600319823603011261023957610e3a906004016121a4565b6040519283926040840190845260406020850152825180915260608401602060608360051b870101940192905b828210610e7657505050500390f35b91936001919395506020610ec38192605f198a8203018652608060608a51878060a01b03815116845285810151151586850152604081015160408501520151918160608201520190611ec6565b9601920192018594939192610e67565b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57604036600319011261023b576040610f34611e42565b91610f3d612070565b5060043581526002602052209060018060a01b03165f5260205260a060405f2060405190610f6a82611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b60608301526002600180851b03910154166080820152610fbd6040518092611e83565bf35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57602036600319011261023b576004356001600160a01b03811690819003610239576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169091148152602090f35b503461023b5761010036600319011261023b5760043560a03660231901126102395760e4356001600160a01b038116808203610d46576040516331a9108f60e11b815260048101849052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561069c5784928691611229575b5061eeee926110fc91613d5f565b03611223575081905b60405163ea78803f60e01b815260048101829052916020836024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315610bd65784936111f2575b506040519161116883611eea565b6024356001600160a01b03811681036111ee5783526044356001600160a01b03811681036111ee57602084015260643562ffffff811681036111ee5760408401526084358060020b81036111ee57606084015260a435936001600160a01b03851685036111ee5760808401949094526102d9936001600160a01b03169260c43591613f7a565b8580fd5b61121591935060203d60201161121c575b61120d8183611f50565b810190612051565b915f61115a565b503d611203565b90611105565b9250506020823d602011611265575b8161124560209383611f50565b81010312610690576110fc8461125d61eeee9461203d565b9150926110ee565b3d9150611238565b503461023b5760c036600319011261023b576004359061128b611dfc565b91611294611e0e565b61129c611e2c565b9060a4359460018060a01b038616809603610690576040516331a9108f60e11b8152600481018590526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156114335790859187916113e9575b5061131f9493929161131991613d5f565b84613e6b565b92909184602060018060a01b0382541660c46040518094819363313b65df60e11b835261134f6004840189611e83565b8c60a48401525af16113b0575b50845460a08220611375916001600160a01b031661429a565b5050506001600160a01b03169580870361139957506102d994955060643591613f7a565b6302c5a6e160e11b86526004879052602452604485fd5b6020813d6020116113e1575b816113c960209383611f50565b810103126111ee57518060020b81031561135c578580fd5b3d91506113bc565b9150506020813d60201161142b575b8161140560209383611f50565b810103126111ee57906113198561142061131f96959461203d565b915091929394611308565b3d91506113f8565b6040513d88823e3d90fd5b503461023b5760a036600319011261023b5760043561145b611dfc565b90611464611e0e565b61146c611e2c565b6040516331a9108f60e11b8152600481018490529091906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156114335786916114e3575b50906102d994611319856114d79594613d5f565b92909160643591613f7a565b929190506020833d602011611528575b8161150060209383611f50565b810103126111ee576102d9946113198561151c6114d79661203d565b939495505050946114c3565b3d91506114f3565b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57602036600319011261023b57602090600435815260038252604060018060a01b0391205416604051908152f35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b57602060405161012c8152f35b5061165936611dc8565b604051636e49181f60e01b8152602082810135600483018190523360248401529190816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115611b07575f91611cdb575b5015611cc857816116cf6101c080940182611f7e565b9080949181010312610ba5576116e483611fb0565b926040810135936116f760608301611fb0565b9060808301359260018060a01b03841696878503610ba55760a08201359360c08301359360e08401359261172e6101008601611e1e565b5061173c6101208601611fbd565b5080938781151580611cba575b611c8b575b50505060e088019061eeee6001600160a01b0361176a84611fd1565b161497889761178061177b85611fd1565b613a07565b99611c79575b88159283611bfd575b916117a0916117b49594938d613b13565b9390996117af61177b85611fd1565b611fe5565b5f98816118c2575b5050505081156118b9575b50806118a7575b61188757506117f9926117f38695936117f39360206101608d9b9a0135910135613964565b90612030565b9182611803578380f35b6020936118156101a060c49401611fd1565b9560405196879586946363fdc96f60e11b86526004860152602485015260018060a01b0316604484015260a060648401528160a4840152600160848401525af18015610db657611868575b818180808380f35b6118809060203d602011610c6c57610c5d8183611f50565b505f611860565b886044916118958688612030565b63e2d708a960e01b8352600452602452fd5b50806118b38587612030565b106117ce565b9050155f6117c7565b8c939499505f9e9d9e50825f93611b19575b8115611b1257825b6118e861177b88611fd1565b956118f288611fd1565b91602095604051936119048886611f50565b5f8552333b15610ba5575f9361196260405196879586948594639e6eec0560e01b8652600486015260018060a01b03166024850152604484015286606484015260c060848401528660c484015260e060a484015260e4830190611ec6565b0391335af18015611b0757611aef575b509d9e9d8f90611a8a575b50156119fb57505061199461177b61199a93611fd1565b90611fe5565b945b887faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e5166119ef6119d1886101608d01358b613964565b604080519a8b5260208b0182905233908b0152989081906060820190565b0390a25f8080806117bc565b6024939192509081906001600160a01b0390611a1690611fd1565b16604051948580926370a0823160e01b82523360048301525afa908115611a7f578d91611a4f575b50611a499250611fe5565b9461199c565b905082813d8311611a78575b611a658183611f50565b81010312610ba557611a4991515f611a3e565b503d611a5b565b6040513d8f823e3d90fd5b6001600160a01b03611a9b87611fd1565b16611aa7823383614fab565b15611ab3575b5061197d565b9050611abf3382614ff8565b15611adc578f611ad090338361505c565b15611adc578f90611aad565b8f602491635274afe760e01b8252600452fd5b909f9e50611afe905f90611f50565b5f9d9e5f611972565b6040513d5f823e3d90fd5b5f926118dc565b60249450925060206001600160a01b03611b3287611fd1565b16604051958680926370a0823160e01b82523360048301525afa8015611b07578d945f91611bc8575b50926001600160a01b03611b6e87611fd1565b16611b7a843383614fab565b15611b86575b506118d4565b909192939450611b963382614ff8565b15611bb657611ba684338361505c565b15611bb657908d94939291611b80565b635274afe760e01b5f5260045260245ffd5b9450506020843d602011611bf5575b81611be460209383611f50565b81010312610ba5578c93515f611b5b565b3d9150611bd7565b6001600160a01b03611c0e86611fd1565b168c610140604051916323b872dd60e01b5f523360045230602452013560445260205f60648180865af19060015f5114821615611c58575b6040525f60605215611bb6575061178f565b906001811516611c7057823b15153d15161690611c46565b503d5f823e3d90fd5b98611c85903490611fe5565b98611786565b90919750611ca0826101408c01358093613964565b978461174e57611cb1939550613964565b915f808061174e565b50816101408c013510611749565b634758af1b60e01b5f523360045260245ffd5b90506020813d602011611d0d575b81611cf660209383611f50565b81010312610ba557611d0790611f71565b5f6116b9565b3d9150611ce9565b34610ba5576020366003190112610ba5576004359063ffffffff60e01b8216809203610ba55760209163e347239560e01b8114908115611db7575b8115611da6575b8115611d95575b8115611d84575b8115611d73575b5015158152f35b6301ffc9a760e01b14905083611d6c565b633d0d324560e21b81149150611d65565b6316f0f2dd60e01b81149150611d5e565b63611481d960e11b81149150611d57565b63099bfcc360e11b81149150611d50565b6020600319820112610ba557600435906001600160401b038211610ba557610200908290036003190112610ba55760040190565b6024359062ffffff82168203610ba557565b604435908160020b8203610ba557565b35908160020b8203610ba557565b608435906001600160a01b0382168203610ba557565b602435906001600160a01b0382168203610ba557565b61014435906001600160a01b0382168203610ba557565b35906001600160a01b0382168203610ba557565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a081019081106001600160401b03821117611f0557604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b03821117611f0557604052565b61012081019081106001600160401b03821117611f0557604052565b90601f801991011681019081106001600160401b03821117611f0557604052565b51908115158203610ba557565b903590601e1981360301821215610ba557018035906001600160401b038211610ba557602001918136038313610ba557565b35908115158203610ba557565b35906001600160801b0382168203610ba557565b356001600160a01b0381168103610ba55790565b91908203918211611ff257565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610ba5575190565b6001600160401b038111611f0557601f01601f191660200190565b91908201809211611ff257565b51906001600160a01b0382168203610ba557565b90816020910312610ba557516001600160a01b0381168103610ba55790565b6040519061207d82611eea565b5f6080838281528260208201528260408201528260608201520152565b9291926120a682612015565b916120b46040519384611f50565b829481845281830111610ba5578281602093845f960137010152565b9190826040910312610ba5576020825192015190565b519065ffffffffffff82168203610ba557565b519063ffffffff82168203610ba557565b519061ffff82168203610ba557565b3563ffffffff81168103610ba55790565b3560ff81168103610ba55790565b6001600160401b038111611f055760051b60200190565b6040519061215c82611f19565b606080835f81525f60208201525f60408201520152565b8051156121805760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156121805760400190565b5f6102408190526101408190526040820192610120830135926060906122016121db6121d4610160840184611f7e565b369161209a565b7f000000000000000000000000000000000000000000000000000000000000000061435d565b90612c27575b5060a08101358411612c0c578315612c00575b604051632eec7b5560e11b815260c08201356004820152956020876024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa968715611b07575f97612bdf575b506040516320c94b1360e11b815260c08301356004820152610380816024816001600160a01b038c165afa908115611b07575f9161296f575b50608083016122b981612119565b63ffffffff808061010086015160241c16169116145f146128a157505060ff6122e384840161212a565b16604d8111611ff257600a0a5b6122fb818888613964565b60c08401355f908152600360205260409020546001600160a01b039081166101e05290929061eeee9061232d83611fd1565b160361289257505f955b5f60e08190526101a08190526001610220526101405190938493911561285d5760c08601355f52600260205260405f2060018060a01b038a165f5260205260a060405f206040519061238882611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b8a8301526002600180851b03910154166080820152209560c08101355f52600560205260405f2060018060a01b038b165f5260205260ff60405f20541680612835575b8061022052612807575b5f60c081815282013581526005602090815260408083206001600160a01b038e16845290915281205490989060ff161561274c57505f6102005260a08101358403612735575f610200525b61022051156101c0526101c051610180526101c051612728575b6101c0518061271c575b612702578b90610180516101605261018051156126f2575b6101a051806126e7575b806126db575b6126d1575b61024051612644575b5050604061012081905280516101008190526124c69190611f50565b600161010051525f5b61012051601f1901811061262a57506001600160801b0395969798999a610100519a5f60a052610160515f14612621575f60a0525b610120515160805260018060a01b03166101e051106020608051015261020051610120516080510152610240516060608051015261014051151560808051015260018060a01b031660a0608051015260c0608051015260e06080510152610100608051015260020b61012060805101521661014060805101526101606080510152610180608051015260c0516101a0608051015260e0516101c060805101526101a05115156101e060805101526101e0608051526125c6610200608051611f50565b61012051516125d481611f19565b3081526101605115908115602082015260a05161012051820152608051606082015261260261010051612173565b5261260f61010051612173565b5061261657565b610100515f93509150565b8460a052612504565b60209061263561214f565b828261010051010152016124cf565b604080516380d3fe3560e01b815260c092909201356004830152610240516024830152600160448301529298509190829060649082906001600160a01b03165afa8015611b07575f915f916126a0575b5060c052958a5f6124aa565b90506126c4915060403d6040116126ca575b6126bc8183611f50565b8101906120d0565b5f612694565b503d6126b2565b82610240526124a1565b5061024051151561249c565b506101405115612496565b610240518310156101605261248c565b5063e2d708a960e01b5f526004526102405160245260445ffd5b50610240518210612474565b610140516101c05261246a565b6127438460a0830135611fe5565b61020052612450565b9a9b97509550969750505050506102405161279a575b5050610140518061278e575b6127755750565b63e2d708a960e01b5f526004526102405160245260445ffd5b5061024051811061276e565b604080516380d3fe3560e01b815260c092909201356004830152610240516024830152600160448301529091829060649082906001600160a01b03165afa8015611b07576127e9575b80612762565b6128019060403d6040116126ca576126bc8183611f50565b506127e3565b9350935061281f886101e051818560c0880135614884565b91929894979350506101a052959460e052612405565b505f546001600160801b03906128559089906001600160a01b0316614a9d565b1615156123fb565b9350939150612876876101e051818460c087013561451c565b6101a0999592999894979398529796956102405260e052612405565b61289b90611fd1565b95612337565b63ffffffff6101006128b460ff93612119565b93015160241c1663ffffffff6128cb87870161212a565b604051631df139fd60e11b815260c088013560048201529482166024860152911660448401521660648201526020816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f9161293d575b506122f0565b90506020813d602011612967575b8161295860209383611f50565b81010312610ba557515f612937565b3d915061294b565b8091506103803d8111612bd8575b6129878183611f50565b810103906103808212610ba5576101208212610ba557604051916129aa83611f34565b6129b3826120e6565b83526129c1602083016120e6565b60208401526129d2604083016120e6565b60408401526129e28683016120e6565b868401526129f2608083016120f9565b608084015260a08201516001600160701b0381168103610ba55760a0840152612a1d60c083016120f9565b60c084015260e0820151906001600160a01b0382168203610ba5576102609160e085015261010083015161010085015261011f190112610ba557604051906102608201908282106001600160401b03831117611f0557610360612bcf9161024093604052612a8e610120820161210a565b8552612a9d610140820161210a565b6020860152612aaf61016082016120f9565b6040860152612ac16101808201611f71565b89860152612ad26101a08201611f71565b6080860152612ae46101c08201611f71565b60a0860152612af66101e08201611f71565b60c0860152612b086102008201611f71565b60e0860152612b1a6102208201611f71565b610100860152612b2b848201611f71565b610120860152612b3e6102608201611f71565b610140860152612b516102808201611f71565b610160860152612b646102a08201611f71565b610180860152612b776102c08201611f71565b6101a0860152612b8a6102e08201611f71565b6101c0860152612b9d6103008201611f71565b6101e0860152612bb06103208201611f71565b610200860152612bc3610340820161203d565b6102208601520161210a565b9101525f6122ab565b503d61297d565b612bf991975060203d60201161121c5761120d8183611f50565b955f612272565b60a0810135935061221a565b60a0908463cc8704dd60e01b5f52600452013560245260445ffd5b612c3c919450602080825183010191016120d0565b610240819052151561014052925f612207565b600f0b6f7fffffffffffffffffffffffffffffff198114611ff2575f0390565b604051636e49181f60e01b815260208281013560048301819052336024840152916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169181604481855afa908115611b07575f91613368575b5015613355576080830161eeee6001600160a01b03612cee83611fd1565b1603613346575f935b835f52600260205260405f2060018060a01b0386165f5260205260405f209160405192612d2384611eea565b60018060a01b038154168452600181015460018060a01b038116602086015262ffffff8160a01c16604086015260b81c60020b6060850152600260018060a01b03910154166080840152845f52600360205260018060a01b0360405f205416935f9160608401359586925f936101c08701612d9e8189611f7e565b90506132af575b508089116132a6575b50602060249160405192838092632eec7b5560e11b82528d60048301525afa908115611b07575f91613287575b506040516370a0823160e01b815230600482015290602082602481865afa918215611b07575f92613253575b5060208960c48c5f60405195869485936363fdc96f60e11b85526004850152602484015230604484015260a060648401528160a484015281608484015260018060a01b03165af18015611b0757613224575b506040516370a0823160e01b8152306004820152602081602481865afa908115611b07575f916131f0575b50612ea691612e9291611fe5565b996001600160a01b03168210858b89614d5e565b9a91909a61315e578480613155575b8061314c575b613135578a969594939291908082111561312d57612ed891611fe5565b80613113575b5061eeee90506001600160a01b03612ef583611fd1565b1603612f5c5750505091612f3960a092612f346101a07fbda038b4536720f0edb8da72fb3f9779994198517ff2acfe51d419e07feb0379979601611fd1565b614ded565b20604080519283526020830195909552339482019490945280606081015b0390a3565b919350916101a06001600160a01b03612f7484611fd1565b169101916020612f8384611fd1565b6040516370a0823160e01b81526001600160a01b03909116600482015292839060249082905afa918215611b07575f926130dd575b5060209061300790612fee8b6001600160a01b03612fd584611fd1565b166001600160a01b03612fe789611fd1565b1690614ca9565b6001600160a01b039061300090611fd1565b1693611fd1565b6040516370a0823160e01b81526001600160a01b03909116600482015292839060249082905afa8015611b07575f906130a9575b6130459250611fe5565b90806130a0575b80613097575b6130825750509060a07fbda038b4536720f0edb8da72fb3f9779994198517ff2acfe51d419e07feb037992612f39565b63e2d708a960e01b5f5260045260245260445ffd5b50818110613052565b5081151561304c565b506020823d6020116130d5575b816130c360209383611f50565b81010312610ba557613045915161303b565b3d91506130b6565b9091506020813d60201161310b575b816130f960209383611f50565b81010312610ba5575190613007612fb8565b3d91506130ec565b6131269161312087611fd1565b90614ca9565b5f80612ede565b50505f612ed8565b858b63e2d708a960e01b5f5260045260245260445ffd5b50858b10612ebb565b50851515612eb5565b5098509450508091929450906131e7575b6131d15750816131a785612f57936131207f8df6e3a86b047621038c6b98aa897b8dd0a6ce91b348704f248b7bbf0e32b21496611fd1565b6001600160a01b03906131b990611fd1565b60408051968752336020880152911694918291820190565b63e2d708a960e01b5f525f60045260245260445ffd5b5080151561316f565b90506020813d60201161321c575b8161320b60209383611f50565b81010312610ba55751612ea6612e84565b3d91506131fe565b6020813d60201161324b575b8161323d60209383611f50565b81010312610ba55751612e59565b3d9150613230565b9091506020813d60201161327f575b8161326f60209383611f50565b81010312610ba55751905f612e07565b3d9150613262565b6132a0915060203d60201161121c5761120d8183611f50565b5f612ddb565b97506020612dae565b9850945092506101006132c28887611f7e565b905010155f1461331b576132d96101009786611f7e565b9080989181010312610ba5576132f160608801611e1e565b506132fe60808801611fbd565b5061330b60e08801611fb0565b9260208801359735945b5f612da5565b613329604094939786611f7e565b9080959181010312610ba557602084359401359684151593613315565b61334f81611fd1565b93612cf7565b63ccdd427f60e01b5f523360045260245ffd5b90506020813d60201161339a575b8161338360209383611f50565b81010312610ba55761339490611f71565b5f612cd0565b3d9150613376565b61eeee6001600160a01b036133b960c08401611fd1565b16036138a7575f905b6040818101355f8181526003602052918220546001600160a01b0316949192838061341d6133f76121d46101a0860186611f7e565b7f000000000000000000000000000000000000000000000000000000000000000061435d565b90613879575b508015613850575b8015613848575b801561383c575b6137de576101208201359260808301359660a08401359661016085013593613463858a8c8a614e53565b955f905f945f9d600190855f146137b7575050865f52600260205260405f209060018060a01b03165f5260205260a060405f20604051906134a382611eea565b8054600180851b5f19019182168452820154808216602085015262ffffff81861c16604085015260b81c600290810b606085015290910154166080820152205f549091906001600160801b03906135049084906001600160a01b0316614a9d565b161515905b613513818b614ebb565b998215806137b0575b806137a7575b6137905782613786575b600198838061377c575b613641575b50505015958615613627575b50604094855198613558878b611f50565b60018a52601f1987015f5b81811061360f5750509d6001600160801b03918e9f9d9e9c9d8b9d89519860208a015289890152606088015260020b60808701521660a085015260c084015260e0830152151561010082015261010081526135c061012082611f50565b5f8251926135cd84611f19565b308452841515602085015283015260608201526135e984612173565b526135f383612173565b50613606575050506127109392915f9190565b95949391925090565b808c6020809361361d61214f565b9201015201613563565b90955080613637575b945f613547565b5086831115613630565b929890916040938451906136558683611f50565b600182526020820190601f19870136833761367260c08501611fd1565b61367b84612173565b6001600160a01b03918216905261369185611fd1565b16936136ac6101006136a560e0840161212a565b9201612119565b91885196879563b5c104f360e01b875260848701926004880152608060248801525180925260a4860194915f5b81811061375b57505050506020949263ffffffff859360ff859416604485015216606483015203915afa92831561375257505f9261371e575b501115955f808061353b565b9091506020813d60201161374a575b8161373a60209383611f50565b81010312610ba55751905f613712565b3d915061372d565b513d5f823e3d90fd5b83516001600160a01b031687528997506020968701969093019282016136d9565b508b881115613536565b861515925061352c565b868b63e2d708a960e01b5f5260045260245260445ffd5b50868b10613522565b508561351c565b91935095506137cd939d50829194508c87614884565b50909d919592949193929091613509565b929450945050613808575b506101608201359160808101359161012060a083013592013590606090565b61382f8361382a61016082013560a08301356080840135610120850135614e53565b614ebb565b81811061308257506137e9565b50608082013515613439565b508615613432565b50825f52600560205260405f2060018060a01b0387165f5260205260ff60405f2054161561342b565b809650604092508091505181010312610ba55761389d604060208601519501611f71565b841515905f613423565b6138b360c08201611fd1565b906133c2565b81156138c3570490565b634e487b7160e01b5f52601260045260245ffd5b91905f905f1981850990808502928380841093039280840393146139575761271083101561393b5750612710907fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9194950990828211900360fc1b910360041c170290565b60649186630c740aef60e31b8352600452602452612710604452fd5b5050506127109192500490565b90915f1983830992808302928380861095039480860395146139f757828510156139df5790829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f5260045260245260445260645ffd5b505090613a0492506138b9565b90565b6001600160a01b031661eeee8103613a1e57504790565b6020602491604051928380926370a0823160e01b82523060048301525afa908115611b07575f91613a4d575090565b90506020813d602011613a74575b81613a6860209383611f50565b81010312610ba5575190565b3d9150613a5b565b91909160e06060610100830194613a94848251611e83565b6020810151151560a0850152604081015160c08501520151910152565b602081830312610ba5578051906001600160401b038211610ba5570181601f82011215610ba557805190613ae482612015565b92613af26040519485611f50565b82845260208383010111610ba557815f9260208093018386015e8301015290565b9091925f925f80613c3b613bfa613c0860e08801956101408901359661eeee60018060a01b03613b4283611fd1565b16148614613d4e5750602085995b0135988986526002602052604086209060018060a01b03168652602052604085209a6040519b613b7f8d611eea565b60018060a01b038154168d528c6060600183015460018060a01b038116602084015262ffffff8160a01c16604084015260b81c60020b910152600260018060a01b039101541660808d015260405191613bd783611f19565b8c8352156020830152876040830152606082015260405192839160208301613a7c565b03601f198101835282611f50565b82546040516348c8949160e01b8152602060048201529485936001600160a01b0390921692849283916024830190611ec6565b03925af15f9181613d2a575b50613c59575050505050505f90600190565b7f2afb56853a8b76a0868e64c0001eedd84d9a7f5bc7fb788aba6180e422ba6ec5613cbc60a0613c97846020808a979d9b9c9d5183010191016120d0565b91909a2060408051968752602087018390523390870152909950939081906060820190565b0390a384613cc8575050565b6001600160a01b031690813b15610ba5575f9160a48392604051948593849263516a997360e11b84523060048501526024840152896044840152608060648401528160848401525af18015611b0757613d1e5750565b5f613d2891611f50565b565b613d479192503d805f833e613d3f8183611f50565b810190613ab1565b905f613c47565b613d59602091611fd1565b99613b50565b90613d68615f76565b6001600160a01b0392831692168083141580613db2575b613d8857505050565b6084935060405192631326f75560e11b8452600484015260248301526044820152601d6064820152fd5b50604051631a45b42760e11b8152600481018290526024810184905260448101839052601d606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f91613e31575b5015613d7f565b90506020813d602011613e63575b81613e4c60209383611f50565b81010312610ba557613e5d90611f71565b5f613e2a565b3d9150613e3f565b92919091613e77612070565b506001600160a01b03811661eeee03613f7457505f915b60405163ea78803f60e01b8152600481019490945291928392906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f91613f55575b506001600160a01b03908116931683811015613f48579162ffffff84925b60018060a01b03600154169360405195613f1f87611eea565b6001600160a01b03908116875216602086015216604084015260020b6060830152608082015292565b9162ffffff849392613f06565b613f6e915060203d60201161121c5761120d8183611f50565b5f613ee8565b91613e8e565b9293835f52600560205260405f2060018060a01b0386165f5260205260ff60405f20541661421257613fab83614d21565b6001600160a01b03169384156141ff576001600160a01b0316938085146141e95760a0822090613fe48260018060a01b035f541661429a565b5050506001600160a01b0316156141d65782516020840180519095916001600160a01b03908116848114929091169084908a90846141cc575b84156141ad575b505050501561419e575f8681526002602081815260408084208b85528252808420885181546001600160a01b039182166001600160a01b03199182161783559a51600180840180548d87015160608f015160b81b62ffffff60b81b1662ffffff60a01b60a09290921b919091169486166001600160d01b03199092169190911793909317929092179091556080909a015191909401805491909416908a1617909255888352600581528183208a84528152818320805460ff19169097179096558782526004865280822089835286528082208054908490558883526003909652908190208054909616929092179094557f8b6c6e3acbbb079495759cfeb1dbf99774b60962f29ff5d8299cbf1dc49f9b1493909290869086907fac260005f5a1d1cb696ab1065059083a3769fa09f4b4699f1dafd670d071a92190614167615f76565b875195865260208601919091526001600160a01b038116604086015293606090a382519182526001600160a01b03166020820152a3565b6310f59d6f60e01b5f5260045ffd5b14925090826141c2575b50505f838982614024565b149050825f6141b7565b838214945061401d565b506357421ac560e11b5f5260045260245ffd5b84632ec7c58760e01b5f5260045260245260445ffd5b83633eb257a360e21b5f5260045260245ffd5b5050505f52600260205260405f209060018060a01b03165f5260205260a060405f206040519061424182611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b60608301526002600180851b039101541660808201522063ca5a804360e01b5f5260045260245ffd5b91906142a7602091615097565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215611b07575f92614305575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614331575b8161432160209383611f50565b81010312610ba55751905f6142dd565b3d9150614314565b908151811015612180570160200190565b81810292918115918404141715611ff257565b90915f916060602585511115614501578451602410156121805760448501518060f81c9160205b60048101808211611ff2576001600160f81b03196143a2828b614339565b51161515806144e2575b156144d8576143bb9089614339565b516020828a01015160f882901c91906001600160e01b03198881169116146143e7575050600501614384565b9550959650929050600983018093119182611ff257611fe0809160f31c16169080820460201490151715611ff25782108015906144b9575b15614482575050611fe0808551925b60f31c16169180830460201490151715611ff2578190039060405193601f19603f8487010116604052828552015f5b82811061446d5750505060019190565b8060208092840101518282880101520161445d565b611ff2576144909085614339565b51611fe0808260f81c9260f31c16169080820460201490151715611ff257611fe080919261442e565b505f90506001600160f81b03196144d08388614339565b51161561441f565b5050949550505050565b5060f384901c611fe01685156020878304141715611ff25782106143ac565b50509150505f90604051614516602082611f50565b5f815290565b949293905f945f91875f52600560205260405f2060018060a01b0385165f5260205260ff60405f2054161561486e57875f52600260205260405f2060018060a01b0385165f5260205260405f20936040519461457786611eea565b80546001600160a01b03908116875260018201548082166020808a019190915260a082811c62ffffff166040808c019190915260b89390931c600290810b60608c015290940154831660808a019081525f9d8e5260048252828e209584168e529490528b20549187209a54919a969116926145f28785614a9d565b6001600160801b03811692831561485657868a63ffffffff9c9d9e614626936001600160801b0387169e8f9216908a6150bd565b909b909a91976001600160a01b038082169084161096928d6001600160801b038e161561470457505050505085156146f6579061467f9392916146688b6154da565b926001600160801b038b1611156146ee57906158b2565b90670de0b6b3a76400008210156146e35790606462ffffff6146a4876146b09561429a565b92505050160490615912565b966122608810156146d85750806127106146ce6146d593998361434a565b0490611fe5565b94565b965086958692509050565b508796879350915050565b5088906158b2565b508a998a9650945050505050565b939b9c50949e509450975060019b9a9b96959194969860018060a01b0390511660018060a01b038a54160361484157508861473e9161429a565b989291968091501580614838575b1561481c57506001600160a01b03811615614807579161477a96959493916147749395615807565b996158b2565b9066b1a2bc2ec5000082116147f95762ffffff606491160461012c018061012c11611ff257655af3107a40006147b1920490612030565b60018101808211611ff25761271011156147ec575f199061271003016127108111611ff2576147e3612710918761434a565b0493925f929190565b505f945084939284929190565b505f95508594938593929150565b505050505050505093505f935f93925f929190565b94935050505061477a939250614831896154da565b91996158b2565b9c50869c61474c565b5f9c508c9b50998b9998975095505050505050565b505f9b508b9a508a998a995089975095505050505050565b50505050509150505f905f905f905f905f905f90565b919294935f90835f52600560205260405f2060018060a01b0382165f5260205260ff60405f20541615614a8957835f52600260205260405f2060018060a01b0382165f5260205260405f2093604051946148dd86611eea565b60018060a01b038154168652600181015460018060a01b038116602088015262ffffff8160a01c16604088015260b81c60020b6060870152600260018060a01b039101541660808601525f52600460205260405f209060018060a01b03165f5260205260405f20549260a081209260018060a01b035f5416916149608584614a9d565b956001600160801b038716918215614a735788614991928c9263ffffffff6001600160801b038816921690886150bd565b9a919890978b986001600160801b03819b9d1615614a5b57508b15614a4a57906149e8949392916149c18b6154da565b936001600160801b038b161115614a4257915b6001600160a01b03908116911610926158b2565b90670de0b6b3a7640000821015614a355790606462ffffff6146a486614a0d9561429a565b95612260871015614a2a57806127106146ce6146d593998361434a565b505f95508594859150565b505f965086958692509050565b5088916149d4565b505f9a508a998a9650945050505050565b5f9c508c9b909a508b99506001975095505050505050565b505f995089988998508897508795509350505050565b505f95508594859450849350839250829150565b90614aa790615097565b60038101809111611ff257604051631e2eaeaf60e01b8152600481019190915290602090829060249082906001600160a01b03165afa8015611b07575f90614af8575b6001600160801b0391501690565b506020813d602011614b29575b81614b1260209383611f50565b81010312610ba5576001600160801b039051614aea565b3d9150614b05565b9080158015614ca1575b614c91578215614c8c57905b600160801b614b5682846138b9565b10614b8357505015614b6b576401000276a490565b73fffd8963efd1fc6a506488495d951d5263988d2590565b600160401b614b9282846138b9565b10614c7457614ba091615a16565b6001600160c01b038111614c4e57614bba9060401b615e54565b905b15614c19576401000276a3811115614c0f5773fffd8963efd1fc6a506488495d951d5263988d26811015614bf6576001600160a01b031690565b5073fffd8963efd1fc6a506488495d951d5263988d2590565b506401000276a490565b73fffd8963efd1fc6a506488495d951d5263988d26811015614bf6576401000276a3811115614c0f576001600160a01b031690565b614c5790615e54565b8060201b908082046401000000001490151715611ff25790614bbc565b614c8190614c869261598c565b615e54565b90614bbc565b614b47565b505015614b6b576401000276a490565b508115614b3b565b916040519163a9059cbb60e01b5f5260018060a01b031660045260245260205f60448180865af19060015f5114821615614d09575b60405215614ce95750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b906001811516611c7057823b15153d15161690614cde565b61012c81108015614d52575b614d345750565b62904c3760e81b5f5260045261012c6024526202a30060445260645ffd5b506202a3008111614d2d565b613bfa613c08614d9d925f958695869860405193614d7b85611f19565b8452151560208401526040830152606082015260405192839160208301613a7c565b03925af15f9181614dd1575b50614db95750505f905f90600190565b80602080614dcc935183010191016120d0565b919092565b614de69192503d805f833e613d3f8183611f50565b905f614da9565b814710614e3c575f808093819382604051614e09602082611f50565b526001600160a01b03165af115614e1c57565b3d15614e2d576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b504763cf47918160e01b5f5260045260245260445ffd5b9291928115614eb3576127108314614eb35783821015614eac578382614e7892613964565b918015614ea5578061271003906127108211611ff257613a0494614e9f936117f392613964565b906138d7565b5050905090565b9250505090565b505050505f90565b6101808201358015158103610ba557614fa65761016082013515614ee857613a0491506028810490611fe5565b614f43916020906001600160a01b03614f0082611fd1565b166040614f0f60c08401611fd1565b815163c66d192b60e01b8152939091013560048401526001600160a01b031660248301529093849190829081906044820190565b03915afa8015611b07575f90614f72575b613a04925080821015614f6a57506028816146ce565b6028906146ce565b506020823d602011614f9e575b81614f8c60209383611f50565b81010312610ba557613a049151614f54565b3d9150614f7f565b905090565b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615614fe7575b50604052565b3d15903b151516909216915f614fe1565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f511484161561503a5750604052565b60018492941516615053573b15153d151616915f614fe1565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f511484161561503a5750604052565b6040516020810191825260066040820152604081526150b7606082611f50565b51902090565b9491929390945f9363ffffffff811691821561548557506080870151604051631873947560e01b815291926001600160a01b039091169190615102600483018a611e83565b60208260a481865afa5f9281615449575b50615416575b5050956040519661512b606089611f50565b6002885260208801976040368a3761514281612173565b9863ffffffff8516809a525f61515783612194565b52604051637cb7cbf960e11b815293849260c484019161517b906004860190611e83565b60c060a48501525180915260e4830191905f5b8181106153f7575050509181805f9403915afa90815f915f936152d8575b506151c15750505050505050505f905f905f90565b6151d76151cd82612194565b5160060b91612173565b5160060b900396667fffffffffffff198812667fffffffffffff891317611ff25760060b9660060b87156138c357667fffffffffffff1981145f19891416611ff25787810560020b975f821291826152c9575b50506152b4575b6001600160a01b0361524282612194565b5116906001600160a01b039061525790612173565b511690036001600160a01b038111611ff2576001600160a01b03169081615289575b5050615286929385615807565b92565b61528694506001600160801b03916152ac9160801b63ffffffff60801b166138b9565b16925f615279565b95627fffff198114611ff2575f190195615231565b0760060b151590505f8061522a565b915091503d805f833e6152eb8183611f50565b810190604081830312610ba55780516001600160401b038111610ba55781019082601f83011215610ba557815161532181612138565b9261532f6040519485611f50565b81845260208085019260051b82010190858211610ba557602001915b8183106153dd575050506020810151906001600160401b038211610ba557019180601f84011215610ba55782519061538282612138565b936153906040519586611f50565b82855260208086019360051b820101918211610ba557602001915b8183106153bd5750505090915f6151ac565b82516001600160a01b0381168103610ba5578152602092830192016153ab565b82518060060b8103610ba55781526020928301920161534b565b825163ffffffff1684528694506020938401939092019160010161518e565b63ffffffff82168015615437571061542f575b80615119565b91505f615429565b505050505050505050505f905f905f90565b9092506020813d60201161547d575b8161546560209383611f50565b81010312610ba557615476906120f9565b915f615113565b3d9150615458565b97959691505060a0919293502061549c818761429a565b509097916001600160a01b03161590506154cb576154c69392916154bf91614a9d565b9486615807565b929190565b505050509150505f905f905f90565b60020b908160ff1d82810118620d89e881116157f45763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166157d8575b600481166157bc575b600881166157a0575b60108116615784575b60208116615768575b6040811661574c575b60808116615730575b6101008116615714575b61020081166156f8575b61040081166156dc575b61080081166156c0575b61100081166156a4575b6120008116615688575b614000811661566c575b6180008116615650575b620100008116615634575b620200008116615619575b6204000081166155fe575b62080000166155e5575b5f126155dd575b0160201c90565b5f19046155d6565b6b048a170391f7dc42444e8fa290910260801c906155cf565b6d2216e584f5fa1ea926041bedfe9890920260801c916155c5565b916e5d6af8dedb81196699c329225ee6040260801c916155ba565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916155af565b916f31be135f97d08fd981231505542fcfa60260801c916155a4565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161559a565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91615590565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91615586565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161557c565b916ff3392b0822b70005940c7a398e4b70f30260801c91615572565b916ff987a7253ac413176f2b074cf7815e540260801c91615568565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161555e565b916ffe5dee046a99a2a811c461f1969c30530260801c91615554565b916fff2ea16466c96a3843ec78b326b528610260801c9161554b565b916fff973b41fa98c081472e6896dfb254c00260801c91615542565b916fffcb9843d60f6159c9db58835c9266440260801c91615539565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615530565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91615527565b916ffff97272373d413259a46990580e213a0260801c9161551e565b826345c3193d60e11b5f5260045260245ffd5b909291906001600160a01b039061581d906154da565b166001600160801b03811161586f57806158369161434a565b916001600160a01b039081169116101561585d576001600160801b03613a04921690615c2f565b6001600160801b03613a049216615bad565b8061587991615a99565b916001600160a01b03908116911610156158a0576001600160801b03613a04921690615b64565b6001600160801b03613a049216615ae2565b919291906001600160801b031680158015615901575b614eb3576158d591615c78565b90156158ee57613a04916001600160a01b031690615d8b565b613a04916001600160a01b031690615d08565b506001600160a01b038416156158c8565b9061226081101561597c5760648101809111611ff25760c88110615984575b61226081101561597c578115614fa65766b1a2bc2ec5000019821161597c5780612260036122608111611ff25766b1a2bc2ec500008301808411611ff257613a04936117f392615dd4565b505061226090565b5060c8615931565b9060c082901b905f19600160c01b840992828085109403938085039485841115610ba55714615a0f578190600160c01b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90608082901b905f19600160801b840992828085109403938085039485841115610ba55714615a0f578190600160801b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160401b1115610ba55714615ad957600160401b910990828211900360c01b910360401c1790565b50505060401c90565b90608082901b905f1983600160801b0992828085109403938085039485841115610ba55714615a0f578190600160801b0981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160801b1115610ba55714615ba457600160801b910990828211900360801b910360801c1790565b50505060801c90565b9060c082901b905f1983600160c01b0992828085109403938085039485841115610ba55714615a0f578190600160c01b0981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160c01b1115610ba55714615c6f57600160c01b910990828211900360401b910360c01c1790565b50505060c01c90565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610ba55714615a0f57670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b90606082901b905f19600160601b840992828085109403938085039485841115610ba55714615a0f578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160601b1115610ba55714615dcb57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f1981850993838086109503948086039586851115610ba55714615e4c579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6001811115613a0457806001600160801b821015615f65575b600482600160401b615f17941015615f58575b640100000000811015615f4b575b62010000811015615f3e575b610100811015615f32575b6010811015615f26575b1015615f1e575b60030260011c615ec681846138b9565b0160011c615ed481846138b9565b0160011c615ee281846138b9565b0160011c615ef081846138b9565b0160011c615efe81846138b9565b0160011c615f0c81846138b9565b0160011c80926138b9565b8111900390565b60011b615eb6565b811c9160021b91615eaf565b60081c91811b91615ea5565b60101c9160081b91615e9a565b60201c9160101b91615e8e565b60401c9160201b91615e80565b5050608081901c600160401b615e6d565b601436101580615f9d575b15615f99576013193601368111610ba5573560601c90565b3390565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614615f8156fea164736f6c634300081c000a0000000000000000000000005aff29060e023e6fb87be5596652b33c65af535b000000000000000000000000f92ac1ab5a00033e35a3975739124f61928c36b0000000000000000000000000ad45e4627f068d1e6b21e5301870d807543a84010000000000000000000000006017d1fba9dc279bfa0b03fd931c22e242ab36910000000000000000000000001f80d8f057ee36b4c2656d107e4e4558b71ba7d90000000000000000000000004dc161ef837ff1c4485b08ddfcdb182f2157be180000000000000000000000003ba60b60933916a7c87d0860dcee62a0ce34e3e200000000",
				"blockHash": "0x7345b75593edf2f309a2f973754a315247efdd49d4d4e913062da0125a541bc5",
				"blockNumber": "0x92a1454",
				"blockTimestamp": "0x6a480261",
				"transactionHash": "0x11fec56b621dcc414a95a54f14e119a7e0aece1d91daf57e077fd92db1ae0943",
				"transactionIndex": "0xd",
				"logIndex": "0x47",
				"removed": false
			},
			{
				"address": "0x4dc161ef837ff1c4485b08ddfcdb182f2157be18",
				"topics": [
					"0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
					"0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38"
				],
				"data": "0x",
				"blockHash": "0x7345b75593edf2f309a2f973754a315247efdd49d4d4e913062da0125a541bc5",
				"blockNumber": "0x92a1454",
				"blockTimestamp": "0x6a480261",
				"transactionHash": "0x11fec56b621dcc414a95a54f14e119a7e0aece1d91daf57e077fd92db1ae0943",
				"transactionIndex": "0xd",
				"logIndex": "0x48",
				"removed": false
			},
			{
				"address": "0x91f164e1300f13beaf77358e4d84ed78f8e99d38",
				"topics": [
					"0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
					"0x6391653097d476bbf8d0c7d143faf4d4ae92afbff67fb89d77cc2e2110604787"
				],
				"data": "0x0000000000000000000000000000000000000000000000000000000000000002",
				"blockHash": "0x7345b75593edf2f309a2f973754a315247efdd49d4d4e913062da0125a541bc5",
				"blockNumber": "0x92a1454",
				"blockTimestamp": "0x6a480261",
				"transactionHash": "0x11fec56b621dcc414a95a54f14e119a7e0aece1d91daf57e077fd92db1ae0943",
				"transactionIndex": "0xd",
				"logIndex": "0x49",
				"removed": false
			}
		],
		"logsBloom": "0x00000000000010000000000000080000001000000000000000000000000000000000000000000000000000000040000000000000000000008040000000000000000000000000200000000000000000000000000000000040000000000000000040000000000000000000000000000000000000000000000000000000000080008800000020400000000104000000002000000000000000000000000040000000004000040000000000000000000400002200000000000000000000000004000000000002008000000000000000400000000000000020000000000000800000000000000000000100000000000000000200000000010080000000000000000000",
		"transactionHash": "0x11fec56b621dcc414a95a54f14e119a7e0aece1d91daf57e077fd92db1ae0943",
		"transactionIndex": "0xd",
		"blockHash": "0x7345b75593edf2f309a2f973754a315247efdd49d4d4e913062da0125a541bc5",
		"blockNumber": "0x92a1454",
		"gasUsed": "0x5aff88",
		"effectiveGasPrice": "0x24a0b4",
		"blobGasUsed": "0x597d60",
		"from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
		"to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
		"contractAddress": null,
		"l1GasPrice": "0x6036034",
		"l1GasUsed": "0x39463",
		"l1Fee": "0x32e17d58d9",
		"l1BaseFeeScalar": "0x146b",
		"l1BlobBaseFee": "0x614c6d",
		"l1BlobBaseFeeScalar": "0xf79c5",
		"daFootprintGasScalar": "0x190"
	},
	"bytecode": "0x6101a06040523461024e5761627c60e0813803918261001d81610252565b93849283398101031261024e5780516001600160a01b038116810361024e576020820151906001600160a01b038216820361024e576040830151916001600160a01b038316830361024e576060840151916001600160a01b038316830361024e576080850151916001600160a01b038316830361024e576100ac60c06100a560a0890161028b565b970161028b565b9060805260a05260c052610120526101005260e052610160526101246100d26040610252565b600781526618d85cda13dd5d60ca1b6020909101523060601b6001600160601b0319167f86b14ff4df1839d4c5ed01550f2540ea56ad3e38000000000000000000000000186001600160e01b03191690565b610140526101836101356040610252565b600381526270617960e81b6020909101523060601b6001600160601b0319167fadc756803e4eb4ccfb136b73d5f72e3dc0d452d3000000000000000000000000186001600160e01b03191690565b61018052604051615fdc90816102a08239608051818181610254015281816105d60152613df2015260a051818181610fd5015281816110300152615fa1015260c051818181610ee9015281816116890152818161223a0152612c9a015260e0518181816115be01526128ff015261010051818181610405015281816110b5015281816112cd0152818161148b0152611546015261012051818181611122015281816116030152613eb0015261014051816133f90152610160518161030e015261018051816121dd0152f35b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027757604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361024e5756fe61026080604052600436101561001d575b50361561001b575f80fd5b005b5f905f3560e01c90816301ffc9a714611d15575080631337f9861461164f5780631a65893b146116325780631d831d5c146115ed5780631eabcd34146115a857806327e5141114611575578063293c499914611530578063345c42131461143e57806349e303831461126d57806353fd8e3114611062578063572b6c05146110045780637da0a87714610fbf578063826a5e7414610f1857806388bc2ef314610ed35780638cc3584614610dfc57806391dd7346146108155780639782ed71146107d05780639785f1ed146107a757806399f6d77f146106a7578063b7433b35146103c6578063b88a92b4146103a8578063bac6b2ad146102dc578063c22903b2146102c7578063db312fae146102aa578063dc4c90d314610283578063f434c9141461023e5763f672acac03610010573461023b57602036600319011261023b576004356001600160401b038111610239576101c060031982360301126102395761018b906004016133a2565b92939060409592955195869560a0870193875260208701526040860152606085015260a06080850152825180915260c08401602060c08360051b870101940192905b8282106101dc57505050500390f35b91936001919395506020610229819260bf198a8203018652608060608a51878060a01b03815116845285810151151586850152604081015160408501520151918160608201520190611ec6565b96019201920185949391926101cd565b505b80fd5b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b57546040516001600160a01b039091168152602090f35b503461023b578060031936011261023b5760206040516127108152f35b506102d96102d436611dc8565b612c6f565b80f35b503461023b57604036600319011261023b576004356001600160a01b038116908190036102395761030b611e42565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036103955782546001600160a01b038116610383576bffffffffffffffffffffffff60a01b1617825560018060a01b03166bffffffffffffffffffffffff60a01b600154161760015580f35b6001622c6feb60e11b03198452600484fd5b634758af1b60e01b835233600452602483fd5b503461023b578060031936011261023b5760206040516202a3008152f35b503461023b57606036600319011261023b576004356103e3611e42565b6040516331a9108f60e11b8152600481018390526044359291906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561069c57859161065e575b50610446615f76565b6001600160a01b0391821691168082141580610596575b61056b57505061046c83614d21565b6001600160a01b03811661eeee03610565575082915b81845260056020526040842060018060a01b0384165f5260205260ff60405f20541615610544578184526004602081815260408087206001600160a01b0387165f81815291845282822054878a529484528289209082529092529020829055927fac260005f5a1d1cb696ab1065059083a3769fa09f4b4699f1dafd670d071a921919061053e610510615f76565b6040805197885260208801949094526001600160a01b03908116938701939093529116939081906060820190565b0390a380f35b633d56755560e01b845260048290526001600160a01b038316602452604484fd5b91610482565b908360849260405192631326f75560e11b8452600484015260248301526044820152601c6064820152fd5b50604051631a45b42760e11b8152600481018290526024810183905260448101859052601c606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610653578791610615575b501561045d565b90506020813d60201161064b575b8161063060209383611f50565b810103126106475761064190611f71565b5f61060e565b8680fd5b3d9150610623565b6040513d89823e3d90fd5b90506020813d602011610694575b8161067960209383611f50565b810103126106905761068a9061203d565b5f61043d565b8480fd5b3d915061066c565b6040513d87823e3d90fd5b503461023b5761016036600319011261023b5761012036602319011261023b57604051906106d482611f34565b60243565ffffffffffff8116810361023957825260443565ffffffffffff8116810361023957602083015260643565ffffffffffff8116810361023957604083015260843565ffffffffffff8116810361023957606083015260a43563ffffffff8116810361023957608083015260c4356001600160701b03811681036102395760a083015260e43563ffffffff811681036102395760c083015261010435916001600160a01b03831683036102395760209260e08201526101006101243591015261079e611e58565b50604051908152f35b503461023b578060031936011261023b576001546040516001600160a01b039091168152602090f35b503461023b57604036600319011261023b5760406107ec611e42565b9160043581526004602052209060018060a01b03165f52602052602060405f2054604051908152f35b503461023b57602036600319011261023b57600435906001600160401b03821161023b573660238301121561023b5781600401356001600160401b0381116102395782019036602483011161023b5780546001600160a01b03169133839003610de957610100848203126102395760a060246040519261089484611f19565b869003016023190112610239576040516108ad81611eea565b6108b960248601611e6f565b81526108c760448601611e6f565b6020820152606485013562ffffff81168103610ba55760408201526108ee60848601611e1e565b60608201526108ff60a48601611e6f565b6080820152815261091260c48501611fb0565b93610940602083019580875260e4830135906101046040860194838652013590816060870152151591614b31565b93825186511515925195600160ff1b8714610dd55760405193606085018581106001600160401b03821117610dc15792610a006109cf938993602098979660405287528787019a84038b52604087019060018060a01b031681526040519084898301528882526109b1604083611f50565b604051633cf3645360e21b81529b8c98899788966004880190611e83565b51151560a48601525160c4850152516001600160a01b031660e4840152610120610104840152610124830190611ec6565b03925af1928315610db6578293610d82575b508260801d935115155f14610d4a575180516020909101516001600160a01b03918216949116906001600160801b03908190610a4d90612c4f565b169316935b6001600160a01b031680610c7e57508154604051630476982d60e21b8152906020908290600490829088906001600160a01b03165af18015610c7357610c44575b505b6001600160a01b031680158015610be15747945b83546001600160a01b031690813b15610690578491606483926040519485938492630b0d9c0960e01b845289600485015230602485015260448401525af18015610bd657908491610bbd575b505015610b40575050610b0b610b3c9247611fe5565b604051916020830152604082015260408152610b28606082611f50565b604051918291602083526020830190611ec6565b0390f35b6020602491604051928380926370a0823160e01b82523060048301525afa918215610bb15791610b79575b50610b3c92610b0b91611fe5565b90506020813d602011610ba9575b81610b9460209383611f50565b81010312610ba55751610b3c610b6b565b5f80fd5b3d9150610b87565b604051903d90823e3d90fd5b81610bc791611f50565b610bd257825f610af5565b8280fd5b6040513d86823e3d90fd5b6040516370a0823160e01b8152306004820152602081602481865afa908115610bd6578491610c12575b5094610aa9565b90506020813d602011610c3c575b81610c2d60209383611f50565b81010312610ba557515f610c0b565b3d9150610c20565b610c659060203d602011610c6c575b610c5d8183611f50565b810190612006565b505f610a93565b503d610c53565b6040513d85823e3d90fd5b82546001600160a01b0316803b15610d4657838091602460405180948193632961046560e21b83528760048401525af18015610bd65785918591610d2d575b50508354610cd6926001600160a01b0390911690614ca9565b8154604051630476982d60e21b8152906020908290600490829087906001600160a01b03165af18015610c7357610d0e575b50610a95565b610d269060203d602011610c6c57610c5d8183611f50565b505f610d08565b81925090610d3a91611f50565b610bd25783835f610cbd565b8380fd5b51602081015190516001600160a01b0391821694939116906001600160801b03908190610d7990600f0b612c4f565b16931693610a52565b9092506020813d602011610dae575b81610d9e60209383611f50565b810103126102395751915f610a12565b3d9150610d91565b6040513d84823e3d90fd5b634e487b7160e01b88526041600452602488fd5b634e487b7160e01b86526011600452602486fd5b63cb25844560e01b825233600452602482fd5b503461023b57602036600319011261023b576004356001600160401b03811161023957610180600319823603011261023957610e3a906004016121a4565b6040519283926040840190845260406020850152825180915260608401602060608360051b870101940192905b828210610e7657505050500390f35b91936001919395506020610ec38192605f198a8203018652608060608a51878060a01b03815116845285810151151586850152604081015160408501520151918160608201520190611ec6565b9601920192018594939192610e67565b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57604036600319011261023b576040610f34611e42565b91610f3d612070565b5060043581526002602052209060018060a01b03165f5260205260a060405f2060405190610f6a82611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b60608301526002600180851b03910154166080820152610fbd6040518092611e83565bf35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57602036600319011261023b576004356001600160a01b03811690819003610239576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169091148152602090f35b503461023b5761010036600319011261023b5760043560a03660231901126102395760e4356001600160a01b038116808203610d46576040516331a9108f60e11b815260048101849052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561069c5784928691611229575b5061eeee926110fc91613d5f565b03611223575081905b60405163ea78803f60e01b815260048101829052916020836024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315610bd65784936111f2575b506040519161116883611eea565b6024356001600160a01b03811681036111ee5783526044356001600160a01b03811681036111ee57602084015260643562ffffff811681036111ee5760408401526084358060020b81036111ee57606084015260a435936001600160a01b03851685036111ee5760808401949094526102d9936001600160a01b03169260c43591613f7a565b8580fd5b61121591935060203d60201161121c575b61120d8183611f50565b810190612051565b915f61115a565b503d611203565b90611105565b9250506020823d602011611265575b8161124560209383611f50565b81010312610690576110fc8461125d61eeee9461203d565b9150926110ee565b3d9150611238565b503461023b5760c036600319011261023b576004359061128b611dfc565b91611294611e0e565b61129c611e2c565b9060a4359460018060a01b038616809603610690576040516331a9108f60e11b8152600481018590526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156114335790859187916113e9575b5061131f9493929161131991613d5f565b84613e6b565b92909184602060018060a01b0382541660c46040518094819363313b65df60e11b835261134f6004840189611e83565b8c60a48401525af16113b0575b50845460a08220611375916001600160a01b031661429a565b5050506001600160a01b03169580870361139957506102d994955060643591613f7a565b6302c5a6e160e11b86526004879052602452604485fd5b6020813d6020116113e1575b816113c960209383611f50565b810103126111ee57518060020b81031561135c578580fd5b3d91506113bc565b9150506020813d60201161142b575b8161140560209383611f50565b810103126111ee57906113198561142061131f96959461203d565b915091929394611308565b3d91506113f8565b6040513d88823e3d90fd5b503461023b5760a036600319011261023b5760043561145b611dfc565b90611464611e0e565b61146c611e2c565b6040516331a9108f60e11b8152600481018490529091906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156114335786916114e3575b50906102d994611319856114d79594613d5f565b92909160643591613f7a565b929190506020833d602011611528575b8161150060209383611f50565b810103126111ee576102d9946113198561151c6114d79661203d565b939495505050946114c3565b3d91506114f3565b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57602036600319011261023b57602090600435815260038252604060018060a01b0391205416604051908152f35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b57602060405161012c8152f35b5061165936611dc8565b604051636e49181f60e01b8152602082810135600483018190523360248401529190816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115611b07575f91611cdb575b5015611cc857816116cf6101c080940182611f7e565b9080949181010312610ba5576116e483611fb0565b926040810135936116f760608301611fb0565b9060808301359260018060a01b03841696878503610ba55760a08201359360c08301359360e08401359261172e6101008601611e1e565b5061173c6101208601611fbd565b5080938781151580611cba575b611c8b575b50505060e088019061eeee6001600160a01b0361176a84611fd1565b161497889761178061177b85611fd1565b613a07565b99611c79575b88159283611bfd575b916117a0916117b49594938d613b13565b9390996117af61177b85611fd1565b611fe5565b5f98816118c2575b5050505081156118b9575b50806118a7575b61188757506117f9926117f38695936117f39360206101608d9b9a0135910135613964565b90612030565b9182611803578380f35b6020936118156101a060c49401611fd1565b9560405196879586946363fdc96f60e11b86526004860152602485015260018060a01b0316604484015260a060648401528160a4840152600160848401525af18015610db657611868575b818180808380f35b6118809060203d602011610c6c57610c5d8183611f50565b505f611860565b886044916118958688612030565b63e2d708a960e01b8352600452602452fd5b50806118b38587612030565b106117ce565b9050155f6117c7565b8c939499505f9e9d9e50825f93611b19575b8115611b1257825b6118e861177b88611fd1565b956118f288611fd1565b91602095604051936119048886611f50565b5f8552333b15610ba5575f9361196260405196879586948594639e6eec0560e01b8652600486015260018060a01b03166024850152604484015286606484015260c060848401528660c484015260e060a484015260e4830190611ec6565b0391335af18015611b0757611aef575b509d9e9d8f90611a8a575b50156119fb57505061199461177b61199a93611fd1565b90611fe5565b945b887faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e5166119ef6119d1886101608d01358b613964565b604080519a8b5260208b0182905233908b0152989081906060820190565b0390a25f8080806117bc565b6024939192509081906001600160a01b0390611a1690611fd1565b16604051948580926370a0823160e01b82523360048301525afa908115611a7f578d91611a4f575b50611a499250611fe5565b9461199c565b905082813d8311611a78575b611a658183611f50565b81010312610ba557611a4991515f611a3e565b503d611a5b565b6040513d8f823e3d90fd5b6001600160a01b03611a9b87611fd1565b16611aa7823383614fab565b15611ab3575b5061197d565b9050611abf3382614ff8565b15611adc578f611ad090338361505c565b15611adc578f90611aad565b8f602491635274afe760e01b8252600452fd5b909f9e50611afe905f90611f50565b5f9d9e5f611972565b6040513d5f823e3d90fd5b5f926118dc565b60249450925060206001600160a01b03611b3287611fd1565b16604051958680926370a0823160e01b82523360048301525afa8015611b07578d945f91611bc8575b50926001600160a01b03611b6e87611fd1565b16611b7a843383614fab565b15611b86575b506118d4565b909192939450611b963382614ff8565b15611bb657611ba684338361505c565b15611bb657908d94939291611b80565b635274afe760e01b5f5260045260245ffd5b9450506020843d602011611bf5575b81611be460209383611f50565b81010312610ba5578c93515f611b5b565b3d9150611bd7565b6001600160a01b03611c0e86611fd1565b168c610140604051916323b872dd60e01b5f523360045230602452013560445260205f60648180865af19060015f5114821615611c58575b6040525f60605215611bb6575061178f565b906001811516611c7057823b15153d15161690611c46565b503d5f823e3d90fd5b98611c85903490611fe5565b98611786565b90919750611ca0826101408c01358093613964565b978461174e57611cb1939550613964565b915f808061174e565b50816101408c013510611749565b634758af1b60e01b5f523360045260245ffd5b90506020813d602011611d0d575b81611cf660209383611f50565b81010312610ba557611d0790611f71565b5f6116b9565b3d9150611ce9565b34610ba5576020366003190112610ba5576004359063ffffffff60e01b8216809203610ba55760209163e347239560e01b8114908115611db7575b8115611da6575b8115611d95575b8115611d84575b8115611d73575b5015158152f35b6301ffc9a760e01b14905083611d6c565b633d0d324560e21b81149150611d65565b6316f0f2dd60e01b81149150611d5e565b63611481d960e11b81149150611d57565b63099bfcc360e11b81149150611d50565b6020600319820112610ba557600435906001600160401b038211610ba557610200908290036003190112610ba55760040190565b6024359062ffffff82168203610ba557565b604435908160020b8203610ba557565b35908160020b8203610ba557565b608435906001600160a01b0382168203610ba557565b602435906001600160a01b0382168203610ba557565b61014435906001600160a01b0382168203610ba557565b35906001600160a01b0382168203610ba557565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a081019081106001600160401b03821117611f0557604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b03821117611f0557604052565b61012081019081106001600160401b03821117611f0557604052565b90601f801991011681019081106001600160401b03821117611f0557604052565b51908115158203610ba557565b903590601e1981360301821215610ba557018035906001600160401b038211610ba557602001918136038313610ba557565b35908115158203610ba557565b35906001600160801b0382168203610ba557565b356001600160a01b0381168103610ba55790565b91908203918211611ff257565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610ba5575190565b6001600160401b038111611f0557601f01601f191660200190565b91908201809211611ff257565b51906001600160a01b0382168203610ba557565b90816020910312610ba557516001600160a01b0381168103610ba55790565b6040519061207d82611eea565b5f6080838281528260208201528260408201528260608201520152565b9291926120a682612015565b916120b46040519384611f50565b829481845281830111610ba5578281602093845f960137010152565b9190826040910312610ba5576020825192015190565b519065ffffffffffff82168203610ba557565b519063ffffffff82168203610ba557565b519061ffff82168203610ba557565b3563ffffffff81168103610ba55790565b3560ff81168103610ba55790565b6001600160401b038111611f055760051b60200190565b6040519061215c82611f19565b606080835f81525f60208201525f60408201520152565b8051156121805760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156121805760400190565b5f6102408190526101408190526040820192610120830135926060906122016121db6121d4610160840184611f7e565b369161209a565b7f000000000000000000000000000000000000000000000000000000000000000061435d565b90612c27575b5060a08101358411612c0c578315612c00575b604051632eec7b5560e11b815260c08201356004820152956020876024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa968715611b07575f97612bdf575b506040516320c94b1360e11b815260c08301356004820152610380816024816001600160a01b038c165afa908115611b07575f9161296f575b50608083016122b981612119565b63ffffffff808061010086015160241c16169116145f146128a157505060ff6122e384840161212a565b16604d8111611ff257600a0a5b6122fb818888613964565b60c08401355f908152600360205260409020546001600160a01b039081166101e05290929061eeee9061232d83611fd1565b160361289257505f955b5f60e08190526101a08190526001610220526101405190938493911561285d5760c08601355f52600260205260405f2060018060a01b038a165f5260205260a060405f206040519061238882611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b8a8301526002600180851b03910154166080820152209560c08101355f52600560205260405f2060018060a01b038b165f5260205260ff60405f20541680612835575b8061022052612807575b5f60c081815282013581526005602090815260408083206001600160a01b038e16845290915281205490989060ff161561274c57505f6102005260a08101358403612735575f610200525b61022051156101c0526101c051610180526101c051612728575b6101c0518061271c575b612702578b90610180516101605261018051156126f2575b6101a051806126e7575b806126db575b6126d1575b61024051612644575b5050604061012081905280516101008190526124c69190611f50565b600161010051525f5b61012051601f1901811061262a57506001600160801b0395969798999a610100519a5f60a052610160515f14612621575f60a0525b610120515160805260018060a01b03166101e051106020608051015261020051610120516080510152610240516060608051015261014051151560808051015260018060a01b031660a0608051015260c0608051015260e06080510152610100608051015260020b61012060805101521661014060805101526101606080510152610180608051015260c0516101a0608051015260e0516101c060805101526101a05115156101e060805101526101e0608051526125c6610200608051611f50565b61012051516125d481611f19565b3081526101605115908115602082015260a05161012051820152608051606082015261260261010051612173565b5261260f61010051612173565b5061261657565b610100515f93509150565b8460a052612504565b60209061263561214f565b828261010051010152016124cf565b604080516380d3fe3560e01b815260c092909201356004830152610240516024830152600160448301529298509190829060649082906001600160a01b03165afa8015611b07575f915f916126a0575b5060c052958a5f6124aa565b90506126c4915060403d6040116126ca575b6126bc8183611f50565b8101906120d0565b5f612694565b503d6126b2565b82610240526124a1565b5061024051151561249c565b506101405115612496565b610240518310156101605261248c565b5063e2d708a960e01b5f526004526102405160245260445ffd5b50610240518210612474565b610140516101c05261246a565b6127438460a0830135611fe5565b61020052612450565b9a9b97509550969750505050506102405161279a575b5050610140518061278e575b6127755750565b63e2d708a960e01b5f526004526102405160245260445ffd5b5061024051811061276e565b604080516380d3fe3560e01b815260c092909201356004830152610240516024830152600160448301529091829060649082906001600160a01b03165afa8015611b07576127e9575b80612762565b6128019060403d6040116126ca576126bc8183611f50565b506127e3565b9350935061281f886101e051818560c0880135614884565b91929894979350506101a052959460e052612405565b505f546001600160801b03906128559089906001600160a01b0316614a9d565b1615156123fb565b9350939150612876876101e051818460c087013561451c565b6101a0999592999894979398529796956102405260e052612405565b61289b90611fd1565b95612337565b63ffffffff6101006128b460ff93612119565b93015160241c1663ffffffff6128cb87870161212a565b604051631df139fd60e11b815260c088013560048201529482166024860152911660448401521660648201526020816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f9161293d575b506122f0565b90506020813d602011612967575b8161295860209383611f50565b81010312610ba557515f612937565b3d915061294b565b8091506103803d8111612bd8575b6129878183611f50565b810103906103808212610ba5576101208212610ba557604051916129aa83611f34565b6129b3826120e6565b83526129c1602083016120e6565b60208401526129d2604083016120e6565b60408401526129e28683016120e6565b868401526129f2608083016120f9565b608084015260a08201516001600160701b0381168103610ba55760a0840152612a1d60c083016120f9565b60c084015260e0820151906001600160a01b0382168203610ba5576102609160e085015261010083015161010085015261011f190112610ba557604051906102608201908282106001600160401b03831117611f0557610360612bcf9161024093604052612a8e610120820161210a565b8552612a9d610140820161210a565b6020860152612aaf61016082016120f9565b6040860152612ac16101808201611f71565b89860152612ad26101a08201611f71565b6080860152612ae46101c08201611f71565b60a0860152612af66101e08201611f71565b60c0860152612b086102008201611f71565b60e0860152612b1a6102208201611f71565b610100860152612b2b848201611f71565b610120860152612b3e6102608201611f71565b610140860152612b516102808201611f71565b610160860152612b646102a08201611f71565b610180860152612b776102c08201611f71565b6101a0860152612b8a6102e08201611f71565b6101c0860152612b9d6103008201611f71565b6101e0860152612bb06103208201611f71565b610200860152612bc3610340820161203d565b6102208601520161210a565b9101525f6122ab565b503d61297d565b612bf991975060203d60201161121c5761120d8183611f50565b955f612272565b60a0810135935061221a565b60a0908463cc8704dd60e01b5f52600452013560245260445ffd5b612c3c919450602080825183010191016120d0565b610240819052151561014052925f612207565b600f0b6f7fffffffffffffffffffffffffffffff198114611ff2575f0390565b604051636e49181f60e01b815260208281013560048301819052336024840152916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169181604481855afa908115611b07575f91613368575b5015613355576080830161eeee6001600160a01b03612cee83611fd1565b1603613346575f935b835f52600260205260405f2060018060a01b0386165f5260205260405f209160405192612d2384611eea565b60018060a01b038154168452600181015460018060a01b038116602086015262ffffff8160a01c16604086015260b81c60020b6060850152600260018060a01b03910154166080840152845f52600360205260018060a01b0360405f205416935f9160608401359586925f936101c08701612d9e8189611f7e565b90506132af575b508089116132a6575b50602060249160405192838092632eec7b5560e11b82528d60048301525afa908115611b07575f91613287575b506040516370a0823160e01b815230600482015290602082602481865afa918215611b07575f92613253575b5060208960c48c5f60405195869485936363fdc96f60e11b85526004850152602484015230604484015260a060648401528160a484015281608484015260018060a01b03165af18015611b0757613224575b506040516370a0823160e01b8152306004820152602081602481865afa908115611b07575f916131f0575b50612ea691612e9291611fe5565b996001600160a01b03168210858b89614d5e565b9a91909a61315e578480613155575b8061314c575b613135578a969594939291908082111561312d57612ed891611fe5565b80613113575b5061eeee90506001600160a01b03612ef583611fd1565b1603612f5c5750505091612f3960a092612f346101a07fbda038b4536720f0edb8da72fb3f9779994198517ff2acfe51d419e07feb0379979601611fd1565b614ded565b20604080519283526020830195909552339482019490945280606081015b0390a3565b919350916101a06001600160a01b03612f7484611fd1565b169101916020612f8384611fd1565b6040516370a0823160e01b81526001600160a01b03909116600482015292839060249082905afa918215611b07575f926130dd575b5060209061300790612fee8b6001600160a01b03612fd584611fd1565b166001600160a01b03612fe789611fd1565b1690614ca9565b6001600160a01b039061300090611fd1565b1693611fd1565b6040516370a0823160e01b81526001600160a01b03909116600482015292839060249082905afa8015611b07575f906130a9575b6130459250611fe5565b90806130a0575b80613097575b6130825750509060a07fbda038b4536720f0edb8da72fb3f9779994198517ff2acfe51d419e07feb037992612f39565b63e2d708a960e01b5f5260045260245260445ffd5b50818110613052565b5081151561304c565b506020823d6020116130d5575b816130c360209383611f50565b81010312610ba557613045915161303b565b3d91506130b6565b9091506020813d60201161310b575b816130f960209383611f50565b81010312610ba5575190613007612fb8565b3d91506130ec565b6131269161312087611fd1565b90614ca9565b5f80612ede565b50505f612ed8565b858b63e2d708a960e01b5f5260045260245260445ffd5b50858b10612ebb565b50851515612eb5565b5098509450508091929450906131e7575b6131d15750816131a785612f57936131207f8df6e3a86b047621038c6b98aa897b8dd0a6ce91b348704f248b7bbf0e32b21496611fd1565b6001600160a01b03906131b990611fd1565b60408051968752336020880152911694918291820190565b63e2d708a960e01b5f525f60045260245260445ffd5b5080151561316f565b90506020813d60201161321c575b8161320b60209383611f50565b81010312610ba55751612ea6612e84565b3d91506131fe565b6020813d60201161324b575b8161323d60209383611f50565b81010312610ba55751612e59565b3d9150613230565b9091506020813d60201161327f575b8161326f60209383611f50565b81010312610ba55751905f612e07565b3d9150613262565b6132a0915060203d60201161121c5761120d8183611f50565b5f612ddb565b97506020612dae565b9850945092506101006132c28887611f7e565b905010155f1461331b576132d96101009786611f7e565b9080989181010312610ba5576132f160608801611e1e565b506132fe60808801611fbd565b5061330b60e08801611fb0565b9260208801359735945b5f612da5565b613329604094939786611f7e565b9080959181010312610ba557602084359401359684151593613315565b61334f81611fd1565b93612cf7565b63ccdd427f60e01b5f523360045260245ffd5b90506020813d60201161339a575b8161338360209383611f50565b81010312610ba55761339490611f71565b5f612cd0565b3d9150613376565b61eeee6001600160a01b036133b960c08401611fd1565b16036138a7575f905b6040818101355f8181526003602052918220546001600160a01b0316949192838061341d6133f76121d46101a0860186611f7e565b7f000000000000000000000000000000000000000000000000000000000000000061435d565b90613879575b508015613850575b8015613848575b801561383c575b6137de576101208201359260808301359660a08401359661016085013593613463858a8c8a614e53565b955f905f945f9d600190855f146137b7575050865f52600260205260405f209060018060a01b03165f5260205260a060405f20604051906134a382611eea565b8054600180851b5f19019182168452820154808216602085015262ffffff81861c16604085015260b81c600290810b606085015290910154166080820152205f549091906001600160801b03906135049084906001600160a01b0316614a9d565b161515905b613513818b614ebb565b998215806137b0575b806137a7575b6137905782613786575b600198838061377c575b613641575b50505015958615613627575b50604094855198613558878b611f50565b60018a52601f1987015f5b81811061360f5750509d6001600160801b03918e9f9d9e9c9d8b9d89519860208a015289890152606088015260020b60808701521660a085015260c084015260e0830152151561010082015261010081526135c061012082611f50565b5f8251926135cd84611f19565b308452841515602085015283015260608201526135e984612173565b526135f383612173565b50613606575050506127109392915f9190565b95949391925090565b808c6020809361361d61214f565b9201015201613563565b90955080613637575b945f613547565b5086831115613630565b929890916040938451906136558683611f50565b600182526020820190601f19870136833761367260c08501611fd1565b61367b84612173565b6001600160a01b03918216905261369185611fd1565b16936136ac6101006136a560e0840161212a565b9201612119565b91885196879563b5c104f360e01b875260848701926004880152608060248801525180925260a4860194915f5b81811061375b57505050506020949263ffffffff859360ff859416604485015216606483015203915afa92831561375257505f9261371e575b501115955f808061353b565b9091506020813d60201161374a575b8161373a60209383611f50565b81010312610ba55751905f613712565b3d915061372d565b513d5f823e3d90fd5b83516001600160a01b031687528997506020968701969093019282016136d9565b508b881115613536565b861515925061352c565b868b63e2d708a960e01b5f5260045260245260445ffd5b50868b10613522565b508561351c565b91935095506137cd939d50829194508c87614884565b50909d919592949193929091613509565b929450945050613808575b506101608201359160808101359161012060a083013592013590606090565b61382f8361382a61016082013560a08301356080840135610120850135614e53565b614ebb565b81811061308257506137e9565b50608082013515613439565b508615613432565b50825f52600560205260405f2060018060a01b0387165f5260205260ff60405f2054161561342b565b809650604092508091505181010312610ba55761389d604060208601519501611f71565b841515905f613423565b6138b360c08201611fd1565b906133c2565b81156138c3570490565b634e487b7160e01b5f52601260045260245ffd5b91905f905f1981850990808502928380841093039280840393146139575761271083101561393b5750612710907fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9194950990828211900360fc1b910360041c170290565b60649186630c740aef60e31b8352600452602452612710604452fd5b5050506127109192500490565b90915f1983830992808302928380861095039480860395146139f757828510156139df5790829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f5260045260245260445260645ffd5b505090613a0492506138b9565b90565b6001600160a01b031661eeee8103613a1e57504790565b6020602491604051928380926370a0823160e01b82523060048301525afa908115611b07575f91613a4d575090565b90506020813d602011613a74575b81613a6860209383611f50565b81010312610ba5575190565b3d9150613a5b565b91909160e06060610100830194613a94848251611e83565b6020810151151560a0850152604081015160c08501520151910152565b602081830312610ba5578051906001600160401b038211610ba5570181601f82011215610ba557805190613ae482612015565b92613af26040519485611f50565b82845260208383010111610ba557815f9260208093018386015e8301015290565b9091925f925f80613c3b613bfa613c0860e08801956101408901359661eeee60018060a01b03613b4283611fd1565b16148614613d4e5750602085995b0135988986526002602052604086209060018060a01b03168652602052604085209a6040519b613b7f8d611eea565b60018060a01b038154168d528c6060600183015460018060a01b038116602084015262ffffff8160a01c16604084015260b81c60020b910152600260018060a01b039101541660808d015260405191613bd783611f19565b8c8352156020830152876040830152606082015260405192839160208301613a7c565b03601f198101835282611f50565b82546040516348c8949160e01b8152602060048201529485936001600160a01b0390921692849283916024830190611ec6565b03925af15f9181613d2a575b50613c59575050505050505f90600190565b7f2afb56853a8b76a0868e64c0001eedd84d9a7f5bc7fb788aba6180e422ba6ec5613cbc60a0613c97846020808a979d9b9c9d5183010191016120d0565b91909a2060408051968752602087018390523390870152909950939081906060820190565b0390a384613cc8575050565b6001600160a01b031690813b15610ba5575f9160a48392604051948593849263516a997360e11b84523060048501526024840152896044840152608060648401528160848401525af18015611b0757613d1e5750565b5f613d2891611f50565b565b613d479192503d805f833e613d3f8183611f50565b810190613ab1565b905f613c47565b613d59602091611fd1565b99613b50565b90613d68615f76565b6001600160a01b0392831692168083141580613db2575b613d8857505050565b6084935060405192631326f75560e11b8452600484015260248301526044820152601d6064820152fd5b50604051631a45b42760e11b8152600481018290526024810184905260448101839052601d606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f91613e31575b5015613d7f565b90506020813d602011613e63575b81613e4c60209383611f50565b81010312610ba557613e5d90611f71565b5f613e2a565b3d9150613e3f565b92919091613e77612070565b506001600160a01b03811661eeee03613f7457505f915b60405163ea78803f60e01b8152600481019490945291928392906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f91613f55575b506001600160a01b03908116931683811015613f48579162ffffff84925b60018060a01b03600154169360405195613f1f87611eea565b6001600160a01b03908116875216602086015216604084015260020b6060830152608082015292565b9162ffffff849392613f06565b613f6e915060203d60201161121c5761120d8183611f50565b5f613ee8565b91613e8e565b9293835f52600560205260405f2060018060a01b0386165f5260205260ff60405f20541661421257613fab83614d21565b6001600160a01b03169384156141ff576001600160a01b0316938085146141e95760a0822090613fe48260018060a01b035f541661429a565b5050506001600160a01b0316156141d65782516020840180519095916001600160a01b03908116848114929091169084908a90846141cc575b84156141ad575b505050501561419e575f8681526002602081815260408084208b85528252808420885181546001600160a01b039182166001600160a01b03199182161783559a51600180840180548d87015160608f015160b81b62ffffff60b81b1662ffffff60a01b60a09290921b919091169486166001600160d01b03199092169190911793909317929092179091556080909a015191909401805491909416908a1617909255888352600581528183208a84528152818320805460ff19169097179096558782526004865280822089835286528082208054908490558883526003909652908190208054909616929092179094557f8b6c6e3acbbb079495759cfeb1dbf99774b60962f29ff5d8299cbf1dc49f9b1493909290869086907fac260005f5a1d1cb696ab1065059083a3769fa09f4b4699f1dafd670d071a92190614167615f76565b875195865260208601919091526001600160a01b038116604086015293606090a382519182526001600160a01b03166020820152a3565b6310f59d6f60e01b5f5260045ffd5b14925090826141c2575b50505f838982614024565b149050825f6141b7565b838214945061401d565b506357421ac560e11b5f5260045260245ffd5b84632ec7c58760e01b5f5260045260245260445ffd5b83633eb257a360e21b5f5260045260245ffd5b5050505f52600260205260405f209060018060a01b03165f5260205260a060405f206040519061424182611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b60608301526002600180851b039101541660808201522063ca5a804360e01b5f5260045260245ffd5b91906142a7602091615097565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215611b07575f92614305575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614331575b8161432160209383611f50565b81010312610ba55751905f6142dd565b3d9150614314565b908151811015612180570160200190565b81810292918115918404141715611ff257565b90915f916060602585511115614501578451602410156121805760448501518060f81c9160205b60048101808211611ff2576001600160f81b03196143a2828b614339565b51161515806144e2575b156144d8576143bb9089614339565b516020828a01015160f882901c91906001600160e01b03198881169116146143e7575050600501614384565b9550959650929050600983018093119182611ff257611fe0809160f31c16169080820460201490151715611ff25782108015906144b9575b15614482575050611fe0808551925b60f31c16169180830460201490151715611ff2578190039060405193601f19603f8487010116604052828552015f5b82811061446d5750505060019190565b8060208092840101518282880101520161445d565b611ff2576144909085614339565b51611fe0808260f81c9260f31c16169080820460201490151715611ff257611fe080919261442e565b505f90506001600160f81b03196144d08388614339565b51161561441f565b5050949550505050565b5060f384901c611fe01685156020878304141715611ff25782106143ac565b50509150505f90604051614516602082611f50565b5f815290565b949293905f945f91875f52600560205260405f2060018060a01b0385165f5260205260ff60405f2054161561486e57875f52600260205260405f2060018060a01b0385165f5260205260405f20936040519461457786611eea565b80546001600160a01b03908116875260018201548082166020808a019190915260a082811c62ffffff166040808c019190915260b89390931c600290810b60608c015290940154831660808a019081525f9d8e5260048252828e209584168e529490528b20549187209a54919a969116926145f28785614a9d565b6001600160801b03811692831561485657868a63ffffffff9c9d9e614626936001600160801b0387169e8f9216908a6150bd565b909b909a91976001600160a01b038082169084161096928d6001600160801b038e161561470457505050505085156146f6579061467f9392916146688b6154da565b926001600160801b038b1611156146ee57906158b2565b90670de0b6b3a76400008210156146e35790606462ffffff6146a4876146b09561429a565b92505050160490615912565b966122608810156146d85750806127106146ce6146d593998361434a565b0490611fe5565b94565b965086958692509050565b508796879350915050565b5088906158b2565b508a998a9650945050505050565b939b9c50949e509450975060019b9a9b96959194969860018060a01b0390511660018060a01b038a54160361484157508861473e9161429a565b989291968091501580614838575b1561481c57506001600160a01b03811615614807579161477a96959493916147749395615807565b996158b2565b9066b1a2bc2ec5000082116147f95762ffffff606491160461012c018061012c11611ff257655af3107a40006147b1920490612030565b60018101808211611ff25761271011156147ec575f199061271003016127108111611ff2576147e3612710918761434a565b0493925f929190565b505f945084939284929190565b505f95508594938593929150565b505050505050505093505f935f93925f929190565b94935050505061477a939250614831896154da565b91996158b2565b9c50869c61474c565b5f9c508c9b50998b9998975095505050505050565b505f9b508b9a508a998a995089975095505050505050565b50505050509150505f905f905f905f905f905f90565b919294935f90835f52600560205260405f2060018060a01b0382165f5260205260ff60405f20541615614a8957835f52600260205260405f2060018060a01b0382165f5260205260405f2093604051946148dd86611eea565b60018060a01b038154168652600181015460018060a01b038116602088015262ffffff8160a01c16604088015260b81c60020b6060870152600260018060a01b039101541660808601525f52600460205260405f209060018060a01b03165f5260205260405f20549260a081209260018060a01b035f5416916149608584614a9d565b956001600160801b038716918215614a735788614991928c9263ffffffff6001600160801b038816921690886150bd565b9a919890978b986001600160801b03819b9d1615614a5b57508b15614a4a57906149e8949392916149c18b6154da565b936001600160801b038b161115614a4257915b6001600160a01b03908116911610926158b2565b90670de0b6b3a7640000821015614a355790606462ffffff6146a486614a0d9561429a565b95612260871015614a2a57806127106146ce6146d593998361434a565b505f95508594859150565b505f965086958692509050565b5088916149d4565b505f9a508a998a9650945050505050565b5f9c508c9b909a508b99506001975095505050505050565b505f995089988998508897508795509350505050565b505f95508594859450849350839250829150565b90614aa790615097565b60038101809111611ff257604051631e2eaeaf60e01b8152600481019190915290602090829060249082906001600160a01b03165afa8015611b07575f90614af8575b6001600160801b0391501690565b506020813d602011614b29575b81614b1260209383611f50565b81010312610ba5576001600160801b039051614aea565b3d9150614b05565b9080158015614ca1575b614c91578215614c8c57905b600160801b614b5682846138b9565b10614b8357505015614b6b576401000276a490565b73fffd8963efd1fc6a506488495d951d5263988d2590565b600160401b614b9282846138b9565b10614c7457614ba091615a16565b6001600160c01b038111614c4e57614bba9060401b615e54565b905b15614c19576401000276a3811115614c0f5773fffd8963efd1fc6a506488495d951d5263988d26811015614bf6576001600160a01b031690565b5073fffd8963efd1fc6a506488495d951d5263988d2590565b506401000276a490565b73fffd8963efd1fc6a506488495d951d5263988d26811015614bf6576401000276a3811115614c0f576001600160a01b031690565b614c5790615e54565b8060201b908082046401000000001490151715611ff25790614bbc565b614c8190614c869261598c565b615e54565b90614bbc565b614b47565b505015614b6b576401000276a490565b508115614b3b565b916040519163a9059cbb60e01b5f5260018060a01b031660045260245260205f60448180865af19060015f5114821615614d09575b60405215614ce95750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b906001811516611c7057823b15153d15161690614cde565b61012c81108015614d52575b614d345750565b62904c3760e81b5f5260045261012c6024526202a30060445260645ffd5b506202a3008111614d2d565b613bfa613c08614d9d925f958695869860405193614d7b85611f19565b8452151560208401526040830152606082015260405192839160208301613a7c565b03925af15f9181614dd1575b50614db95750505f905f90600190565b80602080614dcc935183010191016120d0565b919092565b614de69192503d805f833e613d3f8183611f50565b905f614da9565b814710614e3c575f808093819382604051614e09602082611f50565b526001600160a01b03165af115614e1c57565b3d15614e2d576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b504763cf47918160e01b5f5260045260245260445ffd5b9291928115614eb3576127108314614eb35783821015614eac578382614e7892613964565b918015614ea5578061271003906127108211611ff257613a0494614e9f936117f392613964565b906138d7565b5050905090565b9250505090565b505050505f90565b6101808201358015158103610ba557614fa65761016082013515614ee857613a0491506028810490611fe5565b614f43916020906001600160a01b03614f0082611fd1565b166040614f0f60c08401611fd1565b815163c66d192b60e01b8152939091013560048401526001600160a01b031660248301529093849190829081906044820190565b03915afa8015611b07575f90614f72575b613a04925080821015614f6a57506028816146ce565b6028906146ce565b506020823d602011614f9e575b81614f8c60209383611f50565b81010312610ba557613a049151614f54565b3d9150614f7f565b905090565b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615614fe7575b50604052565b3d15903b151516909216915f614fe1565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f511484161561503a5750604052565b60018492941516615053573b15153d151616915f614fe1565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f511484161561503a5750604052565b6040516020810191825260066040820152604081526150b7606082611f50565b51902090565b9491929390945f9363ffffffff811691821561548557506080870151604051631873947560e01b815291926001600160a01b039091169190615102600483018a611e83565b60208260a481865afa5f9281615449575b50615416575b5050956040519661512b606089611f50565b6002885260208801976040368a3761514281612173565b9863ffffffff8516809a525f61515783612194565b52604051637cb7cbf960e11b815293849260c484019161517b906004860190611e83565b60c060a48501525180915260e4830191905f5b8181106153f7575050509181805f9403915afa90815f915f936152d8575b506151c15750505050505050505f905f905f90565b6151d76151cd82612194565b5160060b91612173565b5160060b900396667fffffffffffff198812667fffffffffffff891317611ff25760060b9660060b87156138c357667fffffffffffff1981145f19891416611ff25787810560020b975f821291826152c9575b50506152b4575b6001600160a01b0361524282612194565b5116906001600160a01b039061525790612173565b511690036001600160a01b038111611ff2576001600160a01b03169081615289575b5050615286929385615807565b92565b61528694506001600160801b03916152ac9160801b63ffffffff60801b166138b9565b16925f615279565b95627fffff198114611ff2575f190195615231565b0760060b151590505f8061522a565b915091503d805f833e6152eb8183611f50565b810190604081830312610ba55780516001600160401b038111610ba55781019082601f83011215610ba557815161532181612138565b9261532f6040519485611f50565b81845260208085019260051b82010190858211610ba557602001915b8183106153dd575050506020810151906001600160401b038211610ba557019180601f84011215610ba55782519061538282612138565b936153906040519586611f50565b82855260208086019360051b820101918211610ba557602001915b8183106153bd5750505090915f6151ac565b82516001600160a01b0381168103610ba5578152602092830192016153ab565b82518060060b8103610ba55781526020928301920161534b565b825163ffffffff1684528694506020938401939092019160010161518e565b63ffffffff82168015615437571061542f575b80615119565b91505f615429565b505050505050505050505f905f905f90565b9092506020813d60201161547d575b8161546560209383611f50565b81010312610ba557615476906120f9565b915f615113565b3d9150615458565b97959691505060a0919293502061549c818761429a565b509097916001600160a01b03161590506154cb576154c69392916154bf91614a9d565b9486615807565b929190565b505050509150505f905f905f90565b60020b908160ff1d82810118620d89e881116157f45763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166157d8575b600481166157bc575b600881166157a0575b60108116615784575b60208116615768575b6040811661574c575b60808116615730575b6101008116615714575b61020081166156f8575b61040081166156dc575b61080081166156c0575b61100081166156a4575b6120008116615688575b614000811661566c575b6180008116615650575b620100008116615634575b620200008116615619575b6204000081166155fe575b62080000166155e5575b5f126155dd575b0160201c90565b5f19046155d6565b6b048a170391f7dc42444e8fa290910260801c906155cf565b6d2216e584f5fa1ea926041bedfe9890920260801c916155c5565b916e5d6af8dedb81196699c329225ee6040260801c916155ba565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916155af565b916f31be135f97d08fd981231505542fcfa60260801c916155a4565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161559a565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91615590565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91615586565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161557c565b916ff3392b0822b70005940c7a398e4b70f30260801c91615572565b916ff987a7253ac413176f2b074cf7815e540260801c91615568565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161555e565b916ffe5dee046a99a2a811c461f1969c30530260801c91615554565b916fff2ea16466c96a3843ec78b326b528610260801c9161554b565b916fff973b41fa98c081472e6896dfb254c00260801c91615542565b916fffcb9843d60f6159c9db58835c9266440260801c91615539565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615530565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91615527565b916ffff97272373d413259a46990580e213a0260801c9161551e565b826345c3193d60e11b5f5260045260245ffd5b909291906001600160a01b039061581d906154da565b166001600160801b03811161586f57806158369161434a565b916001600160a01b039081169116101561585d576001600160801b03613a04921690615c2f565b6001600160801b03613a049216615bad565b8061587991615a99565b916001600160a01b03908116911610156158a0576001600160801b03613a04921690615b64565b6001600160801b03613a049216615ae2565b919291906001600160801b031680158015615901575b614eb3576158d591615c78565b90156158ee57613a04916001600160a01b031690615d8b565b613a04916001600160a01b031690615d08565b506001600160a01b038416156158c8565b9061226081101561597c5760648101809111611ff25760c88110615984575b61226081101561597c578115614fa65766b1a2bc2ec5000019821161597c5780612260036122608111611ff25766b1a2bc2ec500008301808411611ff257613a04936117f392615dd4565b505061226090565b5060c8615931565b9060c082901b905f19600160c01b840992828085109403938085039485841115610ba55714615a0f578190600160c01b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90608082901b905f19600160801b840992828085109403938085039485841115610ba55714615a0f578190600160801b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160401b1115610ba55714615ad957600160401b910990828211900360c01b910360401c1790565b50505060401c90565b90608082901b905f1983600160801b0992828085109403938085039485841115610ba55714615a0f578190600160801b0981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160801b1115610ba55714615ba457600160801b910990828211900360801b910360801c1790565b50505060801c90565b9060c082901b905f1983600160c01b0992828085109403938085039485841115610ba55714615a0f578190600160c01b0981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160c01b1115610ba55714615c6f57600160c01b910990828211900360401b910360c01c1790565b50505060c01c90565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610ba55714615a0f57670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b90606082901b905f19600160601b840992828085109403938085039485841115610ba55714615a0f578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160601b1115610ba55714615dcb57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f1981850993838086109503948086039586851115610ba55714615e4c579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6001811115613a0457806001600160801b821015615f65575b600482600160401b615f17941015615f58575b640100000000811015615f4b575b62010000811015615f3e575b610100811015615f32575b6010811015615f26575b1015615f1e575b60030260011c615ec681846138b9565b0160011c615ed481846138b9565b0160011c615ee281846138b9565b0160011c615ef081846138b9565b0160011c615efe81846138b9565b0160011c615f0c81846138b9565b0160011c80926138b9565b8111900390565b60011b615eb6565b811c9160021b91615eaf565b60081c91811b91615ea5565b60101c9160081b91615e9a565b60201c9160101b91615e8e565b60401c9160201b91615e80565b5050608081901c600160401b615e6d565b601436101580615f9d575b15615f99576013193601368111610ba5573560601c90565b3390565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614615f8156fea164736f6c634300081c000a",
	"deployedBytecode": "0x61026080604052600436101561001d575b50361561001b575f80fd5b005b5f905f3560e01c90816301ffc9a714611d15575080631337f9861461164f5780631a65893b146116325780631d831d5c146115ed5780631eabcd34146115a857806327e5141114611575578063293c499914611530578063345c42131461143e57806349e303831461126d57806353fd8e3114611062578063572b6c05146110045780637da0a87714610fbf578063826a5e7414610f1857806388bc2ef314610ed35780638cc3584614610dfc57806391dd7346146108155780639782ed71146107d05780639785f1ed146107a757806399f6d77f146106a7578063b7433b35146103c6578063b88a92b4146103a8578063bac6b2ad146102dc578063c22903b2146102c7578063db312fae146102aa578063dc4c90d314610283578063f434c9141461023e5763f672acac03610010573461023b57602036600319011261023b576004356001600160401b038111610239576101c060031982360301126102395761018b906004016133a2565b92939060409592955195869560a0870193875260208701526040860152606085015260a06080850152825180915260c08401602060c08360051b870101940192905b8282106101dc57505050500390f35b91936001919395506020610229819260bf198a8203018652608060608a51878060a01b03815116845285810151151586850152604081015160408501520151918160608201520190611ec6565b96019201920185949391926101cd565b505b80fd5b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b57546040516001600160a01b039091168152602090f35b503461023b578060031936011261023b5760206040516127108152f35b506102d96102d436611dc8565b612c6f565b80f35b503461023b57604036600319011261023b576004356001600160a01b038116908190036102395761030b611e42565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036103955782546001600160a01b038116610383576bffffffffffffffffffffffff60a01b1617825560018060a01b03166bffffffffffffffffffffffff60a01b600154161760015580f35b6001622c6feb60e11b03198452600484fd5b634758af1b60e01b835233600452602483fd5b503461023b578060031936011261023b5760206040516202a3008152f35b503461023b57606036600319011261023b576004356103e3611e42565b6040516331a9108f60e11b8152600481018390526044359291906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561069c57859161065e575b50610446615f76565b6001600160a01b0391821691168082141580610596575b61056b57505061046c83614d21565b6001600160a01b03811661eeee03610565575082915b81845260056020526040842060018060a01b0384165f5260205260ff60405f20541615610544578184526004602081815260408087206001600160a01b0387165f81815291845282822054878a529484528289209082529092529020829055927fac260005f5a1d1cb696ab1065059083a3769fa09f4b4699f1dafd670d071a921919061053e610510615f76565b6040805197885260208801949094526001600160a01b03908116938701939093529116939081906060820190565b0390a380f35b633d56755560e01b845260048290526001600160a01b038316602452604484fd5b91610482565b908360849260405192631326f75560e11b8452600484015260248301526044820152601c6064820152fd5b50604051631a45b42760e11b8152600481018290526024810183905260448101859052601c606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610653578791610615575b501561045d565b90506020813d60201161064b575b8161063060209383611f50565b810103126106475761064190611f71565b5f61060e565b8680fd5b3d9150610623565b6040513d89823e3d90fd5b90506020813d602011610694575b8161067960209383611f50565b810103126106905761068a9061203d565b5f61043d565b8480fd5b3d915061066c565b6040513d87823e3d90fd5b503461023b5761016036600319011261023b5761012036602319011261023b57604051906106d482611f34565b60243565ffffffffffff8116810361023957825260443565ffffffffffff8116810361023957602083015260643565ffffffffffff8116810361023957604083015260843565ffffffffffff8116810361023957606083015260a43563ffffffff8116810361023957608083015260c4356001600160701b03811681036102395760a083015260e43563ffffffff811681036102395760c083015261010435916001600160a01b03831683036102395760209260e08201526101006101243591015261079e611e58565b50604051908152f35b503461023b578060031936011261023b576001546040516001600160a01b039091168152602090f35b503461023b57604036600319011261023b5760406107ec611e42565b9160043581526004602052209060018060a01b03165f52602052602060405f2054604051908152f35b503461023b57602036600319011261023b57600435906001600160401b03821161023b573660238301121561023b5781600401356001600160401b0381116102395782019036602483011161023b5780546001600160a01b03169133839003610de957610100848203126102395760a060246040519261089484611f19565b869003016023190112610239576040516108ad81611eea565b6108b960248601611e6f565b81526108c760448601611e6f565b6020820152606485013562ffffff81168103610ba55760408201526108ee60848601611e1e565b60608201526108ff60a48601611e6f565b6080820152815261091260c48501611fb0565b93610940602083019580875260e4830135906101046040860194838652013590816060870152151591614b31565b93825186511515925195600160ff1b8714610dd55760405193606085018581106001600160401b03821117610dc15792610a006109cf938993602098979660405287528787019a84038b52604087019060018060a01b031681526040519084898301528882526109b1604083611f50565b604051633cf3645360e21b81529b8c98899788966004880190611e83565b51151560a48601525160c4850152516001600160a01b031660e4840152610120610104840152610124830190611ec6565b03925af1928315610db6578293610d82575b508260801d935115155f14610d4a575180516020909101516001600160a01b03918216949116906001600160801b03908190610a4d90612c4f565b169316935b6001600160a01b031680610c7e57508154604051630476982d60e21b8152906020908290600490829088906001600160a01b03165af18015610c7357610c44575b505b6001600160a01b031680158015610be15747945b83546001600160a01b031690813b15610690578491606483926040519485938492630b0d9c0960e01b845289600485015230602485015260448401525af18015610bd657908491610bbd575b505015610b40575050610b0b610b3c9247611fe5565b604051916020830152604082015260408152610b28606082611f50565b604051918291602083526020830190611ec6565b0390f35b6020602491604051928380926370a0823160e01b82523060048301525afa918215610bb15791610b79575b50610b3c92610b0b91611fe5565b90506020813d602011610ba9575b81610b9460209383611f50565b81010312610ba55751610b3c610b6b565b5f80fd5b3d9150610b87565b604051903d90823e3d90fd5b81610bc791611f50565b610bd257825f610af5565b8280fd5b6040513d86823e3d90fd5b6040516370a0823160e01b8152306004820152602081602481865afa908115610bd6578491610c12575b5094610aa9565b90506020813d602011610c3c575b81610c2d60209383611f50565b81010312610ba557515f610c0b565b3d9150610c20565b610c659060203d602011610c6c575b610c5d8183611f50565b810190612006565b505f610a93565b503d610c53565b6040513d85823e3d90fd5b82546001600160a01b0316803b15610d4657838091602460405180948193632961046560e21b83528760048401525af18015610bd65785918591610d2d575b50508354610cd6926001600160a01b0390911690614ca9565b8154604051630476982d60e21b8152906020908290600490829087906001600160a01b03165af18015610c7357610d0e575b50610a95565b610d269060203d602011610c6c57610c5d8183611f50565b505f610d08565b81925090610d3a91611f50565b610bd25783835f610cbd565b8380fd5b51602081015190516001600160a01b0391821694939116906001600160801b03908190610d7990600f0b612c4f565b16931693610a52565b9092506020813d602011610dae575b81610d9e60209383611f50565b810103126102395751915f610a12565b3d9150610d91565b6040513d84823e3d90fd5b634e487b7160e01b88526041600452602488fd5b634e487b7160e01b86526011600452602486fd5b63cb25844560e01b825233600452602482fd5b503461023b57602036600319011261023b576004356001600160401b03811161023957610180600319823603011261023957610e3a906004016121a4565b6040519283926040840190845260406020850152825180915260608401602060608360051b870101940192905b828210610e7657505050500390f35b91936001919395506020610ec38192605f198a8203018652608060608a51878060a01b03815116845285810151151586850152604081015160408501520151918160608201520190611ec6565b9601920192018594939192610e67565b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57604036600319011261023b576040610f34611e42565b91610f3d612070565b5060043581526002602052209060018060a01b03165f5260205260a060405f2060405190610f6a82611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b60608301526002600180851b03910154166080820152610fbd6040518092611e83565bf35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57602036600319011261023b576004356001600160a01b03811690819003610239576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169091148152602090f35b503461023b5761010036600319011261023b5760043560a03660231901126102395760e4356001600160a01b038116808203610d46576040516331a9108f60e11b815260048101849052906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561069c5784928691611229575b5061eeee926110fc91613d5f565b03611223575081905b60405163ea78803f60e01b815260048101829052916020836024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315610bd65784936111f2575b506040519161116883611eea565b6024356001600160a01b03811681036111ee5783526044356001600160a01b03811681036111ee57602084015260643562ffffff811681036111ee5760408401526084358060020b81036111ee57606084015260a435936001600160a01b03851685036111ee5760808401949094526102d9936001600160a01b03169260c43591613f7a565b8580fd5b61121591935060203d60201161121c575b61120d8183611f50565b810190612051565b915f61115a565b503d611203565b90611105565b9250506020823d602011611265575b8161124560209383611f50565b81010312610690576110fc8461125d61eeee9461203d565b9150926110ee565b3d9150611238565b503461023b5760c036600319011261023b576004359061128b611dfc565b91611294611e0e565b61129c611e2c565b9060a4359460018060a01b038616809603610690576040516331a9108f60e11b8152600481018590526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156114335790859187916113e9575b5061131f9493929161131991613d5f565b84613e6b565b92909184602060018060a01b0382541660c46040518094819363313b65df60e11b835261134f6004840189611e83565b8c60a48401525af16113b0575b50845460a08220611375916001600160a01b031661429a565b5050506001600160a01b03169580870361139957506102d994955060643591613f7a565b6302c5a6e160e11b86526004879052602452604485fd5b6020813d6020116113e1575b816113c960209383611f50565b810103126111ee57518060020b81031561135c578580fd5b3d91506113bc565b9150506020813d60201161142b575b8161140560209383611f50565b810103126111ee57906113198561142061131f96959461203d565b915091929394611308565b3d91506113f8565b6040513d88823e3d90fd5b503461023b5760a036600319011261023b5760043561145b611dfc565b90611464611e0e565b61146c611e2c565b6040516331a9108f60e11b8152600481018490529091906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156114335786916114e3575b50906102d994611319856114d79594613d5f565b92909160643591613f7a565b929190506020833d602011611528575b8161150060209383611f50565b810103126111ee576102d9946113198561151c6114d79661203d565b939495505050946114c3565b3d91506114f3565b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b57602036600319011261023b57602090600435815260038252604060018060a01b0391205416604051908152f35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023b578060031936011261023b57602060405161012c8152f35b5061165936611dc8565b604051636e49181f60e01b8152602082810135600483018190523360248401529190816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115611b07575f91611cdb575b5015611cc857816116cf6101c080940182611f7e565b9080949181010312610ba5576116e483611fb0565b926040810135936116f760608301611fb0565b9060808301359260018060a01b03841696878503610ba55760a08201359360c08301359360e08401359261172e6101008601611e1e565b5061173c6101208601611fbd565b5080938781151580611cba575b611c8b575b50505060e088019061eeee6001600160a01b0361176a84611fd1565b161497889761178061177b85611fd1565b613a07565b99611c79575b88159283611bfd575b916117a0916117b49594938d613b13565b9390996117af61177b85611fd1565b611fe5565b5f98816118c2575b5050505081156118b9575b50806118a7575b61188757506117f9926117f38695936117f39360206101608d9b9a0135910135613964565b90612030565b9182611803578380f35b6020936118156101a060c49401611fd1565b9560405196879586946363fdc96f60e11b86526004860152602485015260018060a01b0316604484015260a060648401528160a4840152600160848401525af18015610db657611868575b818180808380f35b6118809060203d602011610c6c57610c5d8183611f50565b505f611860565b886044916118958688612030565b63e2d708a960e01b8352600452602452fd5b50806118b38587612030565b106117ce565b9050155f6117c7565b8c939499505f9e9d9e50825f93611b19575b8115611b1257825b6118e861177b88611fd1565b956118f288611fd1565b91602095604051936119048886611f50565b5f8552333b15610ba5575f9361196260405196879586948594639e6eec0560e01b8652600486015260018060a01b03166024850152604484015286606484015260c060848401528660c484015260e060a484015260e4830190611ec6565b0391335af18015611b0757611aef575b509d9e9d8f90611a8a575b50156119fb57505061199461177b61199a93611fd1565b90611fe5565b945b887faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e5166119ef6119d1886101608d01358b613964565b604080519a8b5260208b0182905233908b0152989081906060820190565b0390a25f8080806117bc565b6024939192509081906001600160a01b0390611a1690611fd1565b16604051948580926370a0823160e01b82523360048301525afa908115611a7f578d91611a4f575b50611a499250611fe5565b9461199c565b905082813d8311611a78575b611a658183611f50565b81010312610ba557611a4991515f611a3e565b503d611a5b565b6040513d8f823e3d90fd5b6001600160a01b03611a9b87611fd1565b16611aa7823383614fab565b15611ab3575b5061197d565b9050611abf3382614ff8565b15611adc578f611ad090338361505c565b15611adc578f90611aad565b8f602491635274afe760e01b8252600452fd5b909f9e50611afe905f90611f50565b5f9d9e5f611972565b6040513d5f823e3d90fd5b5f926118dc565b60249450925060206001600160a01b03611b3287611fd1565b16604051958680926370a0823160e01b82523360048301525afa8015611b07578d945f91611bc8575b50926001600160a01b03611b6e87611fd1565b16611b7a843383614fab565b15611b86575b506118d4565b909192939450611b963382614ff8565b15611bb657611ba684338361505c565b15611bb657908d94939291611b80565b635274afe760e01b5f5260045260245ffd5b9450506020843d602011611bf5575b81611be460209383611f50565b81010312610ba5578c93515f611b5b565b3d9150611bd7565b6001600160a01b03611c0e86611fd1565b168c610140604051916323b872dd60e01b5f523360045230602452013560445260205f60648180865af19060015f5114821615611c58575b6040525f60605215611bb6575061178f565b906001811516611c7057823b15153d15161690611c46565b503d5f823e3d90fd5b98611c85903490611fe5565b98611786565b90919750611ca0826101408c01358093613964565b978461174e57611cb1939550613964565b915f808061174e565b50816101408c013510611749565b634758af1b60e01b5f523360045260245ffd5b90506020813d602011611d0d575b81611cf660209383611f50565b81010312610ba557611d0790611f71565b5f6116b9565b3d9150611ce9565b34610ba5576020366003190112610ba5576004359063ffffffff60e01b8216809203610ba55760209163e347239560e01b8114908115611db7575b8115611da6575b8115611d95575b8115611d84575b8115611d73575b5015158152f35b6301ffc9a760e01b14905083611d6c565b633d0d324560e21b81149150611d65565b6316f0f2dd60e01b81149150611d5e565b63611481d960e11b81149150611d57565b63099bfcc360e11b81149150611d50565b6020600319820112610ba557600435906001600160401b038211610ba557610200908290036003190112610ba55760040190565b6024359062ffffff82168203610ba557565b604435908160020b8203610ba557565b35908160020b8203610ba557565b608435906001600160a01b0382168203610ba557565b602435906001600160a01b0382168203610ba557565b61014435906001600160a01b0382168203610ba557565b35906001600160a01b0382168203610ba557565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a081019081106001600160401b03821117611f0557604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b03821117611f0557604052565b61012081019081106001600160401b03821117611f0557604052565b90601f801991011681019081106001600160401b03821117611f0557604052565b51908115158203610ba557565b903590601e1981360301821215610ba557018035906001600160401b038211610ba557602001918136038313610ba557565b35908115158203610ba557565b35906001600160801b0382168203610ba557565b356001600160a01b0381168103610ba55790565b91908203918211611ff257565b634e487b7160e01b5f52601160045260245ffd5b90816020910312610ba5575190565b6001600160401b038111611f0557601f01601f191660200190565b91908201809211611ff257565b51906001600160a01b0382168203610ba557565b90816020910312610ba557516001600160a01b0381168103610ba55790565b6040519061207d82611eea565b5f6080838281528260208201528260408201528260608201520152565b9291926120a682612015565b916120b46040519384611f50565b829481845281830111610ba5578281602093845f960137010152565b9190826040910312610ba5576020825192015190565b519065ffffffffffff82168203610ba557565b519063ffffffff82168203610ba557565b519061ffff82168203610ba557565b3563ffffffff81168103610ba55790565b3560ff81168103610ba55790565b6001600160401b038111611f055760051b60200190565b6040519061215c82611f19565b606080835f81525f60208201525f60408201520152565b8051156121805760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156121805760400190565b5f6102408190526101408190526040820192610120830135926060906122016121db6121d4610160840184611f7e565b369161209a565b7f000000000000000000000000000000000000000000000000000000000000000061435d565b90612c27575b5060a08101358411612c0c578315612c00575b604051632eec7b5560e11b815260c08201356004820152956020876024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa968715611b07575f97612bdf575b506040516320c94b1360e11b815260c08301356004820152610380816024816001600160a01b038c165afa908115611b07575f9161296f575b50608083016122b981612119565b63ffffffff808061010086015160241c16169116145f146128a157505060ff6122e384840161212a565b16604d8111611ff257600a0a5b6122fb818888613964565b60c08401355f908152600360205260409020546001600160a01b039081166101e05290929061eeee9061232d83611fd1565b160361289257505f955b5f60e08190526101a08190526001610220526101405190938493911561285d5760c08601355f52600260205260405f2060018060a01b038a165f5260205260a060405f206040519061238882611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b8a8301526002600180851b03910154166080820152209560c08101355f52600560205260405f2060018060a01b038b165f5260205260ff60405f20541680612835575b8061022052612807575b5f60c081815282013581526005602090815260408083206001600160a01b038e16845290915281205490989060ff161561274c57505f6102005260a08101358403612735575f610200525b61022051156101c0526101c051610180526101c051612728575b6101c0518061271c575b612702578b90610180516101605261018051156126f2575b6101a051806126e7575b806126db575b6126d1575b61024051612644575b5050604061012081905280516101008190526124c69190611f50565b600161010051525f5b61012051601f1901811061262a57506001600160801b0395969798999a610100519a5f60a052610160515f14612621575f60a0525b610120515160805260018060a01b03166101e051106020608051015261020051610120516080510152610240516060608051015261014051151560808051015260018060a01b031660a0608051015260c0608051015260e06080510152610100608051015260020b61012060805101521661014060805101526101606080510152610180608051015260c0516101a0608051015260e0516101c060805101526101a05115156101e060805101526101e0608051526125c6610200608051611f50565b61012051516125d481611f19565b3081526101605115908115602082015260a05161012051820152608051606082015261260261010051612173565b5261260f61010051612173565b5061261657565b610100515f93509150565b8460a052612504565b60209061263561214f565b828261010051010152016124cf565b604080516380d3fe3560e01b815260c092909201356004830152610240516024830152600160448301529298509190829060649082906001600160a01b03165afa8015611b07575f915f916126a0575b5060c052958a5f6124aa565b90506126c4915060403d6040116126ca575b6126bc8183611f50565b8101906120d0565b5f612694565b503d6126b2565b82610240526124a1565b5061024051151561249c565b506101405115612496565b610240518310156101605261248c565b5063e2d708a960e01b5f526004526102405160245260445ffd5b50610240518210612474565b610140516101c05261246a565b6127438460a0830135611fe5565b61020052612450565b9a9b97509550969750505050506102405161279a575b5050610140518061278e575b6127755750565b63e2d708a960e01b5f526004526102405160245260445ffd5b5061024051811061276e565b604080516380d3fe3560e01b815260c092909201356004830152610240516024830152600160448301529091829060649082906001600160a01b03165afa8015611b07576127e9575b80612762565b6128019060403d6040116126ca576126bc8183611f50565b506127e3565b9350935061281f886101e051818560c0880135614884565b91929894979350506101a052959460e052612405565b505f546001600160801b03906128559089906001600160a01b0316614a9d565b1615156123fb565b9350939150612876876101e051818460c087013561451c565b6101a0999592999894979398529796956102405260e052612405565b61289b90611fd1565b95612337565b63ffffffff6101006128b460ff93612119565b93015160241c1663ffffffff6128cb87870161212a565b604051631df139fd60e11b815260c088013560048201529482166024860152911660448401521660648201526020816084817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f9161293d575b506122f0565b90506020813d602011612967575b8161295860209383611f50565b81010312610ba557515f612937565b3d915061294b565b8091506103803d8111612bd8575b6129878183611f50565b810103906103808212610ba5576101208212610ba557604051916129aa83611f34565b6129b3826120e6565b83526129c1602083016120e6565b60208401526129d2604083016120e6565b60408401526129e28683016120e6565b868401526129f2608083016120f9565b608084015260a08201516001600160701b0381168103610ba55760a0840152612a1d60c083016120f9565b60c084015260e0820151906001600160a01b0382168203610ba5576102609160e085015261010083015161010085015261011f190112610ba557604051906102608201908282106001600160401b03831117611f0557610360612bcf9161024093604052612a8e610120820161210a565b8552612a9d610140820161210a565b6020860152612aaf61016082016120f9565b6040860152612ac16101808201611f71565b89860152612ad26101a08201611f71565b6080860152612ae46101c08201611f71565b60a0860152612af66101e08201611f71565b60c0860152612b086102008201611f71565b60e0860152612b1a6102208201611f71565b610100860152612b2b848201611f71565b610120860152612b3e6102608201611f71565b610140860152612b516102808201611f71565b610160860152612b646102a08201611f71565b610180860152612b776102c08201611f71565b6101a0860152612b8a6102e08201611f71565b6101c0860152612b9d6103008201611f71565b6101e0860152612bb06103208201611f71565b610200860152612bc3610340820161203d565b6102208601520161210a565b9101525f6122ab565b503d61297d565b612bf991975060203d60201161121c5761120d8183611f50565b955f612272565b60a0810135935061221a565b60a0908463cc8704dd60e01b5f52600452013560245260445ffd5b612c3c919450602080825183010191016120d0565b610240819052151561014052925f612207565b600f0b6f7fffffffffffffffffffffffffffffff198114611ff2575f0390565b604051636e49181f60e01b815260208281013560048301819052336024840152916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169181604481855afa908115611b07575f91613368575b5015613355576080830161eeee6001600160a01b03612cee83611fd1565b1603613346575f935b835f52600260205260405f2060018060a01b0386165f5260205260405f209160405192612d2384611eea565b60018060a01b038154168452600181015460018060a01b038116602086015262ffffff8160a01c16604086015260b81c60020b6060850152600260018060a01b03910154166080840152845f52600360205260018060a01b0360405f205416935f9160608401359586925f936101c08701612d9e8189611f7e565b90506132af575b508089116132a6575b50602060249160405192838092632eec7b5560e11b82528d60048301525afa908115611b07575f91613287575b506040516370a0823160e01b815230600482015290602082602481865afa918215611b07575f92613253575b5060208960c48c5f60405195869485936363fdc96f60e11b85526004850152602484015230604484015260a060648401528160a484015281608484015260018060a01b03165af18015611b0757613224575b506040516370a0823160e01b8152306004820152602081602481865afa908115611b07575f916131f0575b50612ea691612e9291611fe5565b996001600160a01b03168210858b89614d5e565b9a91909a61315e578480613155575b8061314c575b613135578a969594939291908082111561312d57612ed891611fe5565b80613113575b5061eeee90506001600160a01b03612ef583611fd1565b1603612f5c5750505091612f3960a092612f346101a07fbda038b4536720f0edb8da72fb3f9779994198517ff2acfe51d419e07feb0379979601611fd1565b614ded565b20604080519283526020830195909552339482019490945280606081015b0390a3565b919350916101a06001600160a01b03612f7484611fd1565b169101916020612f8384611fd1565b6040516370a0823160e01b81526001600160a01b03909116600482015292839060249082905afa918215611b07575f926130dd575b5060209061300790612fee8b6001600160a01b03612fd584611fd1565b166001600160a01b03612fe789611fd1565b1690614ca9565b6001600160a01b039061300090611fd1565b1693611fd1565b6040516370a0823160e01b81526001600160a01b03909116600482015292839060249082905afa8015611b07575f906130a9575b6130459250611fe5565b90806130a0575b80613097575b6130825750509060a07fbda038b4536720f0edb8da72fb3f9779994198517ff2acfe51d419e07feb037992612f39565b63e2d708a960e01b5f5260045260245260445ffd5b50818110613052565b5081151561304c565b506020823d6020116130d5575b816130c360209383611f50565b81010312610ba557613045915161303b565b3d91506130b6565b9091506020813d60201161310b575b816130f960209383611f50565b81010312610ba5575190613007612fb8565b3d91506130ec565b6131269161312087611fd1565b90614ca9565b5f80612ede565b50505f612ed8565b858b63e2d708a960e01b5f5260045260245260445ffd5b50858b10612ebb565b50851515612eb5565b5098509450508091929450906131e7575b6131d15750816131a785612f57936131207f8df6e3a86b047621038c6b98aa897b8dd0a6ce91b348704f248b7bbf0e32b21496611fd1565b6001600160a01b03906131b990611fd1565b60408051968752336020880152911694918291820190565b63e2d708a960e01b5f525f60045260245260445ffd5b5080151561316f565b90506020813d60201161321c575b8161320b60209383611f50565b81010312610ba55751612ea6612e84565b3d91506131fe565b6020813d60201161324b575b8161323d60209383611f50565b81010312610ba55751612e59565b3d9150613230565b9091506020813d60201161327f575b8161326f60209383611f50565b81010312610ba55751905f612e07565b3d9150613262565b6132a0915060203d60201161121c5761120d8183611f50565b5f612ddb565b97506020612dae565b9850945092506101006132c28887611f7e565b905010155f1461331b576132d96101009786611f7e565b9080989181010312610ba5576132f160608801611e1e565b506132fe60808801611fbd565b5061330b60e08801611fb0565b9260208801359735945b5f612da5565b613329604094939786611f7e565b9080959181010312610ba557602084359401359684151593613315565b61334f81611fd1565b93612cf7565b63ccdd427f60e01b5f523360045260245ffd5b90506020813d60201161339a575b8161338360209383611f50565b81010312610ba55761339490611f71565b5f612cd0565b3d9150613376565b61eeee6001600160a01b036133b960c08401611fd1565b16036138a7575f905b6040818101355f8181526003602052918220546001600160a01b0316949192838061341d6133f76121d46101a0860186611f7e565b7f000000000000000000000000000000000000000000000000000000000000000061435d565b90613879575b508015613850575b8015613848575b801561383c575b6137de576101208201359260808301359660a08401359661016085013593613463858a8c8a614e53565b955f905f945f9d600190855f146137b7575050865f52600260205260405f209060018060a01b03165f5260205260a060405f20604051906134a382611eea565b8054600180851b5f19019182168452820154808216602085015262ffffff81861c16604085015260b81c600290810b606085015290910154166080820152205f549091906001600160801b03906135049084906001600160a01b0316614a9d565b161515905b613513818b614ebb565b998215806137b0575b806137a7575b6137905782613786575b600198838061377c575b613641575b50505015958615613627575b50604094855198613558878b611f50565b60018a52601f1987015f5b81811061360f5750509d6001600160801b03918e9f9d9e9c9d8b9d89519860208a015289890152606088015260020b60808701521660a085015260c084015260e0830152151561010082015261010081526135c061012082611f50565b5f8251926135cd84611f19565b308452841515602085015283015260608201526135e984612173565b526135f383612173565b50613606575050506127109392915f9190565b95949391925090565b808c6020809361361d61214f565b9201015201613563565b90955080613637575b945f613547565b5086831115613630565b929890916040938451906136558683611f50565b600182526020820190601f19870136833761367260c08501611fd1565b61367b84612173565b6001600160a01b03918216905261369185611fd1565b16936136ac6101006136a560e0840161212a565b9201612119565b91885196879563b5c104f360e01b875260848701926004880152608060248801525180925260a4860194915f5b81811061375b57505050506020949263ffffffff859360ff859416604485015216606483015203915afa92831561375257505f9261371e575b501115955f808061353b565b9091506020813d60201161374a575b8161373a60209383611f50565b81010312610ba55751905f613712565b3d915061372d565b513d5f823e3d90fd5b83516001600160a01b031687528997506020968701969093019282016136d9565b508b881115613536565b861515925061352c565b868b63e2d708a960e01b5f5260045260245260445ffd5b50868b10613522565b508561351c565b91935095506137cd939d50829194508c87614884565b50909d919592949193929091613509565b929450945050613808575b506101608201359160808101359161012060a083013592013590606090565b61382f8361382a61016082013560a08301356080840135610120850135614e53565b614ebb565b81811061308257506137e9565b50608082013515613439565b508615613432565b50825f52600560205260405f2060018060a01b0387165f5260205260ff60405f2054161561342b565b809650604092508091505181010312610ba55761389d604060208601519501611f71565b841515905f613423565b6138b360c08201611fd1565b906133c2565b81156138c3570490565b634e487b7160e01b5f52601260045260245ffd5b91905f905f1981850990808502928380841093039280840393146139575761271083101561393b5750612710907fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9194950990828211900360fc1b910360041c170290565b60649186630c740aef60e31b8352600452602452612710604452fd5b5050506127109192500490565b90915f1983830992808302928380861095039480860395146139f757828510156139df5790829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f5260045260245260445260645ffd5b505090613a0492506138b9565b90565b6001600160a01b031661eeee8103613a1e57504790565b6020602491604051928380926370a0823160e01b82523060048301525afa908115611b07575f91613a4d575090565b90506020813d602011613a74575b81613a6860209383611f50565b81010312610ba5575190565b3d9150613a5b565b91909160e06060610100830194613a94848251611e83565b6020810151151560a0850152604081015160c08501520151910152565b602081830312610ba5578051906001600160401b038211610ba5570181601f82011215610ba557805190613ae482612015565b92613af26040519485611f50565b82845260208383010111610ba557815f9260208093018386015e8301015290565b9091925f925f80613c3b613bfa613c0860e08801956101408901359661eeee60018060a01b03613b4283611fd1565b16148614613d4e5750602085995b0135988986526002602052604086209060018060a01b03168652602052604085209a6040519b613b7f8d611eea565b60018060a01b038154168d528c6060600183015460018060a01b038116602084015262ffffff8160a01c16604084015260b81c60020b910152600260018060a01b039101541660808d015260405191613bd783611f19565b8c8352156020830152876040830152606082015260405192839160208301613a7c565b03601f198101835282611f50565b82546040516348c8949160e01b8152602060048201529485936001600160a01b0390921692849283916024830190611ec6565b03925af15f9181613d2a575b50613c59575050505050505f90600190565b7f2afb56853a8b76a0868e64c0001eedd84d9a7f5bc7fb788aba6180e422ba6ec5613cbc60a0613c97846020808a979d9b9c9d5183010191016120d0565b91909a2060408051968752602087018390523390870152909950939081906060820190565b0390a384613cc8575050565b6001600160a01b031690813b15610ba5575f9160a48392604051948593849263516a997360e11b84523060048501526024840152896044840152608060648401528160848401525af18015611b0757613d1e5750565b5f613d2891611f50565b565b613d479192503d805f833e613d3f8183611f50565b810190613ab1565b905f613c47565b613d59602091611fd1565b99613b50565b90613d68615f76565b6001600160a01b0392831692168083141580613db2575b613d8857505050565b6084935060405192631326f75560e11b8452600484015260248301526044820152601d6064820152fd5b50604051631a45b42760e11b8152600481018290526024810184905260448101839052601d606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f91613e31575b5015613d7f565b90506020813d602011613e63575b81613e4c60209383611f50565b81010312610ba557613e5d90611f71565b5f613e2a565b3d9150613e3f565b92919091613e77612070565b506001600160a01b03811661eeee03613f7457505f915b60405163ea78803f60e01b8152600481019490945291928392906020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611b07575f91613f55575b506001600160a01b03908116931683811015613f48579162ffffff84925b60018060a01b03600154169360405195613f1f87611eea565b6001600160a01b03908116875216602086015216604084015260020b6060830152608082015292565b9162ffffff849392613f06565b613f6e915060203d60201161121c5761120d8183611f50565b5f613ee8565b91613e8e565b9293835f52600560205260405f2060018060a01b0386165f5260205260ff60405f20541661421257613fab83614d21565b6001600160a01b03169384156141ff576001600160a01b0316938085146141e95760a0822090613fe48260018060a01b035f541661429a565b5050506001600160a01b0316156141d65782516020840180519095916001600160a01b03908116848114929091169084908a90846141cc575b84156141ad575b505050501561419e575f8681526002602081815260408084208b85528252808420885181546001600160a01b039182166001600160a01b03199182161783559a51600180840180548d87015160608f015160b81b62ffffff60b81b1662ffffff60a01b60a09290921b919091169486166001600160d01b03199092169190911793909317929092179091556080909a015191909401805491909416908a1617909255888352600581528183208a84528152818320805460ff19169097179096558782526004865280822089835286528082208054908490558883526003909652908190208054909616929092179094557f8b6c6e3acbbb079495759cfeb1dbf99774b60962f29ff5d8299cbf1dc49f9b1493909290869086907fac260005f5a1d1cb696ab1065059083a3769fa09f4b4699f1dafd670d071a92190614167615f76565b875195865260208601919091526001600160a01b038116604086015293606090a382519182526001600160a01b03166020820152a3565b6310f59d6f60e01b5f5260045ffd5b14925090826141c2575b50505f838982614024565b149050825f6141b7565b838214945061401d565b506357421ac560e11b5f5260045260245ffd5b84632ec7c58760e01b5f5260045260245260445ffd5b83633eb257a360e21b5f5260045260245ffd5b5050505f52600260205260405f209060018060a01b03165f5260205260a060405f206040519061424182611eea565b600180841b0381541682526001810154600180851b038116602084015262ffffff81851c16604084015260b81c60020b60608301526002600180851b039101541660808201522063ca5a804360e01b5f5260045260245ffd5b91906142a7602091615097565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215611b07575f92614305575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614331575b8161432160209383611f50565b81010312610ba55751905f6142dd565b3d9150614314565b908151811015612180570160200190565b81810292918115918404141715611ff257565b90915f916060602585511115614501578451602410156121805760448501518060f81c9160205b60048101808211611ff2576001600160f81b03196143a2828b614339565b51161515806144e2575b156144d8576143bb9089614339565b516020828a01015160f882901c91906001600160e01b03198881169116146143e7575050600501614384565b9550959650929050600983018093119182611ff257611fe0809160f31c16169080820460201490151715611ff25782108015906144b9575b15614482575050611fe0808551925b60f31c16169180830460201490151715611ff2578190039060405193601f19603f8487010116604052828552015f5b82811061446d5750505060019190565b8060208092840101518282880101520161445d565b611ff2576144909085614339565b51611fe0808260f81c9260f31c16169080820460201490151715611ff257611fe080919261442e565b505f90506001600160f81b03196144d08388614339565b51161561441f565b5050949550505050565b5060f384901c611fe01685156020878304141715611ff25782106143ac565b50509150505f90604051614516602082611f50565b5f815290565b949293905f945f91875f52600560205260405f2060018060a01b0385165f5260205260ff60405f2054161561486e57875f52600260205260405f2060018060a01b0385165f5260205260405f20936040519461457786611eea565b80546001600160a01b03908116875260018201548082166020808a019190915260a082811c62ffffff166040808c019190915260b89390931c600290810b60608c015290940154831660808a019081525f9d8e5260048252828e209584168e529490528b20549187209a54919a969116926145f28785614a9d565b6001600160801b03811692831561485657868a63ffffffff9c9d9e614626936001600160801b0387169e8f9216908a6150bd565b909b909a91976001600160a01b038082169084161096928d6001600160801b038e161561470457505050505085156146f6579061467f9392916146688b6154da565b926001600160801b038b1611156146ee57906158b2565b90670de0b6b3a76400008210156146e35790606462ffffff6146a4876146b09561429a565b92505050160490615912565b966122608810156146d85750806127106146ce6146d593998361434a565b0490611fe5565b94565b965086958692509050565b508796879350915050565b5088906158b2565b508a998a9650945050505050565b939b9c50949e509450975060019b9a9b96959194969860018060a01b0390511660018060a01b038a54160361484157508861473e9161429a565b989291968091501580614838575b1561481c57506001600160a01b03811615614807579161477a96959493916147749395615807565b996158b2565b9066b1a2bc2ec5000082116147f95762ffffff606491160461012c018061012c11611ff257655af3107a40006147b1920490612030565b60018101808211611ff25761271011156147ec575f199061271003016127108111611ff2576147e3612710918761434a565b0493925f929190565b505f945084939284929190565b505f95508594938593929150565b505050505050505093505f935f93925f929190565b94935050505061477a939250614831896154da565b91996158b2565b9c50869c61474c565b5f9c508c9b50998b9998975095505050505050565b505f9b508b9a508a998a995089975095505050505050565b50505050509150505f905f905f905f905f905f90565b919294935f90835f52600560205260405f2060018060a01b0382165f5260205260ff60405f20541615614a8957835f52600260205260405f2060018060a01b0382165f5260205260405f2093604051946148dd86611eea565b60018060a01b038154168652600181015460018060a01b038116602088015262ffffff8160a01c16604088015260b81c60020b6060870152600260018060a01b039101541660808601525f52600460205260405f209060018060a01b03165f5260205260405f20549260a081209260018060a01b035f5416916149608584614a9d565b956001600160801b038716918215614a735788614991928c9263ffffffff6001600160801b038816921690886150bd565b9a919890978b986001600160801b03819b9d1615614a5b57508b15614a4a57906149e8949392916149c18b6154da565b936001600160801b038b161115614a4257915b6001600160a01b03908116911610926158b2565b90670de0b6b3a7640000821015614a355790606462ffffff6146a486614a0d9561429a565b95612260871015614a2a57806127106146ce6146d593998361434a565b505f95508594859150565b505f965086958692509050565b5088916149d4565b505f9a508a998a9650945050505050565b5f9c508c9b909a508b99506001975095505050505050565b505f995089988998508897508795509350505050565b505f95508594859450849350839250829150565b90614aa790615097565b60038101809111611ff257604051631e2eaeaf60e01b8152600481019190915290602090829060249082906001600160a01b03165afa8015611b07575f90614af8575b6001600160801b0391501690565b506020813d602011614b29575b81614b1260209383611f50565b81010312610ba5576001600160801b039051614aea565b3d9150614b05565b9080158015614ca1575b614c91578215614c8c57905b600160801b614b5682846138b9565b10614b8357505015614b6b576401000276a490565b73fffd8963efd1fc6a506488495d951d5263988d2590565b600160401b614b9282846138b9565b10614c7457614ba091615a16565b6001600160c01b038111614c4e57614bba9060401b615e54565b905b15614c19576401000276a3811115614c0f5773fffd8963efd1fc6a506488495d951d5263988d26811015614bf6576001600160a01b031690565b5073fffd8963efd1fc6a506488495d951d5263988d2590565b506401000276a490565b73fffd8963efd1fc6a506488495d951d5263988d26811015614bf6576401000276a3811115614c0f576001600160a01b031690565b614c5790615e54565b8060201b908082046401000000001490151715611ff25790614bbc565b614c8190614c869261598c565b615e54565b90614bbc565b614b47565b505015614b6b576401000276a490565b508115614b3b565b916040519163a9059cbb60e01b5f5260018060a01b031660045260245260205f60448180865af19060015f5114821615614d09575b60405215614ce95750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b906001811516611c7057823b15153d15161690614cde565b61012c81108015614d52575b614d345750565b62904c3760e81b5f5260045261012c6024526202a30060445260645ffd5b506202a3008111614d2d565b613bfa613c08614d9d925f958695869860405193614d7b85611f19565b8452151560208401526040830152606082015260405192839160208301613a7c565b03925af15f9181614dd1575b50614db95750505f905f90600190565b80602080614dcc935183010191016120d0565b919092565b614de69192503d805f833e613d3f8183611f50565b905f614da9565b814710614e3c575f808093819382604051614e09602082611f50565b526001600160a01b03165af115614e1c57565b3d15614e2d576040513d5f823e3d90fd5b63d6bda27560e01b5f5260045ffd5b504763cf47918160e01b5f5260045260245260445ffd5b9291928115614eb3576127108314614eb35783821015614eac578382614e7892613964565b918015614ea5578061271003906127108211611ff257613a0494614e9f936117f392613964565b906138d7565b5050905090565b9250505090565b505050505f90565b6101808201358015158103610ba557614fa65761016082013515614ee857613a0491506028810490611fe5565b614f43916020906001600160a01b03614f0082611fd1565b166040614f0f60c08401611fd1565b815163c66d192b60e01b8152939091013560048401526001600160a01b031660248301529093849190829081906044820190565b03915afa8015611b07575f90614f72575b613a04925080821015614f6a57506028816146ce565b6028906146ce565b506020823d602011614f9e575b81614f8c60209383611f50565b81010312610ba557613a049151614f54565b3d9150614f7f565b905090565b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615614fe7575b50604052565b3d15903b151516909216915f614fe1565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f511484161561503a5750604052565b60018492941516615053573b15153d151616915f614fe1565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f511484161561503a5750604052565b6040516020810191825260066040820152604081526150b7606082611f50565b51902090565b9491929390945f9363ffffffff811691821561548557506080870151604051631873947560e01b815291926001600160a01b039091169190615102600483018a611e83565b60208260a481865afa5f9281615449575b50615416575b5050956040519661512b606089611f50565b6002885260208801976040368a3761514281612173565b9863ffffffff8516809a525f61515783612194565b52604051637cb7cbf960e11b815293849260c484019161517b906004860190611e83565b60c060a48501525180915260e4830191905f5b8181106153f7575050509181805f9403915afa90815f915f936152d8575b506151c15750505050505050505f905f905f90565b6151d76151cd82612194565b5160060b91612173565b5160060b900396667fffffffffffff198812667fffffffffffff891317611ff25760060b9660060b87156138c357667fffffffffffff1981145f19891416611ff25787810560020b975f821291826152c9575b50506152b4575b6001600160a01b0361524282612194565b5116906001600160a01b039061525790612173565b511690036001600160a01b038111611ff2576001600160a01b03169081615289575b5050615286929385615807565b92565b61528694506001600160801b03916152ac9160801b63ffffffff60801b166138b9565b16925f615279565b95627fffff198114611ff2575f190195615231565b0760060b151590505f8061522a565b915091503d805f833e6152eb8183611f50565b810190604081830312610ba55780516001600160401b038111610ba55781019082601f83011215610ba557815161532181612138565b9261532f6040519485611f50565b81845260208085019260051b82010190858211610ba557602001915b8183106153dd575050506020810151906001600160401b038211610ba557019180601f84011215610ba55782519061538282612138565b936153906040519586611f50565b82855260208086019360051b820101918211610ba557602001915b8183106153bd5750505090915f6151ac565b82516001600160a01b0381168103610ba5578152602092830192016153ab565b82518060060b8103610ba55781526020928301920161534b565b825163ffffffff1684528694506020938401939092019160010161518e565b63ffffffff82168015615437571061542f575b80615119565b91505f615429565b505050505050505050505f905f905f90565b9092506020813d60201161547d575b8161546560209383611f50565b81010312610ba557615476906120f9565b915f615113565b3d9150615458565b97959691505060a0919293502061549c818761429a565b509097916001600160a01b03161590506154cb576154c69392916154bf91614a9d565b9486615807565b929190565b505050509150505f905f905f90565b60020b908160ff1d82810118620d89e881116157f45763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166157d8575b600481166157bc575b600881166157a0575b60108116615784575b60208116615768575b6040811661574c575b60808116615730575b6101008116615714575b61020081166156f8575b61040081166156dc575b61080081166156c0575b61100081166156a4575b6120008116615688575b614000811661566c575b6180008116615650575b620100008116615634575b620200008116615619575b6204000081166155fe575b62080000166155e5575b5f126155dd575b0160201c90565b5f19046155d6565b6b048a170391f7dc42444e8fa290910260801c906155cf565b6d2216e584f5fa1ea926041bedfe9890920260801c916155c5565b916e5d6af8dedb81196699c329225ee6040260801c916155ba565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916155af565b916f31be135f97d08fd981231505542fcfa60260801c916155a4565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161559a565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91615590565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91615586565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161557c565b916ff3392b0822b70005940c7a398e4b70f30260801c91615572565b916ff987a7253ac413176f2b074cf7815e540260801c91615568565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161555e565b916ffe5dee046a99a2a811c461f1969c30530260801c91615554565b916fff2ea16466c96a3843ec78b326b528610260801c9161554b565b916fff973b41fa98c081472e6896dfb254c00260801c91615542565b916fffcb9843d60f6159c9db58835c9266440260801c91615539565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615530565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91615527565b916ffff97272373d413259a46990580e213a0260801c9161551e565b826345c3193d60e11b5f5260045260245ffd5b909291906001600160a01b039061581d906154da565b166001600160801b03811161586f57806158369161434a565b916001600160a01b039081169116101561585d576001600160801b03613a04921690615c2f565b6001600160801b03613a049216615bad565b8061587991615a99565b916001600160a01b03908116911610156158a0576001600160801b03613a04921690615b64565b6001600160801b03613a049216615ae2565b919291906001600160801b031680158015615901575b614eb3576158d591615c78565b90156158ee57613a04916001600160a01b031690615d8b565b613a04916001600160a01b031690615d08565b506001600160a01b038416156158c8565b9061226081101561597c5760648101809111611ff25760c88110615984575b61226081101561597c578115614fa65766b1a2bc2ec5000019821161597c5780612260036122608111611ff25766b1a2bc2ec500008301808411611ff257613a04936117f392615dd4565b505061226090565b5060c8615931565b9060c082901b905f19600160c01b840992828085109403938085039485841115610ba55714615a0f578190600160c01b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90608082901b905f19600160801b840992828085109403938085039485841115610ba55714615a0f578190600160801b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160401b1115610ba55714615ad957600160401b910990828211900360c01b910360401c1790565b50505060401c90565b90608082901b905f1983600160801b0992828085109403938085039485841115610ba55714615a0f578190600160801b0981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160801b1115610ba55714615ba457600160801b910990828211900360801b910360801c1790565b50505060801c90565b9060c082901b905f1983600160c01b0992828085109403938085039485841115610ba55714615a0f578190600160c01b0981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160c01b1115610ba55714615c6f57600160c01b910990828211900360401b910360c01c1790565b50505060c01c90565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610ba55714615a0f57670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b90606082901b905f19600160601b840992828085109403938085039485841115610ba55714615a0f578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b81810291905f1982820991838084109303928084039384600160601b1115610ba55714615dcb57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f1981850993838086109503948086039586851115610ba55714615e4c579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6001811115613a0457806001600160801b821015615f65575b600482600160401b615f17941015615f58575b640100000000811015615f4b575b62010000811015615f3e575b610100811015615f32575b6010811015615f26575b1015615f1e575b60030260011c615ec681846138b9565b0160011c615ed481846138b9565b0160011c615ee281846138b9565b0160011c615ef081846138b9565b0160011c615efe81846138b9565b0160011c615f0c81846138b9565b0160011c80926138b9565b8111900390565b60011b615eb6565b811c9160021b91615eaf565b60081c91811b91615ea5565b60101c9160081b91615e9a565b60201c9160101b91615e8e565b60401c9160201b91615e80565b5050608081901c600160401b615e6d565b601436101580615f9d575b15615f99576013193601368111610ba5573560601c90565b3390565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614615f8156fea164736f6c634300081c000a",
	"metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedCall\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBBuybackHook_AlreadyConfigured\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_CallerNotPoolManager\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_CallerNotTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"swapAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_InsufficientPayAmount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_InvalidTwapWindow\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_PoolAlreadySet\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"actualSqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"expectedSqrtPriceX96\",\"type\":\"uint160\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_PoolInitializedAtWrongPrice\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBBuybackHook_PoolKeyCurrenciesMismatch\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_PoolNotInitialized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_PoolNotSet\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_SpecifiedSlippageExceeded\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_TerminalTokenIsProjectToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBBuybackHook_ZeroProjectToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"PoolId\",\"name\":\"poolId\",\"type\":\"bytes32\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"CashOutSwap\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"PoolId\",\"name\":\"poolId\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PoolAdded\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SellSwapReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amountToSwapWith\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"PoolId\",\"name\":\"poolId\",\"type\":\"bytes32\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Swap\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"oldWindow\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newWindow\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TwapWindowChanged\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"MAX_TWAP_WINDOW\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"MIN_TWAP_WINDOW\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TWAP_SLIPPAGE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBAfterCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cashOutMetadata\",\"type\":\"bytes\"}]}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"afterCashOutRecordedWith\"},{\"inputs\":[{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}]}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"afterPayRecordedWith\"},{\"inputs\":[{\"internalType\":\"struct JBBeforeCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"surplus\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"bool\",\"name\":\"scopeCashOutsToLocalBalances\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"beneficiaryIsFeeless\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"beforeCashOutRecordedWith\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"effectiveSurplusValue\",\"type\":\"uint256\"},{\"internalType\":\"struct JBCashOutHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"noop\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"struct JBBeforePayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"beforePayRecordedWith\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"noop\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"hasMintPermissionFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"twapWindow\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initializePoolFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"oracleHook\",\"outputs\":[{\"internalType\":\"contract IHooks\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"poolKeyOf\",\"outputs\":[{\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectTokenOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"newPoolManager\",\"type\":\"address\"},{\"internalType\":\"contract IHooks\",\"name\":\"newOracleHook\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setChainSpecificConstants\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"twapWindow\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPoolFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct PoolKey\",\"name\":\"poolKey\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"twapWindow\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPoolFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newWindow\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTwapWindowOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"twapWindowOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"unlockCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}]},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"afterCashOutRecordedWith((address,uint256,uint256,uint256,(address,uint8,uint32,uint256),(address,uint8,uint32,uint256),uint256,address,bytes,bytes))\":{\"details\":\"Called after the data-hook path chooses pool execution over protocol cash out.The terminal has already burned the holder's project tokens by the time this callback runs, so this hook remints tokens to itself before executing the sell. The count to remint/sell comes from `hookMetadata` (set during `beforeCashOutRecordedWith`), NOT from `context.cashOutCount`. This distinction matters when a data hook wrapper (e.g. REVDeployer) splits the cash-out into fee and non-fee tranches — the terminal always passes the original full count in `context.cashOutCount`, but only the non-fee portion should be sold.\",\"params\":{\"context\":\"Standard Juicebox cash-out hook context. `hookMetadata` encodes (minimumSwapAmountOut, cashOutCountToSell) chosen during `beforeCashOutRecordedWith`, followed by informational sell-side routing metadata.\"}},\"afterPayRecordedWith((address,uint256,uint256,(address,uint8,uint32,uint256),(address,uint8,uint32,uint256),uint256,uint256,address,bytes,bytes))\":{\"details\":\"The swap uses the issuance rate as its price limit: it fills while the pool offers a better rate than minting, and any unswapped tokens are minted at the issuance rate. The combined output (swap + leftover mint) must meet the user's specified minimum, otherwise the transaction reverts. If the swap reverts entirely (due to insufficient liquidity or something else), all tokens are minted as a fallback. Explicit caller-provided minimums still apply in that case, but oracle-derived routing minimums do not.\",\"params\":{\"context\":\"The pay context passed in by the terminal.\"}},\"beforeCashOutRecordedWith((address,address,uint256,uint256,uint256,uint256,(address,uint8,uint32,uint256),bool,uint256,bool,bytes))\":{\"details\":\"Returns the protocol cash-out values unchanged unless selling the burned project tokens into the configured pool is expected to return more of the terminal token than the direct reclaim path.If the sell path wins, the hook returns an active cash-out hook specification (`noop = false`) and maxes the tax rate so the terminal does not reclaim surplus itself. The sell executes in `afterCashOutRecordedWith`.This function auto-applies the \\\"floor arbitrage\\\" path described in ARBITRAGE.md (Path 2, in revnet-core-v6). When the AMM bid is HIGHER than the bonding-curve reclaim, the hook routes the holder's burn through the pool — they get more ETH. When the AMM bid is LOWER, the hook passes through to the terminal — the bonding-curve floor is what they receive. Either way, the holder receives at least the bonding-curve reclaim. The terminal path only wins if the selected terminal can locally settle the gross reclaim; aggregate surplus may price a cash-out, but it cannot fund settlement from a terminal whose own local surplus is insufficient. **Why this matters for protocol health:** when external actors arbitrage between the AMM and the terminal cash-out path directly (buying tokens cheap on the AMM, then cashing out via terminal at the higher floor), the cash-out tax (configured per ruleset, e.g. 10%) is retained in the project surplus — boosting per-token backing for remaining holders. The AMM price corrects upward toward fair value. This hook auto-captures the same incentive for ordinary users. **Diagnostic metadata in returned hook specs:** when the hook chooses to noop (passthrough), the spec carries pool state (twapTick, liquidity, poolId, etc.) so off-chain clients can preview what the routing decision would be. Do not optimize this away — it's the protocol's public preview API for the buyback cash-out decision surface. **Caller-provided sell-side controls (via the `cashOut` metadata entry, encoded as `(uint256 minimumSwapAmountOut, bool skip)`):** - `minimumSwapAmountOut`: a hard slippage floor on the net terminal-token output. It is a protection   value, NOT a venue selector. - `skip` (default false): when true, forces the cash-out through the protocol bonding-curve/terminal   path and skips the pool entirely — even when the pool would pay more. The `minimumSwapAmountOut` floor   is still enforced against the direct reclaim, so an unmeetable floor reverts rather than silently   routing to the AMM.\",\"params\":{\"context\":\"Standard Juicebox cash-out data-hook context.\"},\"returns\":{\"cashOutCount\":\"The number of project tokens to cash out.\",\"cashOutTaxRate\":\"The tax rate the terminal should use for the cash out.\",\"effectiveSurplusValue\":\"The surplus to use for reclaim calculation.\",\"hookSpecifications\":\"Any cash-out hook specifications to fulfill after the terminal records the cash out.\",\"totalSupply\":\"The total project token supply to use in reclaim math.\"}},\"beforePayRecordedWith((address,address,(address,uint8,uint32,uint256),uint256,uint256,address,uint256,uint256,bytes))\":{\"details\":\"This function auto-applies the \\\"ceiling arbitrage\\\" path described in ARBITRAGE.md (Path 3, in revnet-core-v6). When the AMM ask is HIGHER than the terminal's pay rate (`weight × ETH`), the hook returns `noop=true` and the terminal mints at the bonding-curve rate — saving the user money. When the AMM ask is LOWER, the hook routes through the pool — the user gets more tokens per ETH. Either way, the user receives at least the bonding-curve mint amount. The `noop` spec is intentionally returned with diagnostic metadata (twapTick, liquidity, poolId, weight ratio, raw swap quote) so off-chain clients (frontends, arbitrage bots, indexers) can preview what the routing decision would be without executing a pay. Do not optimize this away — it's the protocol's public preview API for the buyback decision surface. **Why this matters for protocol health:** when external actors arbitrage between the terminal pay path and the AMM directly (paying terminal at low weight, then selling on AMM at higher price), the AMM price converges downward toward the issuance rate. Their payment lands in project surplus, growing the protocol. This hook auto-captures the same incentive for ordinary users transacting through the terminal — they never need to know whether to mint or swap.\",\"params\":{\"context\":\"Payment context passed to the data hook by `terminalStore.recordPaymentFrom(...)`. `context.metadata` can specify a Uniswap quote and specify how much of the payment should be used to swap. If `context.metadata` does not specify a quote, one will be calculated based on the TWAP. If `context.metadata` does not specify how much of the payment should be used, the hook uses the full amount paid in.\"},\"returns\":{\"hookSpecifications\":\"Specifications containing pay hooks, as well as the amount and metadata to send to them. Empty if only minting.\",\"weight\":\"The weight to use for minting. 0 if all tokens come from the swap.\"}},\"constructor\":{\"params\":{\"deployer\":\"The address authorized to call `setChainSpecificConstants` exactly once. Held immutable so the constructor inputs are byte-identical across chains and the CREATE2 address is unified.\",\"directory\":\"The directory of terminals and controllers.\",\"permissions\":\"The permissions contract.\",\"prices\":\"The contract that exposes price feeds.\",\"projects\":\"The project registry.\",\"tokens\":\"The token registry.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"initializePoolFor(uint256,uint24,int24,uint256,address,uint160)\":{\"details\":\"Atomically initializes the pool (if not already initialized) and calls `_setPoolFor`.Operator-only. Configuring the pool turns on the floor + ceiling arbitrage routing above for this `(projectId, terminalToken)` pair. Without a configured pool, the hook is a passthrough.\",\"params\":{\"fee\":\"The Uniswap V4 pool fee tier.\",\"projectId\":\"The ID of the project to set the pool for.\",\"sqrtPriceX96\":\"The initial sqrtPriceX96 for the pool (if not already initialized).\",\"terminalToken\":\"The address of the terminal token that payments to the project are made in.\",\"tickSpacing\":\"The Uniswap V4 pool tick spacing.\",\"twapWindow\":\"The period of time over which the TWAP is computed.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"poolKeyOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project.\",\"terminalToken\":\"The terminal token address (normalized to address(0) for native).\"},\"returns\":{\"key\":\"The V4 PoolKey.\"}},\"setChainSpecificConstants(address,address)\":{\"details\":\"Callable only by `_DEPLOYER` and only once (when `poolManager` is still `address(0)`). After this call both values are effectively immutable for the contract's lifetime. Mirrors the `JBOptimismSuckerDeployer.setChainSpecificConstants` pattern so the contract's CREATE2 inputs stay byte-identical across chains and its deployed address is unified.\",\"params\":{\"newOracleHook\":\"The Uniswap V4 oracle hook deployed against `newPoolManager` on the current chain.\",\"newPoolManager\":\"The Uniswap V4 PoolManager singleton on the current chain.\"}},\"setPoolFor(uint256,(address,address,uint24,int24,address),uint256,address)\":{\"details\":\"Pool keys are intentionally immutable once set. This prevents manipulation of swap routing after a project's buyback hook is configured.WARNING: The `poolKey.hooks` field is NOT validated. A malicious or buggy V4 hook address in the pool key could interfere with swaps (e.g. manipulate pricing, revert, or extract value). Because this function is permissioned to the project owner (or a delegate with `SET_BUYBACK_POOL`), this is a self-harming-only risk. Callers MUST ensure the pool key — including its hooks field — references a trusted pool.Operator-only. Configuring the pool turns on the floor + ceiling arbitrage routing above for this `(projectId, terminalToken)` pair. Without a configured pool, the hook is a passthrough.\",\"params\":{\"poolKey\":\"The V4 PoolKey identifying the pool.\",\"projectId\":\"The ID of the project to set the pool for.\",\"terminalToken\":\"The address of the terminal token that payments to the project are made in.\",\"twapWindow\":\"The period of time over which the TWAP is computed.\"}},\"setPoolFor(uint256,uint24,int24,uint256,address)\":{\"details\":\"Uses address(0) for the hooks field. The hook sorts the project token and terminal token into the correct currency order. Pool keys are intentionally immutable once set.Operator-only. Configuring the pool turns on the floor + ceiling arbitrage routing above for this `(projectId, terminalToken)` pair. Without a configured pool, the hook is a passthrough.\",\"params\":{\"fee\":\"The Uniswap V4 pool fee tier.\",\"projectId\":\"The ID of the project to set the pool for.\",\"terminalToken\":\"The address of the terminal token that payments to the project are made in.\",\"tickSpacing\":\"The Uniswap V4 pool tick spacing.\",\"twapWindow\":\"The period of time over which the TWAP is computed.\"}},\"setTwapWindowOf(uint256,address,uint256)\":{\"params\":{\"newWindow\":\"The new TWAP window.\",\"projectId\":\"The ID of the project to set the TWAP window of.\",\"terminalToken\":\"The terminal token address (use JBConstants.NATIVE_TOKEN for native ETH).\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"unlockCallback(bytes)\":{\"details\":\"ONLY callable by the PoolManager singleton.\",\"params\":{\"data\":\"ABI-encoded SwapCallbackData.\"},\"returns\":{\"_0\":\"result ABI-encoded swap input consumed and output received.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers.\"},\"MAX_TWAP_WINDOW()\":{\"notice\":\"Projects cannot specify a TWAP window longer than this constant.\"},\"MIN_TWAP_WINDOW()\":{\"notice\":\"Projects cannot specify a TWAP window shorter than this constant.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"PROJECTS()\":{\"notice\":\"The project registry.\"},\"TOKENS()\":{\"notice\":\"The token registry.\"},\"TWAP_SLIPPAGE_DENOMINATOR()\":{\"notice\":\"The denominator used when calculating TWAP slippage percent values.\"},\"afterCashOutRecordedWith((address,uint256,uint256,uint256,(address,uint8,uint32,uint256),(address,uint8,uint32,uint256),uint256,address,bytes,bytes))\":{\"notice\":\"Sells project tokens into the configured Uniswap V4 pool and sends the proceeds to the beneficiary. Called by the terminal after `beforeCashOutRecordedWith` determined that the pool route beats direct reclaim.\"},\"afterPayRecordedWith((address,uint256,uint256,(address,uint8,uint32,uint256),(address,uint8,uint32,uint256),uint256,uint256,address,bytes,bytes))\":{\"notice\":\"Buys project tokens from the Uniswap V4 pool, then mints any leftover at the issuance rate. The swap fills only while the pool price beats the mint rate — leftover input is returned to the project's terminal.\"},\"beforeCashOutRecordedWith((address,address,uint256,uint256,uint256,uint256,(address,uint8,uint32,uint256),bool,uint256,bool,bytes))\":{\"notice\":\"Data-hook callback consulted by the terminal during `cashOutTokensOf()`. Compares the expected output from selling project tokens in the pool against the bonding-curve reclaim amount, and if the pool offers more (net of fees) routes the cash-out through the pool via `afterCashOutRecordedWith`.\"},\"beforePayRecordedWith((address,address,(address,uint8,uint32,uint256),uint256,uint256,address,uint256,uint256,bytes))\":{\"notice\":\"Data-hook callback consulted by the terminal during `pay()`. Compares the pool swap rate against the project's mint rate and chooses the better one. If the pool wins, returns weight=0 so all tokens come from the swap executed in `afterPayRecordedWith`.\"},\"hasMintPermissionFor(uint256,(uint48,uint48,uint48,uint48,uint32,uint112,uint32,address,uint256),address)\":{\"notice\":\"Always returns false — the buyback hook never claims mint permission directly. Minting is handled via the controller in `afterPayRecordedWith`/`afterCashOutRecordedWith` using permission from the registry.\"},\"initializePoolFor(uint256,uint24,int24,uint256,address,uint160)\":{\"notice\":\"Initialize a Uniswap V4 pool in the PoolManager and configure it as the buyback pool for a project.\"},\"oracleHook()\":{\"notice\":\"The oracle hook used for configured Uniswap V4 pools. Set once by `_DEPLOYER` after construction via `setChainSpecificConstants` and never changed thereafter.\"},\"poolKeyOf(uint256,address)\":{\"notice\":\"Returns the PoolKey for a given project and terminal token pair.\"},\"poolManager()\":{\"notice\":\"The Uniswap V4 PoolManager singleton. Set once by `_DEPLOYER` after construction via `setChainSpecificConstants` and never changed thereafter.\"},\"projectTokenOf(uint256)\":{\"notice\":\"The address of each project's token.\"},\"setChainSpecificConstants(address,address)\":{\"notice\":\"One-shot setter for the chain-specific Uniswap V4 PoolManager and oracle hook.\"},\"setPoolFor(uint256,(address,address,uint24,int24,address),uint256,address)\":{\"notice\":\"Set the V4 pool to use for a given project and terminal token pair.\"},\"setPoolFor(uint256,uint24,int24,uint256,address)\":{\"notice\":\"Set the V4 pool to use for a given project and terminal token pair, constructing the PoolKey internally.\"},\"setTwapWindowOf(uint256,address,uint256)\":{\"notice\":\"Change the TWAP window for a project's terminal token.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates which interfaces this contract implements (ERC-165).\"},\"twapWindowOf(uint256,address)\":{\"notice\":\"The TWAP window for a given project and terminal token pair.\"},\"unlockCallback(bytes)\":{\"notice\":\"The V4 PoolManager unlock callback. Executes the swap and settles/takes tokens.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@ballkidz/=node_modules/@ballkidz/\",\"@bananapus/=node_modules/@bananapus/\",\"@bannynet/=node_modules/@bannynet/\",\"@chainlink/=node_modules/@chainlink/\",\"@croptop/=node_modules/@croptop/\",\"@ensdomains/=node_modules/@ensdomains/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@rev-net/=node_modules/@rev-net/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/=node_modules/@sphinx-labs/\",\"@uniswap/=node_modules/@uniswap/\",\"@unruggable/=node_modules/@unruggable/\",\"@zksync/=node_modules/@zksync/\",\"base64-sol/=node_modules/base64-sol/\",\"ds-test/=node_modules/@uniswap/v4-core/lib/solmate/lib/ds-test/\",\"erc4626-tests/=node_modules/@uniswap/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\"forge-gas-snapshot/=node_modules/@uniswap/v4-periphery/lib/permit2/lib/forge-gas-snapshot/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"lib/base64/=node_modules/base64-sol/\",\"openzeppelin-contracts/=node_modules/@uniswap/v4-core/lib/openzeppelin-contracts/\",\"permit2/=node_modules/@uniswap/v4-periphery/lib/permit2/\",\"solady/=node_modules/solady/\",\"solmate/=node_modules/@sphinx-labs/contracts/node_modules/solmate/\",\"typeface/=lib/typeface/contracts/\",\"v4-core/=node_modules/@uniswap/v4-periphery/lib/v4-core/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"none\"},\"compilationTarget\":{\"node_modules/@bananapus/buyback-hook-v6/src/JBBuybackHook.sol\":\"JBBuybackHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"viaIR\":true},\"sources\":{\"node_modules/@bananapus/buyback-hook-v6/src/JBBuybackHook.sol\":{\"keccak256\":\"0x228c41a61a032067c67e79cba946dd21f9fe5e039307456376318a0a464b485e\",\"urls\":[\"bzz-raw://adddcf945f92bba0d3608384f57acaa498427b64e383e4600fc2cee6e696c160\",\"dweb:/ipfs/QmbbVBrTyqhYefDY9zXv9zoGKJTBRhHED7f4xLozmfp9zv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/buyback-hook-v6/src/interfaces/IJBBuybackHook.sol\":{\"keccak256\":\"0x19342cf0bd42e836a4756f7c0165063e9332efa9f509cef43b018356c2c8c4a4\",\"urls\":[\"bzz-raw://055828e23c8189559a1f0bd673c43eb8c970f50762588af3d162de6092e16c4c\",\"dweb:/ipfs/QmUJUB3P6AfqyQRCzv597BtA3GdNkCAGAJV3QKc2sRfNBq\"],\"license\":\"MIT\"},\"node_modules/@bananapus/buyback-hook-v6/src/libraries/JBSwapLib.sol\":{\"keccak256\":\"0xfbc4a25b56baa56d297f3d256f9e1610f77ac8324c5d657f0d5762b5e10fdeba\",\"urls\":[\"bzz-raw://554d7be0920f704cdc212e12e958237aba3c4b72c3eea8d98ebbeed6279aed0b\",\"dweb:/ipfs/QmabDNK23eerpGsvM9uHEcmjLKvtrxYMvyg3Bx42S4s63Z\"],\"license\":\"MIT\"},\"node_modules/@bananapus/buyback-hook-v6/src/structs/SwapCallbackData.sol\":{\"keccak256\":\"0x823e3b6d50c27a11a5810306740a5eb3bdff8f070269006a835116aac23099b9\",\"urls\":[\"bzz-raw://0b083b072b3b75ec05dae2686a22b715b2c11c82b1df09a3d844b7e8b129a4cc\",\"dweb:/ipfs/QmRmRzhJDi2Myxi9PoXJvfQZwHrr1yg1K5ACa9iEr616Hj\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0x16a1fa9f031564f9f3253d5e21327b228651269263bfbde10eb04862c65ed577\",\"urls\":[\"bzz-raw://4150d75d10f267953c0a42948ebd7bffe1568a5fb0dfe84befcda512ddf3a19c\",\"dweb:/ipfs/QmVMYXMRyiLySHCtoPke9AuVkhoVm9Gx1zoLMmSjXjFf2M\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x58f3eed8b6ecea6b640f4eb78a5a416ce8737f9155e350ef4077db422b3fca8f\",\"urls\":[\"bzz-raw://0b56bde97ef9d8ec2a3e464202c5d2fee9c39597485b3fb8baaeef971cc63bc8\",\"dweb:/ipfs/QmSdPaNfPm83yibuSvgLbaqgZw7LYkTLhacrxDagH3sprJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x2a6d327092775fdbeaf922b8364403102cae437f765f662fe142bf97e87c2ef1\",\"urls\":[\"bzz-raw://5f9a23971860b907569917fe14cbcc85993d83fb32e5342dd5338a1721e540f7\",\"dweb:/ipfs/Qmamt2n7HaWo2cUDn8K2FhrZPHBVxuaCWh9jf8V3WYPXMN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0x4923d51fd680cc280a9e90eec8e0597334ae2beb8c04d71289e319d7f82aa70b\",\"urls\":[\"bzz-raw://a39ee26c58248c154e5d4818fe544c614effded1c069b7d2e732c25d9caab4ff\",\"dweb:/ipfs/QmefeSH8CWtNQcrb8iNmfKKSViu3YnnJ9ciaNfEKhxgFHh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBController.sol\":{\"keccak256\":\"0x7032c26dd11cec1ed279bd96a63c0b4f77126835e9fec744e259495827f9ad92\",\"urls\":[\"bzz-raw://a2129d48bed0763676d7f0854d6e784134642584f4c70fabdc7e9e5a9490bf13\",\"dweb:/ipfs/QmU1D5L4gxf2acwXz4QAp9fSZNVboDcj4qTE3xCz5bh2M4\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xb8f3ba0a544360b32c9f0a704168ee93c2960accfc010735c8cbea54941e63d5\",\"urls\":[\"bzz-raw://e9f14d5daa2357db4afe96313b40bf0c53c606315c9cb55109fffdc9c2fd85d0\",\"dweb:/ipfs/QmRPHFAiivM9CqdfocRyahdSjfWTbaSepPNCGGQU23ABcv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x963e641f7b02187389fa813ab177b8d0f20a7a543f6ce2306e8d5f9db95d56e3\",\"urls\":[\"bzz-raw://b500161bcc70fac6830211b2f9855c2c1ab17a91226619cedde7daa166f9196c\",\"dweb:/ipfs/QmV92TK8CTZxVJoGBDEsBfUDidoLAobFmyL1NdQVJARpCD\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0xaaa9a98ad8967e1ab71b560f1cc07fc53d4900a8d595d53f5fb090d8e004562f\",\"urls\":[\"bzz-raw://36513a02be24f9677e0f1e82e01970c81c09043b69e4e60cb3007e2a05f3ce64\",\"dweb:/ipfs/QmZPKkEhgM5A5GzHG4TPxAe8HzjyLxLZzmJaDMDTNxV783\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0x13cad5a8ef2daeb7634d93df6c9f6d1681b5344f4cdc89b03bbbd0953802fd8a\",\"urls\":[\"bzz-raw://35f25042894569b5c50a38d39ab3ceb91e4f69e56d448785701a3ffff335fe98\",\"dweb:/ipfs/QmTd6dF5X6L3v9bnfsh2ZKtRjK5ApwvmKipMWHNXfjwjBF\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeelessHook.sol\":{\"keccak256\":\"0x39b8d6e9798a90f555ea9ca44ade52f2fec5964df8994494bd5f4cfd42853602\",\"urls\":[\"bzz-raw://18e0a22e15d53db093648f6087280b45cf5a19571cf721ea49e4453f5da1cb98\",\"dweb:/ipfs/QmaRDN58nhCR4EkP3oaHpyG5EPgLtR2DSEDfPw4gRUG5Zd\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0x0cb50a855cccbbe7c74a1ebc454112b7b63f502badd019895dd936365ac73340\",\"urls\":[\"bzz-raw://226be05349028b8f055e386fbc41f7db0feb6d027b6068c1c929b0924688e129\",\"dweb:/ipfs/QmXyotizn7pR8DQJtuj6Xkcr7LKorSkm9q8kQGaSDDikSw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x8e258ab09d0b1c429236d98a78610b829a9604e88f7c20fc1041535922c8b207\",\"urls\":[\"bzz-raw://0418c1dcfcd663ad55bf55ce38690e45ebefcc5a01575d6d7ecde18de283edab\",\"dweb:/ipfs/Qmbt2BJ3r9rLXqAZzrs36s24Ks3e6Ho3UTwvuUrtRdDtW6\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x08599d439d898566b311bc4bedf7f0050ce25c86e246c43f673f3ab4d2457f21\",\"urls\":[\"bzz-raw://db19e95707920262c79197be9296fe381782220bfaf00b71df3a4271da83832f\",\"dweb:/ipfs/QmYzdomQzXNSk46U5vkiEnDErJJdR17deL4S6hPundstZd\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x67353962158e3349be384d3ceec89db2b7525c5f5c7f6c8cb8f98aeb09142e95\",\"urls\":[\"bzz-raw://01e55c712af9794b2bf0caeab8bd2bd8150f4c6cab61dfec026d40652d5a26d6\",\"dweb:/ipfs/QmbbcxEBJ8UxFUbGPWvyu1cwxgU9YefwhdNuPvfj7LzSZw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0xa43d05c9cc31cd768072e60d4f097d60dfe199469bfc96aa8df29346a15ee4dc\",\"urls\":[\"bzz-raw://de7caab7841a56b681140993557374edb54763a08b28aaaba35f1bc1a01f7937\",\"dweb:/ipfs/QmQKG6QNm7PNebRtKeLSzzXgp71Yw5Ja37nGPCvVa62Rzu\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0xb32e13d512a7deb9ba1e47bbc0992817a63caa9e1f2913d6c55b637a57084037\",\"urls\":[\"bzz-raw://0d291ccc6edc581febf386779423001b0ed4d3b5b021ec444f7bef01cb2f9d28\",\"dweb:/ipfs/QmSUFhJpcpWYLEUzt4KrzyC4am39TNost8tWAtn5GdAUg2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0x5540c746854add8cdc1911f9903a77c9fc97098d8d205075b8baf07485be5cd2\",\"urls\":[\"bzz-raw://b2136b9ac8a2f2429c83531150810b144f5f7f1855dc85c60fcf8e8c161889a3\",\"dweb:/ipfs/QmNSB7LStqYoPLkZcDwb1dTcakxBp9iENoFfkTaNswBYXj\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x3a948500b5397c90e926f3bdef9423e7f095f906b23cd1503009802c80bedb41\",\"urls\":[\"bzz-raw://a0ea0b7e5d442257f6159799b7bf262615b0f04e5cd542b0980f131ae40a63bb\",\"dweb:/ipfs/QmX7uugLaXtT5XmYxqfrmDqU2YuknAeYjHMiLm9iHaRfHw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xed5e532f6ee86029a1a4a1ba8b593296f772909a5f9d95da6cc6c595a838446f\",\"urls\":[\"bzz-raw://4314cbfe4ebd96a48eaf1c14af860aa08b7cd6a73da10391746b4d3410d13d67\",\"dweb:/ipfs/QmfRkWFbxmJUMew6DsDGbK88PypDBUA6PDTJFvfBaMno5n\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0x4342aaa8b9566e17691f69fc71e050350dd89b63f5040f092f115610d7a6c0eb\",\"urls\":[\"bzz-raw://88ce07791403524a229b080ad05604962d5b54e57106a533f62bff8a32896b1d\",\"dweb:/ipfs/QmSYxFpoH714CF7mZVhgKvFdYHHgg8R4UGXVXhMS69C7H2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x72c6cbda5a93593e3cc49ef6c4e0848a4b6daa88c188c4192776af86c49911dc\",\"urls\":[\"bzz-raw://448ed5d7a704b5f4dd759514dbcb78160b82732ac6bd7bc368a9f8822045e6de\",\"dweb:/ipfs/QmbnpCPxQLDvQx5ymEy1Ty3aks7bjonydops1CsjCACJBN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x11dd67effb025396bec1bb97d35a9ba162340e9a824c048e8286802a12acaa45\",\"urls\":[\"bzz-raw://bae11f483c66d98e7fad9bbf47249f6fa4434693e8bace78cbe6d4da9afee009\",\"dweb:/ipfs/QmWjrjPtr8dLGtXQBrz6idwcNqyx2yVSVVQtqo74yqUSZV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0xf9aad7d3c7de29e020af4fea893bbaa6a1c0e9a8ae5860331c9f4d68d1a5a99f\",\"urls\":[\"bzz-raw://e10b6ed0827ac155153544b8018d2fa812628016e8a168f7df771616f92fd6f4\",\"dweb:/ipfs/QmUB3zuj8B2MAdgSYEMPh7ovXuM1fBb7jN6gLVxstjcAE7\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x8fd69e04aa2b5962a917394c0a4baa6653f7cea93629a1915c1f9c2e870143e5\",\"urls\":[\"bzz-raw://6c7ce64037e6a11cc03e5c66607a219eb25c953ad76aa7b914d2a9e8f0cd5434\",\"dweb:/ipfs/QmYoTec9wfd89HAnNckC2XJWegtgUmfjmi1vJYT4LTXQ61\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0x8155763689f6f51b5c6712ac6f23728b248a8924e69e63f8aa14d01c78ea17f1\",\"urls\":[\"bzz-raw://7bab14bd7250cc3ba6665573f2a961308a3453015af7a0305488c0db1745f95b\",\"dweb:/ipfs/QmYpKwToPcSChWXyJ75SBEeWKugBygAnQ1WaZ8wWcu5rha\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x9d27fe4d9aa6dcbb24a24ee1fc16e51b51fab1c4ab1eace93981e73f3c4ce636\",\"urls\":[\"bzz-raw://7a6a1243102ac23cb1643bcc670b6b16b70566877941233964159f9b37755113\",\"dweb:/ipfs/Qmewa2o3nyoRwZ4pdhWqUh1ShWXA3GHJffiVafcKYXg2Ao\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xa3621c12f7c2e33ee38b5de626a5939190d8a12b1e5318a7cd8d398595480cec\",\"urls\":[\"bzz-raw://1341254389038383117d9b23ed2f9d1812fc30ef1c11cfd6c8423918894d7ba3\",\"dweb:/ipfs/QmV2WJ5a3NW12RnZAM3ySbEfGHNN6GfqqpsMHXorfoxiQo\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0x0ab2fd1b5249ff9dcbb51585df7df8c09af309a984fb0a2378426c7fd1800f43\",\"urls\":[\"bzz-raw://8bab809f8ea5692c738fbeb3f83d7b7259e469e03b7e4e3011358f887636ca44\",\"dweb:/ipfs/QmdbyiVSctQZcfibvygyyJntRpwzRoMDKrSkPydn7VouYm\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xadb3a7c3c149b60b6b51fdfb2acc814956d8aa9bb94e745c0e907c171b0983f2\",\"urls\":[\"bzz-raw://dddd118b37582f19c7559bdf848f53a29fb16289311bd14957c95fdee9cd28e6\",\"dweb:/ipfs/QmbwWXXVR4SGH9tz6pMKKMZxZ8YF8iRQpMCP3DnXDadx3L\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xcbdb1448260ebea5937411516957ef199099e34ff997e7f2a617c2898f921994\",\"urls\":[\"bzz-raw://d1cbf97e5684c987be6703c096e8230d870fab25a23eec8d209cd082e3f2637b\",\"dweb:/ipfs/QmNmzeuQoFiaUTQAcV1tyJyjUYEJ3t7386zTw4ofT7HoZM\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0xf7b458ce7e75e1c4daf2052873846b7c99abb098c0d5fbb2ee5d18e132e4a76c\",\"urls\":[\"bzz-raw://ee20abdc20787df386809255eaee2ef27daca71d4769a0d146cc249502ab0604\",\"dweb:/ipfs/QmP3ZpnnnTQKKGNV9KyLxCYXkjBDuiAgqHX6NRGYuYzTaW\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x02077cebb8074e7cd800a415ed78cf4c82572d753ed36ab8e6d5f5e40f5856a3\",\"urls\":[\"bzz-raw://e4f24e42d5d4e61c90d069ced44b1d5c87267f08469ab1472e629a6f88537204\",\"dweb:/ipfs/QmXiGkU7h8rqyJyYK8UBj3odwdHDgV8YQUekd46FXg2G5R\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBConstants.sol\":{\"keccak256\":\"0x5d4b095f3b94c52f89b9cf8a8104de0242497e61f1b32ddc82e78a9ba71a6d0f\",\"urls\":[\"bzz-raw://3ac3340339e0b6a7aae881781b2830f59e3f44114955e2f770172a9bffddc104\",\"dweb:/ipfs/QmV9pFGNGcknqHLEuc6rmC1YPwuwtsokjzh1WX8H2jmVRp\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBFees.sol\":{\"keccak256\":\"0x8f09351a739b9b99258bf6034190fd8bc9e48adc4ece31615dbeaa0f830859aa\",\"urls\":[\"bzz-raw://30b4486940f25131972c603c4417dc0b8b0166390fb8ebf9b9afbf1a0c0fa5ba\",\"dweb:/ipfs/Qme5YniWZmqotsBHnJnhtGVY2xQuUG1yaNo9URhQ2Qu4GY\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x8f671604390274457e0d13806f9ca9aab44c784f4492612771bada213ed261bd\",\"urls\":[\"bzz-raw://e10babd77a88bb1e9c09d5a99b3f165ce46cca4b348e23add2dc4d53aefe07d7\",\"dweb:/ipfs/QmTLc2R1o5W3hkxX8avYrWPtf1oMLTtmve1sPujAbtoUtz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbd3b117f9457dbe55bd29a2daf368a682c0ab25cbedc0139f309809a4ab646c5\",\"urls\":[\"bzz-raw://6a72f70e18edb22b8abc238ba169e5c775696d07915b5d91a8601c1a28ff096e\",\"dweb:/ipfs/QmQZHfiTLqdk1pv1hiursm2icuAwFSzmjGTxRaHMcAqsUh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0xf53e975ce2632558a95d0a57679dbb8afff984d06daaa530cd4c442e467c3403\",\"urls\":[\"bzz-raw://519f7c466c8d90227afe2bd9108e7477412600fea8b4134889795a58a51b156c\",\"dweb:/ipfs/QmaSHMrNLfP8D9RRUaYbMWURdZYweUmt5ysgtTGMZiwnai\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0x8cd6d13c98bd825d7e61cb3b2f5cbf56e77f9a2f85eaa0e27d82f1fb8d5af4f7\",\"urls\":[\"bzz-raw://0e4ff9a254147cc6728b3bdc3862b77d15b518b49375e400b5f0b78552f14c62\",\"dweb:/ipfs/Qmd25R3LDrnRHiSdrNSdfqk8746A3J3VH44C5HDfHkFvU2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xcf1761f48e4cbd6eeeb64bb19e434eff50a7f666b2116657f88f63d19620c6de\",\"urls\":[\"bzz-raw://842fe47a4ad56c830040864b458de398efd0cf82eb0add9349e792d0c8b0c275\",\"dweb:/ipfs/QmXBj6EVnzvVX8ZYa2ndyjoSZDGjpXxaoy7dBuoGMaAmRX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0xd3af6ce6d8ef731aa746e08de846f0422b34a568a3d1000fb8f85a32ba5701b0\",\"urls\":[\"bzz-raw://237e31d3ee24305c1ff4ffb9f829a4159fbd6bb8b4ecb5b557aa16e7eb924bcd\",\"dweb:/ipfs/QmeW4zTaM2J8DDxdC7zLwaHryBLcC3ydbHNSTHcmyETGvG\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xa5e4dd0ffa54c8e56f3bb6a437b2e13ef8728ee15aee3d7cb1d0dc96317e75dd\",\"urls\":[\"bzz-raw://fcd2113962a3f34e782090a553f1ba5ace6653bd5d5f932e8bb5279f42bbcb5b\",\"dweb:/ipfs/QmWLhDEprdQsNFmPhmNojRHDhqwG2QMx58AV5j4o56P4mx\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x1579c160a19e68eb06158f56120acf06b8aa4bbbc9836c80fabbb3d2e57ccf3d\",\"urls\":[\"bzz-raw://a81f5e0c384caf0ac11814825ce07e6c6cee97d28f60dcd65dfe8d529b6135fe\",\"dweb:/ipfs/QmY2q7oMFDMN1PoQ8zp7PUQu4K5dYKhYLKBKqrTy42YU6N\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBFee.sol\":{\"keccak256\":\"0x354a99f21d8fa1e306886b0163c8b2daed66d32a2b2bcf6eb1dcefecfc7ef471\",\"urls\":[\"bzz-raw://91b468d942f96d5e27882b836d503125aedd8b0da4ea8e4295cd1b619a83073b\",\"dweb:/ipfs/QmT6TL5eEap2GvaWCwcsCEgVVVwnwnNWmBGskrkESJeFKu\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x7e62015441edc056c3959fb0e5d0b59a1b209a91ce4beab9d3f6c25e02daf0c0\",\"urls\":[\"bzz-raw://5c77a27155794a7c05ea17ed4bdb382039187b9effecc300563d7fb144029983\",\"dweb:/ipfs/QmXE4FptihU4wSqFLeGWsaNDpZmmNYFLEXMnWGhEC5pf3X\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x28f565b626774c36a990ac999f268fbaf9d7f7861e862fab1fb8301f2534e8d1\",\"urls\":[\"bzz-raw://a5d7375934179178febd3b412099b1a5ff42a154ce8b949df2c11b5f3cb3b80e\",\"dweb:/ipfs/QmXP5vVq8Z6HntiuMcPWfQURCKejyiyHLKYuMmzCuUJJtV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0x9cb75b1171657be08950f9fc9f6c2bcb2496f618de4ab932141d424dec29d9df\",\"urls\":[\"bzz-raw://a8f578d6132c92048ae553a3c13260ecfa657f4a1bbe18f6c550d96988167590\",\"dweb:/ipfs/QmSYfGm2mcYfMm4wfnZMTjuUr1kBJoq4vZSCkwdgi9BRFk\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRuleset.sol\":{\"keccak256\":\"0xd03f45345597fca43effe3bc593572c989f4294d909505e331cbd2640a801d23\",\"urls\":[\"bzz-raw://2cc09b335549f4982c16c1109f3078f09fb81c32370baff007633a38badb7a83\",\"dweb:/ipfs/QmYJHBvXscvokRqzdGdTCRQtHUpnePS2uaCDfgHLuuMo56\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x812ca14f18e228fde272c0caf56a59b71302bfb4f9c514ac6fb0989ab8e1c48e\",\"urls\":[\"bzz-raw://9b234704315ac567db402c89dd5be46ca029094872f6dd52698324dd6ddf6a2d\",\"dweb:/ipfs/QmYPUJHLkyUwbYfJ7UdcpgvyzPtibUmhrKtzXQcRtA8Kvz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0xbb9bda3b7ebb6796fa091ee6ce3182ad2a03dc35b89df0fb1107fae7c26ae0b4\",\"urls\":[\"bzz-raw://1b400674d8ec4e3495041c03d5601c07a68eb5d18a0cff83a5823007d6bad36e\",\"dweb:/ipfs/Qma76CRFPwV9WZq2ttZ2FFvui5BvzRHnftrL3Tz1m9uGKv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplit.sol\":{\"keccak256\":\"0xf50ba85591d86076ff127e97af2c4b7d1a1be3e20e25d784b64591697d71ab52\",\"urls\":[\"bzz-raw://04276773313a01c2b816c95addea68843c21db3888f4c547eb6e6c486ac55547\",\"dweb:/ipfs/QmZGpxzryNkheek5V9dJWfcJyTP7T52PsPXgRBuweK2rsN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0xa2246f4960ec2b24db3fbfce5d59782cdb9a8fb3c3f832a2c39ddc92859ff170\",\"urls\":[\"bzz-raw://3e3a0ae100c15bb15f0484cb68e3052c3d3d764f84e37020e8dd6b658ff98076\",\"dweb:/ipfs/QmPAv99zN7senrfCMMkeT4RMWpwTdqLgMURQR73BLRe4ZG\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/permission-ids-v6/src/JBPermissionIds.sol\":{\"keccak256\":\"0x5105c29834e0dce4e395e262f23089a1077404f5317c591c89f3621cdfda9628\",\"urls\":[\"bzz-raw://54deca2c06d77f5d1087911e8035d244dde2b08a5dc0dff146b86e6a314419e8\",\"dweb:/ipfs/QmNdpTioAbk6bahJx4aT1WFUY9aV182JH1Dn4FqfuqC8QC\"],\"license\":\"MIT\"},\"node_modules/@bananapus/univ4-router-v6/src/interfaces/IGeomeanOracle.sol\":{\"keccak256\":\"0x9ec9e147188bf5309b14e2dadb9db7245951d58461f99e3b1cea53d33357c47f\",\"urls\":[\"bzz-raw://8a11cf9731d487483c8418e5360dccc0afbfaf87abcb031282ee3ff8cc0f0832\",\"dweb:/ipfs/QmRYY5b7cMgmbANsvqWL2XiPyjPcVSAXy2S46oTE5ZFTCX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x9695d220b99dcf62910533bdf5d40d4cf6a4e04d5b106b6803a80586486dc7f7\",\"urls\":[\"bzz-raw://83b7aecd65882d8953643dce144efe91367082cc01830c9c4ed3c8a4837fb558\",\"dweb:/ipfs/QmQ5HxGavcCKjuhd8buv177qjG6A4kvxx4pZviceKdspdM\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x0fa9e0d3a859900b5a46f70a03c73adf259603d5e05027a37fe0b45529d85346\",\"urls\":[\"bzz-raw://c2add4da0240c9f2ce47649c8bb6b11b40e98cf6f88b8bdc76b2704e89391710\",\"dweb:/ipfs/QmNQTwF2uVzu4CRtNxr8bxyP9XuW6VsZuo2Nr4KR2bZr3d\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x59973a93b1f983f94e10529f46ca46544a9fec2b5f56fb1390bbe9e0dc79f857\",\"urls\":[\"bzz-raw://c55ef8f0b9719790c2ae6f81d80a59ffb89f2f0abe6bc065585bd79edce058c5\",\"dweb:/ipfs/QmNNmCbX9NjPXKqHJN8R1WC2rNeZSQrPZLd6FF6AKLyH5Y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xc8cae21c9ae4a46e5162ff9bf5b351d6fa6a6eba72d515f3bc1bdfeda7fdf083\",\"urls\":[\"bzz-raw://ce830ebcf28e31643caba318996db3763c36d52cd0f23798ba83c135355d45e9\",\"dweb:/ipfs/QmdGPcvptHN7UBCbUYBbRX3hiRVRFLRwno8b4uga6uFNif\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x1949276271967e9954a65f27c1c32e1dd73cbd1f3d2af88f2fdd694ba4b7da60\",\"urls\":[\"bzz-raw://ca414ac0a29a3d0d9e194afa73029a7d94168029df6aeb5f6a4b540d0072eb14\",\"dweb:/ipfs/QmYVipmQDvcvurNZZSFGjxabWXwEpdfijYYx2b3d7ico8U\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"],\"license\":\"BUSL-1.1\"},\"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"],\"license\":\"MIT\"}},\"version\":1}",
	"gitCommit": "npm:@bananapus/buyback-hook-v6@1.1.1",
	"gitDirty": false,
	"history": []
}
