UNPKG

@uniswap/v4-core

Version:

🦄 Core smart contracts of Uniswap v4

1 lines • 690 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":"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_fuzz_getFeeGrowthInside","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"zeroForOne","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getLiquidity","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getPositionInfo","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"swapAmount","type":"uint256","internalType":"uint256"},{"name":"zeroForOne","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getPositionLiquidity","inputs":[{"name":"paramsA","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"paramsB","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getTickBitmap","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getTickLiquidity","inputs":[{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getTickLiquidity_two_positions","inputs":[{"name":"paramsA","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"paramsB","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getFeeGrowthGlobals0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getFeeGrowthGlobals1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getFeeGrowthInside","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getPositionInfo","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getPositionLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getSlot0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickBitmap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickFeeGrowthOutside","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickInfo","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickLiquidity","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}],"bytecode":{"object":"0x60806040523461016457600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610168565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610168565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b038211176101505760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e17905560438054909216614000600160a01b0317909155516201ff029081620001888239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101505760405256fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c908163096bd8e51461526c575080630a9254e414614706578063160c2d4e1461462957806317a5bbf8146143675780631ed7831c146142be5780631f66401b146141aa5780632ade388014613f7e5780632da17f0314613ad757806339cd201314613a765780633e5e3c23146139cd5780633f7286f414613924578063508c4a571461375b578063518471a7146133e1578063542524dd146133935780635ca2863d14612e3c5780635d2fd5141461299d57806366d9a9a0146128425780636f91bf0914612571578063787675ed146122695780637b520131146120a857806385226c81146120005780638aef3e0614611db7578063916a17c614611ce257806393ad73ed14611c7d578063b0464fdc14611ba8578063b1a73b8a14611b40578063b5508aa914611a98578063ba414fa614611a55578063c7b8e15d14611a15578063ccf67ea914611782578063db542270146112a8578063e20c9f71146111ef578063e618ae8714610ce7578063eb72828f14610750578063fa7626d41461070f5763fe09bfa30361000f573461070c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c576101e836615865565b6084359081151582036107085773ffffffffffffffffffffffffffffffffffffffff602c54169060375460b81c60020b908161022381617a1e565b0260020b9161023181617a4c565b0260020b60405192610242846157b4565b8352602083015269021e19e0c9bab2400000604083015284606083015261038e60208094604051906102748383615824565b88825261037a897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0850197883687870137604051968795869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b61014061012484015261014483019061598a565b03925af180156106fd576106d0575b50602c54604051610409926103e39273ffffffffffffffffffffffffffffffffffffffff166103cc8784615824565b8883528536888501376103dd615c10565b90616f0d565b5093604051906103f38583615824565b868252833686840137610404615c10565b616619565b5073ffffffffffffffffffffffffffffffffffffffff602b54169260445492815160020b9381830195865160020b956104428383617676565b9061044e838686617744565b99909361046761045f838989617744565b989097616873565b505060020b91821215905061069f575050505091839161058993039603945b73ffffffffffffffffffffffffffffffffffffffff602c541661037a8a875160020b8b5160020b604051916104ba836157b4565b825286820152816040820152816060820152604051946104da8787615824565b8286523687870137604051968795869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af1801561069457610661575b50602c549151945160405160609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691830191825260e895861b601483015290941b60178501525f601a85015261065e9361065991610650919061062b81603a84015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282615824565b51902073ffffffffffffffffffffffffffffffffffffffff602b541660445490616acf565b94909150616dd5565b616dd5565b80f35b918183813d831161068d575b6106778183615824565b81010312610689579150610659610598565b5f80fd5b503d61066d565b6040513d89823e3d90fd5b959995939493126106bb57505003940392610589908290610486565b91859361058995929993030397030394610486565b8381813d83116106f6575b6106e58183615824565b8101031261068957506103e361039d565b503d6106db565b6040513d88823e3d90fd5b8280fd5b80fd5b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57602060ff601f54166040519015158152f35b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5773ffffffffffffffffffffffffffffffffffffffff602c54166108d16040516107a7816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c602082015269021e19e0c9bab2400000604082015283606082015260208093604051906107f98383615824565b86825261037a877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0850195863687870137604051978895869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af18015610cae57610cb9575b610a0e91508273ffffffffffffffffffffffffffffffffffffffff602c54166040519061090c826157b4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffda882526102588383015269021e19e0c9bab2400000604083015286606083015261037a876040519361095e8686615824565b818552863687870137604051978895869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af18015610cae57610c80575b610a45915060405190610a308483615824565b8482523684830137610a40615c10565b61625b565b5073ffffffffffffffffffffffffffffffffffffffff602b54169082610aa67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc4604454610aa1610a958288616873565b5050905060020b61693f565b617f92565b6044604051809581937f35fd631a0000000000000000000000000000000000000000000000000000000083526004830152600360248301525afa918215610c75578392610c51575b50808201516fffffffffffffffffffffffffffffffff8160801d9116906060604085015194015192604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152601460248301527f657874736c6f6164206765745469636b496e666f000000000000000000000000604483015280826064818a737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561069457610c1e575b8661065e6fffffffffffffffffffffffffffffffff87610659888b610c0c8a73ffffffffffffffffffffffffffffffffffffffff602b541693610c0060445491610bed610be58489617487565b949098617718565b9a9097610bf983616cd7565b1690616dd5565b600f0b90600f0b6169df565b610c1581616b67565b61065984616bdd565b8181959492953d8311610c4a575b610c368183615824565b81010312610689579192508161065e610b98565b503d610c2c565b610c6e9192503d8085833e610c668183615824565b810190616a55565b905f610aee565b6040513d85823e3d90fd5b8282813d8311610ca7575b610c958183615824565b8101031261068957610a459150610a1d565b503d610c8b565b6040513d86823e3d90fd5b8282813d8311610ce0575b610cce8183615824565b8101031261068957610a0e91506108e0565b503d610cc4565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5773ffffffffffffffffffffffffffffffffffffffff602c5416604051610d3b816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c602082015269021e19e0c9bab24000006040820152826060820152610e686020809360405190610d908383615824565b86825261037a877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0850196873687870137604051968795869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af18015610cae576111c5575b50610e9e604051610e888482615824565b848152823685830137610e99615c10565b61642d565b50610ec473ffffffffffffffffffffffffffffffffffffffff602b541660445490616873565b50509050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156111c157604051907ff4c004e300000000000000000000000000000000000000000000000000000000825260020b60048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff756024820152838082604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9182156111b457849261119b575b5050610fd59173ffffffffffffffffffffffffffffffffffffffff602c541661037a86604051610f92816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c86820152816040820152816060820152604051946104da8787615824565b03925af18015610c7557611171575b5061108e73ffffffffffffffffffffffffffffffffffffffff602c541660405161062b816105ff86820194857fffffffffffffffffffffffffffffffffffffffff000000000000000000000000603a9260601b1681527fffffc4000000000000000000000000000000000000000000000000000000000060148201527d3c000000000000000000000000000000000000000000000000000000000060178201525f601a8201520190565b9192604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152601860248301527f657874736c6f616420676574506f736974696f6e496e666f00000000000000006044830152808260648189737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156106fd57611140575b505061113b906111366fffffffffffffffffffffffffffffffff61065e9516616cd7565b616b67565b616bdd565b81819392933d831161116a575b6111578183615824565b8101031261068957905080611136611112565b503d61114d565b8181813d8311611194575b6111868183615824565b810103126106895751610fe4565b503d61117c565b819250906111a891615824565b6107085781835f610f63565b50604051903d90823e3d90fd5b8380fd5b8281813d83116111e8575b6111da8183615824565b810103126106895751610e77565b503d6111d0565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061127c576112788561126c81870382615824565b6040519182918261593b565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611255565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c578073ffffffffffffffffffffffffffffffffffffffff602c541661142860405191611301836157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48352603c6020840152678ac7230489e800006040840152836060840152602092839161037a86604051936113568686615824565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051968795869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af18015610c7557611754575b5061145d73ffffffffffffffffffffffffffffffffffffffff602b541660445490617487565b906040517fdd9fca12000000000000000000000000000000000000000000000000000000008152836004820152601960248201527f657874736c6f6164206765745469636b4c6971756964697479000000000000006044820152838160648188737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156117495761170a575b506fffffffffffffffffffffffffffffffff6114fb9116616d57565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561170657604051907ffe74f05b000000000000000000000000000000000000000000000000000000008252600f0b6004820152678ac7230489e8000060248201528281604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610c755783916116f1575b505073ffffffffffffffffffffffffffffffffffffffff602b5416816115a6603c604454617f92565b6024604051809481937f1e2eaeaf00000000000000000000000000000000000000000000000000000000835260048301525afa918215610c755783926116c0575b50506116086fffffffffffffffffffffffffffffffff8260801d9216616d57565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156116bd57604051907ffe74f05b000000000000000000000000000000000000000000000000000000008252600f0b60048201527fffffffffffffffffffffffffffffffffffffffffffffffff7538dcfb7618000060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156116b2576116a15750f35b816116ab91615824565b61070c5780f35b6040513d84823e3d90fd5b50fd5b8193508092503d83116116ea575b6116d88183615824565b81010312610689578190515f806115e7565b503d6116ce565b816116fb91615824565b6116bd57815f61157d565b5050fd5b93508284813d8311611742575b6117218183615824565b81010312610689578493506fffffffffffffffffffffffffffffffff6114df565b503d611717565b6040513d87823e3d90fd5b91508082813d831161177b575b61176b8183615824565b8101031261068957829151611437565b503d611761565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5773ffffffffffffffffffffffffffffffffffffffff602c5416611831604051916117da836157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48352603c602084015269021e19e0c9bab24000006040840152836060840152602092839161037a86604051936113568686615824565b03925af18015610c75576119eb575b5061190f73ffffffffffffffffffffffffffffffffffffffff602c54166040516118ea816105ff86820194857fffffffffffffffffffffffffffffffffffffffff000000000000000000000000603a9260601b1681527fffffc4000000000000000000000000000000000000000000000000000000000060148201527d3c000000000000000000000000000000000000000000000000000000000060178201525f601a8201520190565b51902073ffffffffffffffffffffffffffffffffffffffff602b5416604454906178ba565b90604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152601d60248301527f657874736c6f616420676574506f736974696f6e4c69717569646974790000006044830152808260648187737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610cae576119ae575b8361065e6fffffffffffffffffffffffffffffffff8516616cd7565b81813d83116119e4575b6119c28183615824565b8101031261068957506fffffffffffffffffffffffffffffffff61065e611992565b503d6119b8565b8181813d8311611a0e575b611a008183615824565b810103126106895751611840565b503d6119f6565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c575060206401000276a4604051908152f35b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c576020611a8e616182565b6040519015158152f35b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57601954611ad381615d1b565b91611ae16040519384615824565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310611b2357604051806112788782615a89565b600160208192611b3285615d33565b815201920192019190611b0e565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57601c54611be381615d1b565b91611bf16040519384615824565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310611c3357604051806112788782615b06565b60026020600192604051611c46816157ec565b73ffffffffffffffffffffffffffffffffffffffff8654168152611c6b858701615ede565b83820152815201920192019190611c1e565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57601d54611d1d81615d1b565b91611d2b6040519384615824565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310611d6d57604051806112788782615b06565b60026020600192604051611d80816157ec565b73ffffffffffffffffffffffffffffffffffffffff8654168152611da5858701615ede565b83820152815201920192019190611d58565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57611f3873ffffffffffffffffffffffffffffffffffffffff602c5416604051611e0e816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c602082015269021e19e0c9bab240000060408201528360608201526020809260405190611e608383615824565b86825261037a877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0850195863687870137604051988995869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af18015610cae57611fd2575b611fa19250611f7e61113b611f7773ffffffffffffffffffffffffffffffffffffffff602b541660445490617676565b9190616bdd565b60405191611f8c8184615824565b8483523690830137611f9c615c10565b6164df565b5061065e611fcd611f7773ffffffffffffffffffffffffffffffffffffffff602b541660445490617676565b616c53565b8183813d8311611ff9575b611fe78183615824565b8101031261068957611fa19250611f47565b503d611fdd565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57601a5461203b81615d1b565b916120496040519384615824565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061208b57604051806112788782615a89565b60016020819261209a85615d33565b815201920192019190612076565b503461070c5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c576120e136615865565b602c5473ffffffffffffffffffffffffffffffffffffffff16906040519061210a602083615824565b8382525f36602084013761211c615c10565b61212593616f0d565b50604081019081516fffffffffffffffffffffffffffffffff1690602b5473ffffffffffffffffffffffffffffffffffffffff169060445490805160020b61216e908385617559565b906fffffffffffffffffffffffffffffffff1661218b8682616dd5565b8651600f0b91600f0b9161219f90836169df565b6020830192835160020b6121b4908688617559565b98906fffffffffffffffffffffffffffffffff16976121d39089616dd5565b51600f0b6121e090615eaf565b97600f0b97600f0b6121f290896169df565b5160020b61220190858761796e565b505091906fffffffffffffffffffffffffffffffff169061222191616dd5565b600f0b9061222e916169df565b5160020b9061223c9261796e565b505091906fffffffffffffffffffffffffffffffff169061225c91616dd5565b600f0b9061065e916169df565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c578073ffffffffffffffffffffffffffffffffffffffff602c54166040516122be816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c6020820152678ac7230489e8000060408201528260608201526123116020809360405190610d908383615824565b03925af18015610cae57612542575b508161239a9173ffffffffffffffffffffffffffffffffffffffff602c541661037a8660405161234f816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff888152607886820152678ac7230489e800006040820152816060820152604051946104da8787615824565b03925af18015610c7557612514575b506123cf73ffffffffffffffffffffffffffffffffffffffff602b54166044549061710b565b90604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152601560248301527f657874736c6f6164206765744c697175696469747900000000000000000000006044830152808260648187737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610cae576124e5575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156116bd576fffffffffffffffffffffffffffffffff604051917f98296c540000000000000000000000000000000000000000000000000000000083521660048201526801158e460913d0000060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156116b2576116a15750f35b90809350813d831161250d575b6124fc8183615824565b81010312610689578291515f612452565b503d6124f2565b91508082813d831161253b575b61252b8183615824565b81010312610689578291516123a9565b503d612521565b92508183813d831161256a575b6125598183615824565b810103126106895783925081612320565b503d61254f565b503461070c5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c576125aa36615865565b60a43580151581036107085773ffffffffffffffffffffffffffffffffffffffff602c541690612619602093604051906125e48683615824565b8682527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08601948536888501376103dd615c10565b61263761262b8260809794971d615eaf565b600f0b91600f0b615eaf565b600f0b906128365750600191505b6127126126ed612656608435618374565b5f806126a26126d4612666617933565b6040519283917fb60e72cc000000000000000000000000000000000000000000000000000000008b84015260406024840152606483019061598a565b866044830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282615824565b86815191016a636f6e736f6c652e6c6f675afa50615be4565b604051906126fb8483615824565b8782528536858401378461270d615c10565b616717565b506127518173ffffffffffffffffffffffffffffffffffffffff602c541694865160020b9561037a89848a0198895160020b604051916104ba836157b4565b03925af180156106fd57612808575b50602c54845193516040805160609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001693830193845260e895861b6014850152941b60178301525f601a8301526fffffffffffffffffffffffffffffffff936127eb92909185916127dc9161062b81603a84016105ff565b96919390970151169116616dd5565b156127fc5761113b61065e92616b67565b61113661065e92616bdd565b908082813d831161282f575b61281e8183615824565b810103126106895790506040612760565b503d612814565b61264557849150612645565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57601b5461287d81615d1b565b61288a6040519182615824565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b83831061296257868587604051928392602084019060208552518091526040840160408260051b8601019392905b8282106128f757505050500390f35b91936020612952827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083612942835160408452604084019061598a565b9201519084818403910152615a34565b96019201920185949391926128e8565b60026020600192604051612975816157ec565b61297e86615d33565b815261298b858701615ede565b838201528152019201920191906128ba565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c578073ffffffffffffffffffffffffffffffffffffffff602c54166040516129f2816157b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c602082015269021e19e0c9bab24000006040820152826060820152612a476020809360405190610d908383615824565b03925af18015610cae57612e0e575b50612b838273ffffffffffffffffffffffffffffffffffffffff602c541660405190612a81826157b4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffda882526102588383015269021e19e0c9bab2400000604083015286606083015261037a8760405193612ad38686615824565b818552873687870137604051968795869485937f5a6bcfda00000000000000000000000000000000000000000000000000000000855261034c6004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b03925af18015610cae57612ddc575b50604051612ba491610a308483615824565b50612bca73ffffffffffffffffffffffffffffffffffffffff602b541660445490616873565b9360409392919351907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152601160248301527f657874736c6f616420676574536c6f7430000000000000000000000000000000604483015280826064818a737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561069457612dad575b505060020b90612c608261693f565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612da95773ffffffffffffffffffffffffffffffffffffffff604051917f98296c540000000000000000000000000000000000000000000000000000000083521660048201526bfe3aa841ba359daa0ea9eff760248201528481604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115611749578591612d8f575b5050612d1291612d0c62ffffff9261693f565b16616bdd565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156116bd5762ffffff604051917f98296c54000000000000000000000000000000000000000000000000000000008352166004820152610bb860248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156116b2576116a15750f35b81612d9991615824565b612da457835f612cf9565b505050fd5b8480fd5b90809650813d8311612dd5575b612dc48183615824565b81010312610689578594515f612c51565b503d612dba565b9092508181813d8311612e07575b612df48183615824565b8101031261068957508291612ba4612b92565b503d612dea565b92508183813d8311612e35575b612e258183615824565b8101031261068957839251612a56565b503d612e1b565b503461070c576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57612e7636615865565b612e9c612e93612e85366158d0565b92612e8e615c10565b61774f565b91612e8e615c10565b82825160020b825160020b808214159182613381575b508161336f575b5080613357575b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561335357604051907f4c63e562000000000000000000000000000000000000000000000000000000008252151560048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156116b25761333e575b505073ffffffffffffffffffffffffffffffffffffffff602c54169183806020948561306760405192612f638385615824565b8484527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301938436858301376040519586809481937f5a6bcfda0000000000000000000000000000000000000000000000000000000083526130366004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b61037a60a484018d60608091805160020b8452602081015160020b6020850152604081015160408501520151910152565b03925af1918215610c7557869261330b575b506131859073ffffffffffffffffffffffffffffffffffffffff602c541690604051906130a68583615824565b85825236858301376040519485809481937f5a6bcfda0000000000000000000000000000000000000000000000000000000083526131546004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b61037a60a484018c60608091805160020b8452602081015160020b6020850152604081015160408501520151910152565b03925af18015611749576132ce575b506fffffffffffffffffffffffffffffffff604061325f829361065e9673ffffffffffffffffffffffffffffffffffffffff602c5416825160020b6105ff61322d8486015160020b8851928391878301958787917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000603a949260601b16835260e81b601483015260e81b60178201525f601a8201520190565b5190209161326a73ffffffffffffffffffffffffffffffffffffffff602b54169488808961325f60445498898b6178ba565b930151169116616dd5565b8851818a0151875160609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001692840192835260e891821b6014840152901b60178201525f601a820152906132c581603a84016105ff565b519020916178ba565b908382813d8311613304575b6132e48183615824565b810103126106895790506fffffffffffffffffffffffffffffffff613194565b503d6132da565b92509082813d8111613337575b6133228183615824565b81010312610689578591508490613185613079565b503d613318565b8161334891615824565b61070857825f612f30565b5080fd5b50602083015160020b602083015160020b1415612ec0565b9050602084015160020b14155f612eb9565b602085015160020b141591505f612eb2565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5760405173fffd8963efd1fc6a506488495d951d5263988d258152602090f35b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5773ffffffffffffffffffffffffffffffffffffffff602c54166134386040516107a7816157b4565b03925af18015610cae5761372d575b61347391508273ffffffffffffffffffffffffffffffffffffffff602c54166040519061090c826157b4565b03925af18015610cae576136ff575b613495915060405190610a308483615824565b50816134c973ffffffffffffffffffffffffffffffffffffffff602b5416604454906134c4610a958383616873565b617718565b91906040517fdd9fca120000000000000000000000000000000000000000000000000000000081528460048201528460248201527f657874736c6f6164206765745469636b46656547726f7774684f7574736964656044820152848160648186737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610c75576136d1575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561335357604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201526d97ab4a0932b9403be6d79708e8fc60248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156116b2576136bc575b50506135d990616bdd565b73ffffffffffffffffffffffffffffffffffffffff602b541690613600603c604454617f92565b6001810180911161368f5783906044604051809581937f35fd631a0000000000000000000000000000000000000000000000000000000083526004830152600260248301525afa908115610c755761065e92849261366c575b50604061113b9183015192015191616bdd565b61113b9192506136876040913d8088833e610c668183615824565b929150613659565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b816136c691615824565b61070857825f6135ce565b91508382813d83116136f8575b6136e88183615824565b810103126106895784915161354b565b503d6136de565b8282813d8311613726575b6137148183615824565b81010312610689576134959150613482565b503d61370a565b8282813d8311613754575b6137428183615824565b81010312610689576134739150613447565b503d613738565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5773ffffffffffffffffffffffffffffffffffffffff602c54166137b26040516107a7816157b4565b03925af18015610cae576138f6575b61380f91506137f161113b611f7773ffffffffffffffffffffffffffffffffffffffff602b541660445490617676565b604051906137ff8483615824565b8482523684830137610e99615c10565b5061383573ffffffffffffffffffffffffffffffffffffffff602b541660445490617676565b9091604051907fdd9fca12000000000000000000000000000000000000000000000000000000008252806004830152601c60248301527f657874736c6f61642067657446656547726f777468476c6f62616c73000000006044830152808260648188737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015611749576138c7575b505061113b61065e92616c53565b81813d83116138ef575b6138db8183615824565b81010312610689575061113b61065e6138b9565b503d6138d1565b8282813d831161391d575b61390b8183615824565b810103126106895761380f91506137c1565b503d613901565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106139a1576112788561126c81870382615824565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161398a565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110613a4a576112788561126c81870382615824565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201613a33565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461070c576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57613b1136615865565b613c64613b1d366158d0565b91613bc273ffffffffffffffffffffffffffffffffffffffff602c5416613b8960209360405190613b4e8683615824565b8882527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0860193843688850137613b83615c10565b9061726e565b509473ffffffffffffffffffffffffffffffffffffffff602c541660405192613bb28685615824565b8884523686850137613b83615c10565b506fffffffffffffffffffffffffffffffff604085015116916fffffffffffffffffffffffffffffffff80604084015116958695869473ffffffffffffffffffffffffffffffffffffffff602b541660445496879686613c27875160020b8a86617559565b613c39879e929e5160020b8c88617559565b989096613c4f868c019e8f5160020b9083617559565b951694600f0b9589019c8d5160020b91617559565b9a1699600f0b9d8d8a5160020b895160020b8114908115613f70575b5015613f4357906fffffffffffffffffffffffffffffffff80613ca686613cae95615e36565b169116616dd5565b8c895160020b885160020b145f14613f2a57613cde613ceb936fffffffffffffffffffffffffffffffff92615e36565b16600f0b90600f0b6169df565b8a8a5160020b865160020b8114908115613f1c575b5015613f0257906fffffffffffffffffffffffffffffffff610bf985613d2594615e36565b885160020b885160020b145f14613ee857613d606fffffffffffffffffffffffffffffffff613d57613d69948d615e36565b16600f0b615eaf565b600f0b906169df565b89825160020b855160020b8114908115613eda575b5015613eac57906fffffffffffffffffffffffffffffffff80613ca6613da4948c615e36565b5160020b825160020b145f14613e8757613dd3906fffffffffffffffffffffffffffffffff613cde8a89615e36565b825160020b905160020b8114908115613e79575b5015613e5a57613e0c906fffffffffffffffffffffffffffffffff610bf98887615e36565b5160020b905160020b145f14613e3d576fffffffffffffffffffffffffffffffff613d5761065e94613d6093615e36565b613e519061065e93600f0b90600f0b615e68565b600f0b906175f9565b613d609350859250613e7191509461065e95616dd5565b600f0b615eaf565b9050835160020b145f613de7565b613ea790613e9b87600f0b8a600f0b615e68565b600f0b90600f0b61757c565b613dd3565b613ea79392506fffffffffffffffffffffffffffffffff613ecd9216616dd5565b88600f0b90600f0b6169df565b9050885160020b145f613d7e565b613efd9150613e518a600f0b8d600f0b615e68565b613d69565b613efd9350613f1091616dd5565b613d608a600f0b615eaf565b90508a5160020b145f613d00565b613e9b90613f3e93600f0b90600f0b615e68565b613ceb565b613f3e93506fffffffffffffffffffffffffffffffff613f639216616dd5565b8c600f0b90600f0b6169df565b90508d5160020b145f613c80565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c57601e54613fb981615d1b565b613fc66040519182615824565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106141145786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106140325786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106140cb57505050505060208060019297019301930190928695949293614025565b9091929394602080614107837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08760019603018952895161598a565b97019501939291016140a7565b604051614120816157ec565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461414981615d1b565b916141576040519384615824565b8183528a526020808b20908b9084015b83821061418d575050505060019282602092836002950152815201920192019190613ff6565b60016020819261419c86615d33565b815201930191019091614167565b503461070c5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c576142216141e636615865565b73ffffffffffffffffffffffffffffffffffffffff602c5416906040519161420f602084615824565b8483525f3660208501376103dd615c10565b50805160020b61425661423d60375460b81c60020b8093615c91565b91602060ff8460020b60081d941694015160020b615c91565b61427c8273ffffffffffffffffffffffffffffffffffffffff602b5416604454906171d4565b9161428683616b67565b8160020b60081d60010b9060010b145f146142b0579160018060ff61065e95161b911b1790616dd5565b50600161065e921b90616dd5565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061433b576112788561126c81870382615824565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201614324565b503461070c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261070c5773ffffffffffffffffffffffffffffffffffffffff602c5416614417604051916143bf836157b4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4835261012c602084015269021e19e0c9bab24000006040840152836060840152602092839161037a86604051936113568686615824565b03925af18015610c75576145ff575b5060375460b81c60020b80156145d2577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed40561448573ffffffffffffffffffffffffffffffffffffffff602b54168260020b60081d90604454906171d4565b90604051927fdd9fca12000000000000000000000000000000000000000000000000000000008452806004850152601660248501527f657874736c6f6164206765745469636b4269746d6170000000000000000000006044850152808460648188737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015611749576145a3575b50614524925060ff60019161451c84616b67565b161b90616dd5565b60375460b81c60020b80156145765761065e9061012c05600160ff61456c73ffffffffffffffffffffffffffffffffffffffff602b54168460020b60081d90604454906171d4565b9261451c84616b67565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b83813d83116145cb575b6145b78183615824565b8101031261068957614524925060ff614508565b503d6145ad565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526012600452fd5b8181813d8311614622575b6146148183615824565b810103126106895751614426565b503d61460a565b503461070c5760807ffffffffffffffffff