UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 691 kB
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WETHHook"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_initialization","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_revertAddLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revertInvalidPoolInitialization","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unwrapWETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_unwrapWETH_exactOut","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_wrapETH","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_wrapETH_exactOut","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"weth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WETH"}],"stateMutability":"view"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101808290526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909316909317909155602755602880546001600160a01b0319908116909217905560428054600e90831617905560438054909116614000600160a01b0317905561022060405260056101e090815264616c69636560d81b6102005261012590610199565b604a80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260038152623137b160e91b602082015261016890610199565b604b80546001600160a01b0319166001600160a01b0392909216919091179055348015610193575f80fd5b5061033f565b5f6101a3826101aa565b5092915050565b5f80826040516020016101bd91906102b8565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610226573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024a91906102ce565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189061028690859087906004016102fb565b5f604051808303815f87803b15801561029d575f80fd5b505af11580156102af573d5f803e3d5ffd5b50505050915091565b5f82518060208501845e5f920191825250919050565b5f602082840312156102de575f80fd5b81516001600160a01b03811681146102f4575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6202166b806200034e5f395ff3fe6080604052600436106101a7575f3560e01c806385226c81116100e7578063b5508aa911610087578063c7b8e15d11610062578063c7b8e15d146104df578063d871d75b146104f3578063e20c9f7114610507578063fa7626d41461051b575f80fd5b8063b5508aa914610493578063b55e078c146104a7578063ba414fa6146104bb575f80fd5b80639e7402a8116100c25780639e7402a8146103ed578063afeeaf0914610401578063b0464fdc14610415578063b1a73b8a14610429575f80fd5b806385226c811461037e578063916a17c61461039f57806393ad73ed146103c0575f80fd5b80633f7286f41161015257806361e566cf1161012d57806361e566cf1461030957806366aa8b3d1461031d57806366d9a9a0146103315780637f5a7c7b14610352575f80fd5b80633f7286f4146102905780633fc8cef3146102a4578063542524dd146102f5575f80fd5b80632ade3880116101825780632ade38801461020657806339cd2013146102275780633e5e3c231461027c575f80fd5b8063018da3da146101b25780630a9254e4146101c85780631ed7831c146101dc575f80fd5b366101ae57005b5f80fd5b3480156101bd575f80fd5b506101c6610534565b005b3480156101d3575f80fd5b506101c66107f0565b3480156101e7575f80fd5b506101f0610e9c565b6040516101fd91906165da565b60405180910390f35b348015610211575f80fd5b5061021a610f09565b6040516101fd919061667e565b348015610232575f80fd5b5060235460245460255461025492600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016101fd565b348015610287575f80fd5b506101f0611052565b34801561029b575f80fd5b506101f06110bd565b3480156102af575f80fd5b506045546102d09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fd565b348015610300575f80fd5b506102d0611128565b348015610314575f80fd5b506101c661114a565b348015610328575f80fd5b506101c6611851565b34801561033c575f80fd5b50610345611c58565b6040516101fd91906167ec565b34801561035d575f80fd5b506044546102d09073ffffffffffffffffffffffffffffffffffffffff1681565b348015610389575f80fd5b50610392611dd1565b6040516101fd9190616888565b3480156103aa575f80fd5b506103b3611e9c565b6040516101fd91906168fd565b3480156103cb575f80fd5b5060205460215460225461025492600281810b936301000000909204900b9184565b3480156103f8575f80fd5b506101c6611f9f565b34801561040c575f80fd5b506101c661215a565b348015610420575f80fd5b506103b36127b2565b348015610434575f80fd5b506026546027546028546104609260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016101fd565b34801561049e575f80fd5b506103926128b5565b3480156104b2575f80fd5b506101c6612980565b3480156104c6575f80fd5b506104cf61312a565b60405190151581526020016101fd565b3480156104ea575f80fd5b506102d06131fa565b3480156104fe575f80fd5b506101c661320a565b348015610512575f80fd5b506101f06136cd565b348015610526575f80fd5b50601f546104cf9060ff1681565b60445460408051600480825260248083018452602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167f78895c1300000000000000000000000000000000000000000000000000000000179091528551938452838301865290830180519091167fa9e35b2f000000000000000000000000000000000000000000000000000000001790529251737109709ecfa91a80626ff3989d68f67f5b1dd12d9463f28dceb3947f90bfb86500000000000000000000000000000000000000000000000000000000946106519473ffffffffffffffffffffffffffffffffffffffff93909316937f259982e5000000000000000000000000000000000000000000000000000000009391920161699f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526106e191600401616a12565b5f604051808303815f87803b1580156106f8575f80fd5b505af115801561070a573d5f803e3d5ffd5b5050602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88815260786020820152683635c9adc5dea00000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169350635a6bcfda92506107ad9160469190600401616a24565b6020604051808303815f875af11580156107c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed9190616aba565b50565b6107f8613738565b604051610804906164cc565b604051809103905ff08015801561081d573d5f803e3d5ffd5b506045805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556043546044805490921690841617612888179055604080518082018252600881527f57455448486f6f6b000000000000000000000000000000000000000000000000602080830191909152602b5483519516908501529083019190915261091391606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260445473ffffffffffffffffffffffffffffffffffffffff16613d21565b6040805160a0810182525f80825260455473ffffffffffffffffffffffffffffffffffffffff90811660208401819052938301829052603c6060840152604454166080909201829052604680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155604780547fffffffffffff000000000000000000000000000000000000000000000000000016909417773c000000000000000000000000000000000000000000000017909355604880549093169091179091556109e390613d32565b604980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155602b546040517f6276cbbe000000000000000000000000000000000000000000000000000000008152921691636276cbbe91610a699160469190600401616ad1565b6020604051808303815f875af1158015610a85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa99190616b47565b50604a546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268056bc75e2d631000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b158015610b35575f80fd5b505af1158015610b47573d5f803e3d5ffd5b5050604b546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268056bc75e2d631000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b158015610bd6575f80fd5b505af1158015610be8573d5f803e3d5ffd5b50506040517fc88a5e6d000000000000000000000000000000000000000000000000000000008152306004820152680ad78ebc5ac62000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b158015610c5d575f80fd5b505af1158015610c6f573d5f803e3d5ffd5b50506045546040515f935073ffffffffffffffffffffffffffffffffffffffff9091169150680ad78ebc5ac6200000908381818185875af1925050503d805f8114610cd5576040519150601f19603f3d011682016040523d82523d5f602084013e610cda565b606091505b5050905080610d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f57455448207472616e73666572206661696c656400000000000000000000000060448201526064015b60405180910390fd5b604554604a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015268056bc75e2d63100000602482015291169063a9059cbb906044016020604051808303815f875af1158015610dca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dee9190616b6e565b50604554604b546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015268056bc75e2d63100000602482015291169063a9059cbb906044016020604051808303815f875af1158015610e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e939190616b6e565b506107ed61402f565b60606016805480602002602001604051908101604052809291908181526020018280548015610eff57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed4575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611049575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611032578382905f5260205f20018054610fa790616b8d565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd390616b8d565b801561101e5780601f10610ff55761010080835404028352916020019161101e565b820191905f5260205f20905b81548152906001019060200180831161100157829003601f168201915b505050505081526020019060010190610f8a565b505050508152505081526020019060010190610f2c565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610eff57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed4575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610eff57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed4575050505050905090565b611147600173fffd8963efd1fc6a506488495d951d5263988d26616c0b565b81565b604a546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201819052670de0b6b3a7640000939031925f929116906370a0823190602401602060405180830381865afa1580156111cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ef9190616aba565b602b546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190529394509231925f92909116906370a0823190602401602060405180830381865afa15801561126a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128e9190616aba565b604a546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561130d575f80fd5b505af115801561131f573d5f803e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b15801561139b575f80fd5b505af11580156113ad573d5f803e3d5ffd5b5050602b5460405188815273ffffffffffffffffffffffffffffffffffffffff90911692505f91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b15801561147a575f80fd5b505af115801561148c573d5f803e3d5ffd5b5050604a54602b5460405189815273ffffffffffffffffffffffffffffffffffffffff9283169450911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805180820182525f808252602080830191909152602f54835160608101855260018082529281018a9052929373ffffffffffffffffffffffffffffffffffffffff90911692632229d0b4928a92604692919082019061154c906401000276a390616c37565b73ffffffffffffffffffffffffffffffffffffffff908116909152604080517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681528454831660048201526001850154808416602483015260a081901c62ffffff16604483015260b81c600290810b606483015290940154821660848501528251151560a485015260208084015160c48601529201511660e48301528551151561010483015285015115156101248201526101606101448201525f6101648201526101840160206040518083038185885af1158015611633573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116589190616aba565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116c0575f80fd5b505af11580156116d2573d5f803e3d5ffd5b5050604a546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190523194505f93509116906370a0823190602401602060405180830381865afa15801561174c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117709190616aba565b602b546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190529394509231925f92909116906370a0823190602401602060405180830381865afa1580156117eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180f9190616aba565b905061182461181e858b616c63565b8b61434b565b61183161181e8985616c63565b61183b878361434b565b611845868261434b565b50505050505050505050565b604a546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201819052670de0b6b3a7640000939031925f929116906370a0823190602401602060405180830381865afa1580156118d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f69190616aba565b602b546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190529394509231925f92909116906370a0823190602401602060405180830381865afa158015611971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119959190616aba565b604a546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611a14575f80fd5b505af1158015611a26573d5f803e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b158015611aa2575f80fd5b505af1158015611ab4573d5f803e3d5ffd5b5050602b5460405188815273ffffffffffffffffffffffffffffffffffffffff90911692505f91507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b158015611b81575f80fd5b505af1158015611b93573d5f803e3d5ffd5b5050604a54602b5460405189815273ffffffffffffffffffffffffffffffffffffffff9283169450911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040805180820182525f808252602080830191909152602f5483516060810190945260018452919273ffffffffffffffffffffffffffffffffffffffff90921691632229d0b49189916046918101611c4384616c76565b815260200161154c6401000276a36001616c37565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611049578382905f5260205f2090600202016040518060400160405290815f82018054611cab90616b8d565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd790616b8d565b8015611d225780601f10611cf957610100808354040283529160200191611d22565b820191905f5260205f20905b815481529060010190602001808311611d0557829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db957602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d665790505b50505050508152505081526020019060010190611c7b565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611049578382905f5260205f20018054611e1190616b8d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3d90616b8d565b8015611e885780601f10611e5f57610100808354040283529160200191611e88565b820191905f5260205f20905b815481529060010190602001808311611e6b57829003601f168201915b505050505081526020019060010190611df4565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015611049575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015611f8757602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f345790505b50505050508152505081526020019060010190611ebf565b604454604080517f3fc8cef300000000000000000000000000000000000000000000000000000000815290516120509273ffffffffffffffffffffffffffffffffffffffff1691633fc8cef39160048083019260209291908290030181865afa15801561200e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120329190616ccd565b60455473ffffffffffffffffffffffffffffffffffffffff166143cf565b604454604080517fd52f63cf00000000000000000000000000000000000000000000000000000000815290516120bf9273ffffffffffffffffffffffffffffffffffffffff169163d52f63cf9160048083019260209291908290030181865afa15801561200e573d5f803e3d5ffd5b604454604080517f0bc6bffc00000000000000000000000000000000000000000000000000000000815290516121589273ffffffffffffffffffffffffffffffffffffffff1691630bc6bffc9160048083019260209291908290030181865afa15801561212e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121529190616ccd565b5f6143cf565b565b6040805160a0810182525f815260455473ffffffffffffffffffffffffffffffffffffffff908116602080840191909152610bb883850152603c606084015260445490911660808301819052835160048082526024808301875282850180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167f1213a0ab00000000000000000000000000000000000000000000000000000000179091528751928352828201885294820180519095167fa9e35b2f000000000000000000000000000000000000000000000000000000001790945294519394737109709ecfa91a80626ff3989d68f67f5b1dd12d9463f28dceb3947f90bfb86500000000000000000000000000000000000000000000000000000000946122a99490937fdc98354e0000000000000000000000000000000000000000000000000000000093919290910161699f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b909216825261233991600401616a12565b5f604051808303815f87803b158015612350575f80fd5b505af1158015612362573d5f803e3d5ffd5b5050602b546049546040517f6276cbbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450636276cbbe93506123c19286921690600401616ce8565b6020604051808303815f875af11580156123dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124019190616b47565b505f6012604051612411906164da565b60608082526006908201527f52616e646f6d0000000000000000000000000000000000000000000000000000608082015260a0602082018190526003908201527f524e44000000000000000000000000000000000000000000000000000000000060c082015260ff909116604082015260e001604051809103905ff08015801561249d573d5f803e3d5ffd5b506045549091505f90819073ffffffffffffffffffffffffffffffffffffffff908116908416106124e75760455473ffffffffffffffffffffffffffffffffffffffff1683612503565b604554839073ffffffffffffffffffffffffffffffffffffffff165b6040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80851682528084166020808401919091525f83850152603c606084015260445490911660808301819052835160048082526024808301875282850180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167fdcdedda900000000000000000000000000000000000000000000000000000000179091528751928352828201885294820180519095167fa9e35b2f00000000000000000000000000000000000000000000000000000000179094529451939a50959750939550737109709ecfa91a80626ff3989d68f67f5b1dd12d9463f28dceb3947f90bfb86500000000000000000000000000000000000000000000000000000000946126539491937fdc98354e0000000000000000000000000000000000000000000000000000000093920161699f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526126e391600401616a12565b5f604051808303815f87803b1580156126fa575f80fd5b505af115801561270c573d5f803e3d5ffd5b5050602b546049546040517f6276cbbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450636276cbbe935061276b9289921690600401616ce8565b6020604051808303815f875af1158015612787573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ab9190616b47565b5050505050565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015611049575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561289d57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161284a5790505b505050505081525050815260200190600101906127d5565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015611049578382905f5260205f200180546128f590616b8d565b80601f016020809104026020016040519081016040528092919081815260200182805461292190616b8d565b801561296c5780601f106129435761010080835404028352916020019161296c565b820191905f5260205f20905b81548152906001019060200180831161294f57829003601f168201915b5050505050815260200190600101906128d8565b604a546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201819052670de0b6b3a7640000939031925f929116906370a0823190602401602060405180830381865afa158015612a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a259190616aba565b602b546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190529394509231925f92909116906370a0823190602401602060405180830381865afa158015612aa0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ac49190616aba565b604a546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612b43575f80fd5b505af1158015612b55573d5f803e3d5ffd5b5050604554602f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116925063095ea7b391506044016020604051808303815f875af1158015612bf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c149190616b6e565b506040805180820182525f808252602082015290517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b158015612c9e575f80fd5b505af1158015612cb0573d5f803e3d5ffd5b50506044546040518981525f935073ffffffffffffffffffffffffffffffffffffffff90911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b158015612d7d575f80fd5b505af1158015612d8f573d5f803e3d5ffd5b5050602b54604a546040518a815273ffffffffffffffffffffffffffffffffffffffff9283169450911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602f5460408051606081019091525f815273ffffffffffffffffffffffffffffffffffffffff90911690632229d0b49060469060208101612e288b616c76565b8152602001612e4c600173fffd8963efd1fc6a506488495d951d5263988d26616c0b565b73ffffffffffffffffffffffffffffffffffffffff908116909152604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681528454831660048201526001850154808416602483015260a081901c62ffffff16604483015260b81c600290810b606483015290940154821660848501528251151560a485015260208084015160c48601529201511660e48301528451151561010483015284015115156101248201526101606101448201525f610164820152610184016020604051808303815f875af1158015612f33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f579190616aba565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612fbf575f80fd5b505af1158015612fd1573d5f803e3d5ffd5b5050604a546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190523194505f93509116906370a0823190602401602060405180830381865afa15801561304b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306f9190616aba565b602b546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190529394509231925f92909116906370a0823190602401602060405180830381865afa1580156130ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061310e9190616aba565b905061311d61181e8a86616c63565b61183161181e848a616c63565b6008545f9060ff1615613141575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156131cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f39190616aba565b1415905090565b6111476401000276a36001616c37565b604a546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201819052670de0b6b3a7640000939031925f929116906370a0823190602401602060405180830381865afa15801561328b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132af9190616aba565b602b546045546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482018190529394509231925f92909116906370a0823190602401602060405180830381865afa15801561332a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061334e9190616aba565b604a546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156133cd575f80fd5b505af11580156133df573d5f803e3d5ffd5b5050604554602f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116925063095ea7b391506044016020604051808303815f875af115801561347a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061349e9190616b6e565b506040805180820182525f808252602082015290517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b158015613528575f80fd5b505af115801561353a573d5f803e3d5ffd5b50506044546040518981525f935073ffffffffffffffffffffffffffffffffffffffff90911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b158015613607575f80fd5b505af1158015613619573d5f803e3d5ffd5b5050602b54604a546040518a815273ffffffffffffffffffffffffffffffffffffffff9283169450911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602f54604080516060810182525f81526020810189905273ffffffffffffffffffffffffffffffffffffffff90921691632229d0b491604691908101612e4c600173fffd8963efd1fc6a506488495d951d5263988d26616c0b565b60606015805480602002602001604051908101604052809291908181526020018280548015610eff57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ed4575050505050905090565b61374061443d565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690613768906164e8565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561379e573d5f803e3d5ffd5b50602f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b546040519116906137f2906164f6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613828573d5f803e3d5ffd5b50602e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b5460405191169061387c90616504565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff0801580156138b2573d5f803e3d5ffd5b50602c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b5460405191169061390690616512565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561393c573d5f803e3d5ffd5b50602d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b5460405191169061399090616520565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff0801580156139c6573d5f803e3d5ffd5b50603080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613a1a9061652e565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613a50573d5f803e3d5ffd5b50603180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613aa49061653c565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613ada573d5f803e3d5ffd5b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613b2e9061654a565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613b64573d5f803e3d5ffd5b50603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600d81527f666565436f6e74726f6c6c6572000000000000000000000000000000000000006020820152613be7906144c8565b603580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613c3a90616558565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613c70573d5f803e3d5ffd5b50603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b546035546040517f2d7713890000000000000000000000000000000000000000000000000000000081529083166004820152911690632d771389906024015f604051808303815f87803b158015613d09575f80fd5b505af1158015613d1b573d5f803e3d5ffd5b50505050565b613d2d83835f846144d9565b505050565b60020b5f60ff82901d80830118620d89e8811115613d7457613d747f8b86327a00000000000000000000000000000000000000000000000000000000846147d3565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613dbd576ffff97272373d413259a46990580e213a0260801c5b6004821615613ddc576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613dfb576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613e1a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613e39576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613e58576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613e77576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613e97576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613eb7576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613ed7576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ef7576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613f17576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613f37576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613f57576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613f77576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613f98576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613fb8576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613fd7576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613ff4576b048a170391f7dc42444e8fa20260801c5b5f84131561401f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b6040805160a0810182525f80825260455473ffffffffffffffffffffffffffffffffffffffff9081166020840152606493830193909352603c606083015260808201819052602b5491929190911690636276cbbe90839061408f90613d32565b6040518363ffffffff1660e01b81526004016140ac929190616ce8565b6020604051808303815f875af11580156140c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140ec9190616b47565b506040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815230600482015268056bc75e2d631000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801561415e575f80fd5b505af1158015614170573d5f803e3d5ffd5b50506045546141a2925073ffffffffffffffffffffffffffffffffffffffff1690503068056bc75e2d631000006147e2565b604554602c546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af1158015614239573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061425d9190616b6e565b50602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88815260786020820152683635c9adc5dea00000818301525f606082015290517f5a6bcfda00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda9168056bc75e2d6310000091614306918691600401616d6b565b60206040518083038185885af1158015614322573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906143479190616aba565b5050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015b5f6040518083038186803b1580156143b5575f80fd5b505afa1580156143c7573d5f803e3d5ffd5b505050505050565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440161439f565b3060405161444a90616566565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015614480573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f6144d2826147ee565b5092915050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259061452b908890600401616a12565b5f60405180830381865afa158015614545573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261458a9190810190616edd565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663b4d6c7828383876040516020016145de929190616f41565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161460a929190616f55565b5f604051808303815f87803b158015614621575f80fd5b505af1158015614633573d5f803e3d5ffd5b505050505f808373ffffffffffffffffffffffffffffffffffffffff16856040515f6040518083038185875af1925050503d805f811461468e576040519150601f19603f3d011682016040523d82523d5f602084013e614693565b606091505b50915091508161474b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f537464436865617473206465706c6f79436f6465546f28737472696e672c627960448201527f7465732c75696e743235362c61646472657373293a204661696c656420746f2060648201527f6372656174652072756e74696d652062797465636f64652e0000000000000000608482015260a401610d41565b6040517fb4d6c782000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c7829061479d9087908590600401616f55565b5f604051808303815f87803b1580156147b4575f80fd5b505af11580156147c6573d5f803e3d5ffd5b5050505050505050505050565b815f528060020b60045260245ffd5b613d2d8383835f614949565b5f80826040516020016148019190616f83565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801561489e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148c29190616ccd565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906149179085908790600401616f55565b5f604051808303815f87803b15801561492e575f80fd5b505af1158015614940573d5f803e3d5ffd5b50505050915091565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f928716916149d791616f83565b5f60405180830381855afa9150503d805f8114614a0f576040519150601f19603f3d011682016040523d82523d5f602084013e614a14565b606091505b509150505f81806020019051810190614a2d9190616aba565b9050614a7884614a7287614a6c7f70a0823100000000000000000000000000000000000000000000000000000000614a66600d8d614bc9565b90614c17565b90614c4e565b90614c85565b82156143c75760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f