@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 880 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"_PERMIT_BATCH_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"_PERMIT_DETAILS_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"_PERMIT_SINGLE_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"_WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"deployAndApprovePosm","inputs":[{"name":"poolManager","type":"address","internalType":"contract IPoolManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPermit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookModifyLiquidities","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookSavesDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"positionDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"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_multicall_bubbleRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_bubbleRevert_core","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_initializePool_mint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_initializePool_mint_native","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_initializePool_twice_andMint_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_permitAndDecrease","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_permitBatch_frontrun_suceeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_permit_batch_mint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_permit_frontrun_suceeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_multicall_permit_mint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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},{"type":"error","name":"InvalidNonce","inputs":[]}],"bytecode":{"object":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a9042906101fb565b604555604b80546001600160a01b03191661050017905560405161013d906101ed565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b039283166001600160a01b031991821617909155604e8054821661abcd179055605080548216610f80179055605c805490911690911790556101ac42678ac7230489e800006101fb565b605c80546001600160a01b0316600160a01b65ffffffffffff93909316929092026001600160d01b03169190911790553480156101e7575f80fd5b50610220565b61121e806202904783390190565b8082018082111561021a57634e487b7160e01b5f52601160045260245ffd5b92915050565b62028e18806200022f5f395ff3fe608060405260043610610294575f3560e01c806376f4bb0411610165578063be443d8e116100c6578063c9ec18721161007c578063e20c9f7111610062578063e20c9f7114610742578063f8ccbf4714610756578063fa7626d414610787575f80fd5b8063c9ec18721461071a578063cb6953901461072e575f80fd5b8063c5df4f03116100ac578063c5df4f03146106bf578063c7b8e15d146106f2578063c81c139b14610706575f80fd5b8063be443d8e14610697578063c0406226146106ab575f80fd5b806393ad73ed1161011b578063b1a73b8a11610101578063b1a73b8a146105f5578063b5508aa91461065f578063ba414fa614610673575f80fd5b806393ad73ed146105b4578063b0464fdc146105e1575f80fd5b806388a294fe1161014b57806388a294fe1461056b5780638a9984221461057f578063916a17c614610593575f80fd5b806376f4bb041461053657806385226c811461054a575f80fd5b80633e5e3c231161020f5780636422280c116101c557806367382c05116101ab57806367382c05146104db5780636e4f2775146104ef5780637354465614610522575f80fd5b80636422280c146104a657806366d9a9a0146104ba575f80fd5b8063542524dd116101f5578063542524dd146104255780636302c3cf1461043957806363e8f7281461047a575f80fd5b80633e5e3c23146103fd5780633f7286f414610411575f80fd5b80630aa2f24b116102645780631ed7831c1161024a5780631ed7831c146103665780632ade38801461038757806339cd2013146103a8575f80fd5b80630aa2f24b146102fc578063106d023114610310575f80fd5b806301525c3f1461029f57806303ef31f6146102b55780630a31fd8c146102d45780630a9254e4146102e8575f80fd5b3661029b57005b5f80fd5b3480156102aa575f80fd5b506102b36107a0565b005b3480156102c0575f80fd5b506102b36102cf36600461a714565b610fe3565b3480156102df575f80fd5b506102b3610ff7565b3480156102f3575f80fd5b506102b361205a565b348015610307575f80fd5b506102b3612797565b34801561031b575f80fd5b5060475461033c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610371575f80fd5b5061037a61346c565b60405161035d919061a72f565b348015610392575f80fd5b5061039b6134d9565b60405161035d919061a7d3565b3480156103b3575f80fd5b506023546024546025546103d592600281810b936301000000909204900b9184565b60408051600295860b81529390940b602084015292820152606081019190915260800161035d565b348015610408575f80fd5b5061037a613622565b34801561041c575f80fd5b5061037a61368d565b348015610430575f80fd5b5061033c6136f8565b348015610444575f80fd5b5061046c7faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f7944086381565b60405190815260200161035d565b348015610485575f80fd5b50604d5461033c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b1575f80fd5b506102b361371a565b3480156104c5575f80fd5b506104ce613e3b565b60405161035d919061a941565b3480156104e6575f80fd5b506102b3613fb4565b3480156104fa575f80fd5b5061046c7f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b367881565b34801561052d575f80fd5b506102b36140c8565b348015610541575f80fd5b506102b361476b565b348015610555575f80fd5b5061055e6156db565b60405161035d919061a9dd565b348015610576575f80fd5b506102b36157a6565b34801561058a575f80fd5b506102b3616134565b34801561059e575f80fd5b506105a76166d7565b60405161035d919061aa52565b3480156105bf575f80fd5b506020546021546022546103d592600281810b936301000000909204900b9184565b3480156105ec575f80fd5b506105a76167da565b348015610600575f80fd5b5060265460275460285461062c9260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600161035d565b34801561066a575f80fd5b5061055e6168dd565b34801561067e575f80fd5b506106876169a8565b604051901515815260200161035d565b3480156106a2575f80fd5b506102b3616a78565b3480156106b6575f80fd5b5061033c616b46565b3480156106ca575f80fd5b5061046c7ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d081565b3480156106fd575f80fd5b5061033c616c0c565b348015610711575f80fd5b506102b3616c1c565b348015610725575f80fd5b5061033c617891565b348015610739575f80fd5b506102b361789f565b34801561074d575f80fd5b5061037a617a20565b348015610761575f80fd5b506043546106879074010000000000000000000000000000000000000000900460ff1681565b348015610792575f80fd5b50601f546106879060ff1681565b60408051610100810190915260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840181905260385490921660e08401528252602082019061083b90617a8b565b60020b815260200161085e603660010160179054906101000a900460020b617ac8565b60020b905280518051605e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602080840151605f80546040808801516060808a015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff93821674010000000000000000000000000000000000000000027fffffffffffffffffff0000000000000000000000000000000000000000000000909616978b16979097179490941791909116949094179092556080909601518254908616941693909317905580850151606180549684015186166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090971691909516179490941790925560445482517f75794a3c00000000000000000000000000000000000000000000000000000000815292515f9491909216926375794a3c92600480830193928290030181865afa158015610a03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a27919061aaf4565b6040805161010081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081166060808401918252605f54808416608086015262ffffff7401000000000000000000000000000000000000000082041660a0860152770100000000000000000000000000000000000000000000009004600290810b60c0860152905490921660e0840152825260615480820b602084015263010000009004900b91810191909152909150610b129068056bc75e2d63100000305f5b6040519080825280601f01601f191660200182016040528015610b0c576020820181803683370190505b50617ae0565b5f610b1b617b7e565b9050610ba660018368056bc75e2d631000005f80805b6040519080825280601f01601f191660200182016040528015610b5b576020820181803683370190505b50604051602001610b7095949392919061ab38565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052839190617bda565b506040805160a081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081168252605f54808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060808301919091525490911660808201525f90610c3b908390617df0565b6040805160018082528183019092529192505f9190816020015b6060815260200190600190039081610c555750506045546040519192507fdd46508f0000000000000000000000000000000000000000000000000000000091610ca291859160240161ab91565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f81518110610d1157610d1161abb2565b60209081029190910101526059546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015610d98575f80fd5b505af1158015610daa573d5f803e3d5ffd5b50506059546040805173ffffffffffffffffffffffffffffffffffffffff90921660248084019190915281518084039091018152604490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ca968d800000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250610e7c919060040161abdf565b5f604051808303815f87803b158015610e93575f80fd5b505af1158015610ea5573d5f803e3d5ffd5b50506044546040517fac9650d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063ac9650d89150610eff90849060040161ac69565b5f604051808303815f875af1158015610f1a573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f5f919081019061ad54565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610fc7575f80fd5b505af1158015610fd9573d5f803e3d5ffd5b5050505050505050565b610fec81617e9f565b610ff4618042565b50565b60408051610100810190915260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840181905260385490921660e08401528252602082019061109290617a8b565b60020b81526020016110b5603660010160179054906101000a900460020b617ac8565b60020b905280518051605e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602080840151605f80546040808801516060808a015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff93821674010000000000000000000000000000000000000000027fffffffffffffffffff0000000000000000000000000000000000000000000000909616978b169790971794909417919091169490941790925560809096015182549086169416939093179055840151606180549583015185166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090961691909416179390931790915560575491517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611269575f80fd5b505af115801561127b573d5f803e3d5ffd5b5050604654602954604480546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015290831660248201525f9181018290526064810191909152911692506387517c4591506084015f604051808303815f87803b158015611306575f80fd5b505af1158015611318573d5f803e3d5ffd5b5050604654602a54604480546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015290831660248201525f9181018290526064810191909152911692506387517c4591506084015f604051808303815f87803b1580156113a3575f80fd5b505af11580156113b5573d5f803e3d5ffd5b50506046546057546029546040517f927da10500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290821660248201523060448201525f945084935091169063927da10590606401606060405180830381865afa15801561143e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611462919061ae2f565b604654605754602a546040517f927da10500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290821660248201523060448201529496509194505f9384935091169063927da10590606401606060405180830381865afa1580156114ee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611512919061ae2f565b92505091506115378473ffffffffffffffffffffffffffffffffffffffff165f618088565b6115498365ffffffffffff165f618088565b6115698273ffffffffffffffffffffffffffffffffffffffff165f618088565b61157b8165ffffffffffff165f618088565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa1580156115e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160c919061aaf4565b6040805161010081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081166060808401918252605f54808416608086015262ffffff7401000000000000000000000000000000000000000082041660a0860152770100000000000000000000000000000000000000000000009004600290810b60c08601529054831660e085015290835260615480820b602085015263010000009004900b928201929092526057549293505f926116fc92678ac7230489e800009116845b6040519080825280601f01601f1916602001820160405280156116f6576020820181803683370190505b5061810c565b604080515f60248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff96fb0710000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb3916117b39160040161abdf565b5f604051808303815f87803b1580156117ca575f80fd5b505af11580156117dc573d5f803e3d5ffd5b50506057546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b15801561185c575f80fd5b505af115801561186e573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f92506118cc9185919060040161ab91565b5f604051808303815f87803b1580156118e3575f80fd5b505af11580156118f5573d5f803e3d5ffd5b505f9250600291506119049050565b60405190808252806020026020018201604052801561192d578160200160208202803683370190505b50602954815191925073ffffffffffffffffffffffffffffffffffffffff169082905f9061195d5761195d61abb2565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152602a5482519116908290600190811061199b5761199b61abb2565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152605c545f91611a1291849181169065ffffffffffff7401000000000000000000000000000000000000000082048116917a010000000000000000000000000000000000000000000000000000900416618135565b60445473ffffffffffffffffffffffffffffffffffffffff166020820152605854605d549192505f91611a469184916182ce565b604080516002808252606082019092529192505f9190816020015b6060815260200190600190039081611a615750506057546040519192507e2a3e3a0000000000000000000000000000000000000000000000000000000091611ac69173ffffffffffffffffffffffffffffffffffffffff16908690869060240161ae71565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f81518110611b3557611b3561abb2565b60209081029190910101526045546040517fdd46508f0000000000000000000000000000000000000000000000000000000091611b779188919060240161ab91565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505081600181518110611be757611be761abb2565b60209081029190910101526057546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611c6e575f80fd5b505af1158015611c80573d5f803e3d5ffd5b50506044546040517fac9650d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063ac9650d89150611cda90849060040161ac69565b5f604051808303815f875af1158015611cf5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d3a919081019061ad54565b506044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018890525f9173ffffffffffffffffffffffffffffffffffffffff1690631efeed3390602401602060405180830381865afa158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc919061af78565b604654605754602954604480546040517f927da10500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401528316908201526fffffffffffffffffffffffffffffffff939093169350169063927da10590606401606060405180830381865afa158015611e67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8b919061ae2f565b5050604654605754602a54604480546040517f927da10500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152831690820152929d50169063927da10590606401606060405180830381865afa158015611f14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f38919061ae2f565b5050605c54909950611f639073ffffffffffffffffffffffffffffffffffffffff808e169116618088565b605c54611f899073ffffffffffffffffffffffffffffffffffffffff808c169116618088565b611f9b81678ac7230489e80000618088565b6044546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810189905261204d9173ffffffffffffffffffffffffffffffffffffffff1690636352211e906024015b602060405180830381865afa15801561200b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202f919061afa7565b60575473ffffffffffffffffffffffffffffffffffffffff166185c9565b5050505050505050505050565b6120986040518060400160405280600581526020017f414c494345000000000000000000000000000000000000000000000000000000815250618637565b605655605580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600381527f424f420000000000000000000000000000000000000000000000000000000000602082015261211d90618637565b605855605780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f434841524c49450000000000000000000000000000000000000000000000000060208201526121a290618637565b605a55605980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556121f2618792565b6121fa618d63565b5050602954602a546122379173ffffffffffffffffffffffffffffffffffffffff90811691165f610bb86c01000000000000000000000000618de4565b6054558051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b546123449116610fe3565b60465460405173ffffffffffffffffffffffffffffffffffffffff9091169061236c9061a62f565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff0801580156123a2573d5f803e3d5ffd5b50605b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604654604080517f3644e51500000000000000000000000000000000000000000000000000000000815290519190921691633644e5159160048083019260209291908290030181865afa15801561243d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612461919061aaf4565b605d556055546124869073ffffffffffffffffffffffffffffffffffffffff16618f40565b6055546124a89073ffffffffffffffffffffffffffffffffffffffff1661908d565b6057546124ca9073ffffffffffffffffffffffffffffffffffffffff16618f40565b6057546124ec9073ffffffffffffffffffffffffffffffffffffffff1661908d565b60595461250e9073ffffffffffffffffffffffffffffffffffffffff16618f40565b6059546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561258a575f80fd5b505af115801561259c573d5f803e3d5ffd5b50506029546046546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116925063095ea7b391506044016020604051808303815f875af1158015612637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061265b919061afc2565b50602a546046546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015291169063095ea7b3906044016020604051808303815f875af11580156126f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612717919061afc2565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561277f575f80fd5b505af1158015612791573d5f803e3d5ffd5b50505050565b60408051610100810190915260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840181905260385490921660e08401528252602082019061283290617a8b565b60020b8152602001612855603660010160179054906101000a900460020b617ac8565b60020b905280518051605e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602080840151605f80546040808801516060808a015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff93821674010000000000000000000000000000000000000000027fffffffffffffffffff0000000000000000000000000000000000000000000000909616978b169790971794909417919091169490941790925560809096015182549086169416939093179055840151606180549583015185166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090961691909416179390931790915560575491517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612a09575f80fd5b505af1158015612a1b573d5f803e3d5ffd5b5050604654602954604480546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015290831660248201525f9181018290526064810191909152911692506387517c4591506084015f604051808303815f87803b158015612aa6575f80fd5b505af1158015612ab8573d5f803e3d5ffd5b50506046546057546029546040517f927da10500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290821660248201523060448201525f945084935091169063927da10590606401606060405180830381865afa158015612b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b65919061ae2f565b9250509150612b8a8273ffffffffffffffffffffffffffffffffffffffff165f618088565b612b9c8165ffffffffffff165f618088565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa158015612c09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2d919061aaf4565b6040805161010081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081166060808401918252605f54808416608086015262ffffff7401000000000000000000000000000000000000000082041660a0860152770100000000000000000000000000000000000000000000009004600290810b60c08601529054831660e085015290835260615480820b602085015263010000009004900b928201929092526057549293505f92612cf192678ac7230489e800009116846116cc565b604080515f60248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff96fb0710000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391612da89160040161abdf565b5f604051808303815f87803b158015612dbf575f80fd5b505af1158015612dd1573d5f803e3d5ffd5b50506057546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015612e51575f80fd5b505af1158015612e63573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f9250612ec19185919060040161ab91565b5f604051808303815f87803b158015612ed8575f80fd5b505af1158015612eea573d5f803e3d5ffd5b5050602954605c545f9350612f5c925073ffffffffffffffffffffffffffffffffffffffff9182169181169065ffffffffffff7401000000000000000000000000000000000000000082048116917a01000000000000000000000000000000000000000000000000000090041661918a565b60445473ffffffffffffffffffffffffffffffffffffffff166020820152605854605d549192505f91612f9091849161925b565b604080516002808252606082019092529192505f9190816020015b6060815260200190600190039081612fab5750506057546040519192507f2b67b57000000000000000000000000000000000000000000000000000000000916130119173ffffffffffffffffffffffffffffffffffffffff16908690869060240161afe1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f815181106130805761308061abb2565b60209081029190910101526045546040517fdd46508f00000000000000000000000000000000000000000000000000000000916130c29187919060240161ab91565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050816001815181106131325761313261abb2565b60209081029190910101526057546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156131b9575f80fd5b505af11580156131cb573d5f803e3d5ffd5b50506044546040517fac9650d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925063ac9650d8915061322590849060040161ac69565b5f604051808303815f875af1158015613240573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613285919081019061ad54565b506044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018790525f9173ffffffffffffffffffffffffffffffffffffffff1690631efeed3390602401602060405180830381865afa1580156132f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613317919061af78565b604654605754602954604480546040517f927da10500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516600482015292841660248401528316908201526fffffffffffffffffffffffffffffffff939093169350169063927da10590606401606060405180830381865afa1580156133b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d6919061ae2f565b5050605c549098506134019073ffffffffffffffffffffffffffffffffffffffff808b169116618088565b61341381678ac7230489e80000618088565b6044546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101889052610fd99173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401611ff0565b606060168054806020026020016040519081016040528092919081815260200182805480156134cf57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116134a4575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015613619575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015613602578382905f5260205f200180546135779061b0a6565b80601f01602080910402602001604051908101604052809291908181526020018280546135a39061b0a6565b80156135ee5780601f106135c5576101008083540402835291602001916135ee565b820191905f5260205f20905b8154815290600101906020018083116135d157829003601f168201915b50505050508152602001906001019061355a565b5050505081525050815260200190600101906134fc565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156134cf57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116134a4575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156134cf57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116134a4575050505050905090565b613717600173fffd8963efd1fc6a506488495d951d5263988d2661b124565b81565b6040805160a0810182525f808252602a5473ffffffffffffffffffffffffffffffffffffffff1660208301819052928201819052600a60608301526080909101819052603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155603780547fffffffffffff000000000000000000000000000000000000000000000000000016909317770a00000000000000000000000000000000000000000000001790925560388054909216909155600260405190808252806020026020018201604052801561380d57816020015b60608152602001906001900390816137f85790505b50905063f702040560e01b60366c0100000000000000000000000060405160240161383992919061b150565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f815181106138a8576138a861abb2565b60209081029190910181019190915260408051610100810190915260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840181905260385490921660e08401528252909182019061395290617a8b565b60020b8152602001613975603660010160179054906101000a900460020b617ac8565b60020b905280518051605e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602080840151605f80546040808801516060808a015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff93821674010000000000000000000000000000000000000000027fffffffffffffffffff0000000000000000000000000000000000000000000000909616978b16979097179490941791909116949094179092556080909601518254951694909316939093179092559083015160618054929094015183166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000009092169216919091171790555f613ace617b7e565b9050613b366002605e68056bc75e2d631000006fffffffffffffffffffffffffffffffff8060015f6040519080825280601f01601f191660200182016040528015613b20576020820181803683370190505b50604051602001610b709695949392919061b1c6565b506040805160a081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081168252605f54808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060808301919091525490911660808201525f90613bcb908390617df0565b6045546040519192507fdd46508f0000000000000000000000000000000000000000000000000000000091613c0491849160240161ab91565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505083600181518110613c7457613c7461abb2565b60209081029190910101526044546040517fac9650d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ac9650d890683635c9adc5dea0000090613ce090879060040161ac69565b5f6040518083038185885af1158015613cfb573d5f803e3d5ffd5b50505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613d41919081019061ad54565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff908116825260375480821660208085019190915274010000000000000000000000000000000000000000820462ffffff16848601527701000000000000000000000000000000000000000000000090910460020b6060840152603854909116608083015282515f8082529181019093527ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000929091613e069160019085906192c8565b9050613e1e613e158260801d90565b600f0b836194c8565b613e34613e2b82600f0b90565b600f0b5f619520565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015613619578382905f5260205f2090600202016040518060400160405290815f82018054613e8e9061b0a6565b80601f0160208091040260200160405190810160405280929190818152602001828054613eba9061b0a6565b8015613f055780601f10613edc57610100808354040283529160200191613f05565b820191905f5260205f20905b815481529060010190602001808311613ee857829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613f9c57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613f495790505b50505050508152505081526020019060010190613e5e565b5f604051613fc19061a63d565b604051809103905ff080158015613fda573d5f803e3d5ffd5b50604b546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b815260040161405192919061b2a7565b5f604051808303815f87803b158015614068575f80fd5b505af115801561407a573d5f803e3d5ffd5b5050604b54604a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b6040805160a08101825260295473ffffffffffffffffffffffffffffffffffffffff908116808352602a548216602084018190525f848601819052600a6060860152608090940193909352603680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169092178155603780547fffffffffffff000000000000000000000000000000000000000000000000000016909417770a000000000000000000000000000000000000000000000017909355603880549091169055602b5492517f6276cbbe000000000000000000000000000000000000000000000000000000008152921691636276cbbe916141db916c010000000000000000000000009060040161b150565b6020604051808303815f875af11580156141f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061421b919061b2dd565b505f60025b60405190808252806020026020018201604052801561425357816020015b606081526020019060019003908161423e5790505b50905063f702040560e01b60366c0100000000000000000000000060405160240161427f92919061b150565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050815f815181106142ee576142ee61abb2565b60209081029190910181019190915260408051610100810190915260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840181905260385490921660e08401528252909182019061439890617a8b565b60020b81526020016143bb603660010160179054906101000a900460020b617ac8565b60020b905280518051605e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602080840151605f80546040808801516060808a015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff93821674010000000000000000000000000000000000000000027fffffffffffffffffff0000000000000000000000000000000000000000000000909616978b16979097179490941791909116949094179092556080909601518254951694909316939093179092559083015160618054929094015183166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000009092169216919091171790555f614514617b7e565b606154604080515f815260208101825292935061456c92600292610b7092605e9282860b9263010000009004860b9168056bc75e2d63100000916fffffffffffffffffffffffffffffffff918291600191810161b2fd565b506040805160a081018252605e5473ffffffffffffffffffffffffffffffffffffffff9081168252605f54808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060808301919091525490911660808201525f90614601908390617df0565b6045546040519192507fdd46508f000000000000000000000000000000000000000000000000000000009161463a91849160240161ab91565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050836001815181106146aa576146aa61abb2565b60209081029190910101526044546040517fac9650d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063ac9650d89061470b90869060040161ac69565b5f604051808303815f875af1158015614726573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613d41919081019061ad54565b60408051610100810190915260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a085015277010000000000000000000000000000000000000000000000900460020b60c0840181905260385490921660e08401528252602082019061480690617a8b565b60020b8152602001614829603660010160179054906101000a900460020b617ac8565b60020b905280518051605e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155602080840151605f80546040808801516060808a015162ffffff90811677010000000000000000000000000000000000000000000000027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff938216740100000000000000000000000000000000000000009081027fffffffffffffffffff0000000000000000000000000000000000000000000000909716988c169890981795909517929092169390931790935560809097015181549087169516949094179093559085015160618054959096015183166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000090951692169190911792909217909255602954605c545f936149c493928116929082169165ffffffffffff9181048216917a0100000000000000000000000000000000000000000000000000009091041661918a565b60445473ffffffffffffffffffffffffffffffffffffffff166020820152605a54605d549192505f916149f891849161925b565b602a54605c549192505f91614a6a9