diff --git a/cannonfile.release.toml b/cannonfile.release.toml index 2c5b37dd8..d9979a4d5 100644 --- a/cannonfile.release.toml +++ b/cannonfile.release.toml @@ -12,3 +12,4 @@ exec = "./publish/cannon.js" func = "deploy" args = ["<%= settings.network %>"] modified = ["contracts", "publish/src", "publish/deployed/local"] +outputs = [] \ No newline at end of file diff --git a/contracts/BaseSynthetix.sol b/contracts/BaseSynthetix.sol index f68178221..80400445a 100644 --- a/contracts/BaseSynthetix.sol +++ b/contracts/BaseSynthetix.sol @@ -425,6 +425,8 @@ contract BaseSynthetix is IERC20, ExternStateToken, MixinResolver, ISynthetix { /// @notice Allows an account to self-liquidate anytime its c-ratio is below the target issuance ratio. function liquidateSelf() external systemActive optionalProxy returns (bool) { + require(resolver.getAddress(CONTRACT_V3_LEGACYMARKET) == address(0), "Must liquidate using V3"); + // must store liquidated account address because below functions may attempt to transfer SNX which changes messageSender address liquidatedAccount = messageSender; diff --git a/contracts/migrations/Migration_AcrabOptimismPatch1.sol b/contracts/migrations/Migration_AcrabOptimismPatch1.sol new file mode 100644 index 000000000..d10494727 --- /dev/null +++ b/contracts/migrations/Migration_AcrabOptimismPatch1.sol @@ -0,0 +1,121 @@ +pragma solidity ^0.5.16; + +import "../BaseMigration.sol"; +import "../AddressResolver.sol"; +import "../ProxyERC20.sol"; +import "../TokenState.sol"; +import "../RewardsDistribution.sol"; + +interface ISynthetixNamedContract { + // solhint-disable func-name-mixedcase + function CONTRACT_NAME() external view returns (bytes32); +} + +// solhint-disable contract-name-camelcase +contract Migration_AcrabOptimismPatch1 is BaseMigration { + // https://explorer.optimism.io/address/0x6d4a64C57612841c2C6745dB2a4E4db34F002D20; + address public constant OWNER = 0x6d4a64C57612841c2C6745dB2a4E4db34F002D20; + + // ---------------------------- + // EXISTING SYNTHETIX CONTRACTS + // ---------------------------- + + // https://explorer.optimism.io/address/0x95A6a3f44a70172E7d50a9e28c85Dfd712756B8C + AddressResolver public constant addressresolver_i = AddressResolver(0x95A6a3f44a70172E7d50a9e28c85Dfd712756B8C); + // https://explorer.optimism.io/address/0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4 + ProxyERC20 public constant proxysynthetix_i = ProxyERC20(0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4); + // https://explorer.optimism.io/address/0xB9c6CA25452E7f6D0D3340CE1e9B573421afc2eE + TokenState public constant tokenstatesynthetix_i = TokenState(0xB9c6CA25452E7f6D0D3340CE1e9B573421afc2eE); + // https://explorer.optimism.io/address/0x5d9187630E99dBce4BcAB8733B76757f7F44aA2e + RewardsDistribution public constant rewardsdistribution_i = + RewardsDistribution(0x5d9187630E99dBce4BcAB8733B76757f7F44aA2e); + + // ---------------------------------- + // NEW CONTRACTS DEPLOYED TO BE ADDED + // ---------------------------------- + + // https://explorer.optimism.io/address/0x3f2A1F997Ef089798d19473D96be484Aeb3E4ECf + address public constant new_Synthetix_contract = 0x3f2A1F997Ef089798d19473D96be484Aeb3E4ECf; + + constructor() public BaseMigration(OWNER) {} + + function contractsRequiringOwnership() public pure returns (address[] memory contracts) { + contracts = new address[](4); + contracts[0] = address(addressresolver_i); + contracts[1] = address(proxysynthetix_i); + contracts[2] = address(tokenstatesynthetix_i); + contracts[3] = address(rewardsdistribution_i); + } + + function migrate() external onlyOwner { + // ACCEPT OWNERSHIP for all contracts that require ownership to make changes + acceptAll(); + + // MIGRATION + // Import all new contracts into the address resolver; + addressresolver_importAddresses_0(); + // Import all new contracts into the address resolver; + addressresolver_importAddresses_1(); + // Rebuild the resolver caches in all MixinResolver contracts - batch 1; + addressresolver_rebuildCaches_2(); + // Ensure the SNX proxy has the correct Synthetix target set; + proxysynthetix_i.setTarget(Proxyable(new_Synthetix_contract)); + // Ensure the Synthetix contract can write to its TokenState contract; + tokenstatesynthetix_i.setAssociatedContract(new_Synthetix_contract); + // Ensure the RewardsDistribution has Synthetix set as its authority for distribution; + rewardsdistribution_i.setAuthority(new_Synthetix_contract); + + // NOMINATE OWNERSHIP back to owner for aforementioned contracts + nominateAll(); + } + + function acceptAll() internal { + address[] memory contracts = contractsRequiringOwnership(); + for (uint i = 0; i < contracts.length; i++) { + Owned(contracts[i]).acceptOwnership(); + } + } + + function nominateAll() internal { + address[] memory contracts = contractsRequiringOwnership(); + for (uint i = 0; i < contracts.length; i++) { + returnOwnership(contracts[i]); + } + } + + function addressresolver_importAddresses_0() internal { + bytes32[] memory addressresolver_importAddresses_names_0_0 = new bytes32[](1); + addressresolver_importAddresses_names_0_0[0] = bytes32("Synthetix"); + address[] memory addressresolver_importAddresses_destinations_0_1 = new address[](1); + addressresolver_importAddresses_destinations_0_1[0] = address(new_Synthetix_contract); + addressresolver_i.importAddresses( + addressresolver_importAddresses_names_0_0, + addressresolver_importAddresses_destinations_0_1 + ); + } + + function addressresolver_importAddresses_1() internal { + bytes32[] memory addressresolver_importAddresses_names_1_0 = new bytes32[](1); + addressresolver_importAddresses_names_1_0[0] = bytes32("Synthetix"); + address[] memory addressresolver_importAddresses_destinations_1_1 = new address[](1); + addressresolver_importAddresses_destinations_1_1[0] = address(new_Synthetix_contract); + addressresolver_i.importAddresses( + addressresolver_importAddresses_names_1_0, + addressresolver_importAddresses_destinations_1_1 + ); + } + + function addressresolver_rebuildCaches_2() internal { + MixinResolver[] memory addressresolver_rebuildCaches_destinations_2_0 = new MixinResolver[](9); + addressresolver_rebuildCaches_destinations_2_0[0] = MixinResolver(0x5Fc9B8d2B7766f061bD84a41255fD1A76Fd1FAa2); + addressresolver_rebuildCaches_destinations_2_0[1] = MixinResolver(0xB589Af3f2e3377A9a57da74bE1b6598926479505); + addressresolver_rebuildCaches_destinations_2_0[2] = MixinResolver(0xF4EebDD0704021eF2a6Bbe993fdf93030Cd784b4); + addressresolver_rebuildCaches_destinations_2_0[3] = MixinResolver(0x24b4b6703a2eE7bA75a4Fc859B606F0bbaeef4EA); + addressresolver_rebuildCaches_destinations_2_0[4] = MixinResolver(0xb4E0FA941376e101C29A9FA5A9C6a95489aA34cD); + addressresolver_rebuildCaches_destinations_2_0[5] = MixinResolver(0x2DcAD1A019fba8301b77810Ae14007cc88ED004B); + addressresolver_rebuildCaches_destinations_2_0[6] = MixinResolver(0x136b1EC699c62b0606854056f02dC7Bb80482d63); + addressresolver_rebuildCaches_destinations_2_0[7] = MixinResolver(0xA6bc30d854c2647574921c4AF442008DB7d32ad5); + addressresolver_rebuildCaches_destinations_2_0[8] = MixinResolver(new_Synthetix_contract); + addressresolver_i.rebuildCaches(addressresolver_rebuildCaches_destinations_2_0); + } +} diff --git a/contracts/migrations/Migration_AcrabPatch1.sol b/contracts/migrations/Migration_AcrabPatch1.sol new file mode 100644 index 000000000..2a65e25e5 --- /dev/null +++ b/contracts/migrations/Migration_AcrabPatch1.sol @@ -0,0 +1,134 @@ +pragma solidity ^0.5.16; + +import "../BaseMigration.sol"; +import "../AddressResolver.sol"; +import "../Proxy.sol"; +import "../legacy/LegacyTokenState.sol"; +import "../RewardEscrow.sol"; +import "../RewardsDistribution.sol"; + +interface ISynthetixNamedContract { + // solhint-disable func-name-mixedcase + function CONTRACT_NAME() external view returns (bytes32); +} + +// solhint-disable contract-name-camelcase +contract Migration_AcrabPatch1 is BaseMigration { + // https://etherscan.io/address/0xEb3107117FEAd7de89Cd14D463D340A2E6917769; + address public constant OWNER = 0xEb3107117FEAd7de89Cd14D463D340A2E6917769; + + // ---------------------------- + // EXISTING SYNTHETIX CONTRACTS + // ---------------------------- + + // https://etherscan.io/address/0x823bE81bbF96BEc0e25CA13170F5AaCb5B79ba83 + AddressResolver public constant addressresolver_i = AddressResolver(0x823bE81bbF96BEc0e25CA13170F5AaCb5B79ba83); + // https://etherscan.io/address/0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F + Proxy public constant proxysynthetix_i = Proxy(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F); + // https://etherscan.io/address/0x5b1b5fEa1b99D83aD479dF0C222F0492385381dD + LegacyTokenState public constant tokenstatesynthetix_i = LegacyTokenState(0x5b1b5fEa1b99D83aD479dF0C222F0492385381dD); + // https://etherscan.io/address/0xb671F2210B1F6621A2607EA63E6B2DC3e2464d1F + RewardEscrow public constant rewardescrow_i = RewardEscrow(0xb671F2210B1F6621A2607EA63E6B2DC3e2464d1F); + // https://etherscan.io/address/0x94433f0DA8B5bfb473Ea8cd7ad10D9c8aef4aB7b + RewardsDistribution public constant rewardsdistribution_i = + RewardsDistribution(0x94433f0DA8B5bfb473Ea8cd7ad10D9c8aef4aB7b); + + // ---------------------------------- + // NEW CONTRACTS DEPLOYED TO BE ADDED + // ---------------------------------- + + // https://etherscan.io/address/0xc5f0b4194455e0C175ab68C501400e46C7203504 + address public constant new_Synthetix_contract = 0xc5f0b4194455e0C175ab68C501400e46C7203504; + + constructor() public BaseMigration(OWNER) {} + + function contractsRequiringOwnership() public pure returns (address[] memory contracts) { + contracts = new address[](5); + contracts[0] = address(addressresolver_i); + contracts[1] = address(proxysynthetix_i); + contracts[2] = address(tokenstatesynthetix_i); + contracts[3] = address(rewardescrow_i); + contracts[4] = address(rewardsdistribution_i); + } + + function migrate() external onlyOwner { + // ACCEPT OWNERSHIP for all contracts that require ownership to make changes + acceptAll(); + + // MIGRATION + // Import all new contracts into the address resolver; + addressresolver_importAddresses_0(); + // Rebuild the resolver caches in all MixinResolver contracts - batch 1; + addressresolver_rebuildCaches_1(); + // Rebuild the resolver caches in all MixinResolver contracts - batch 2; + addressresolver_rebuildCaches_2(); + // Ensure the SNX proxy has the correct Synthetix target set; + proxysynthetix_i.setTarget(Proxyable(new_Synthetix_contract)); + // Ensure the Synthetix contract can write to its TokenState contract; + tokenstatesynthetix_i.setAssociatedContract(new_Synthetix_contract); + // Ensure the legacy RewardEscrow contract is connected to the Synthetix contract; + rewardescrow_i.setSynthetix(ISynthetix(new_Synthetix_contract)); + // Ensure the RewardsDistribution has Synthetix set as its authority for distribution; + rewardsdistribution_i.setAuthority(new_Synthetix_contract); + + // NOMINATE OWNERSHIP back to owner for aforementioned contracts + nominateAll(); + } + + function acceptAll() internal { + address[] memory contracts = contractsRequiringOwnership(); + for (uint i = 0; i < contracts.length; i++) { + Owned(contracts[i]).acceptOwnership(); + } + } + + function nominateAll() internal { + address[] memory contracts = contractsRequiringOwnership(); + for (uint i = 0; i < contracts.length; i++) { + returnOwnership(contracts[i]); + } + } + + function addressresolver_importAddresses_0() internal { + bytes32[] memory addressresolver_importAddresses_names_0_0 = new bytes32[](1); + addressresolver_importAddresses_names_0_0[0] = bytes32("Synthetix"); + address[] memory addressresolver_importAddresses_destinations_0_1 = new address[](1); + addressresolver_importAddresses_destinations_0_1[0] = address(new_Synthetix_contract); + addressresolver_i.importAddresses( + addressresolver_importAddresses_names_0_0, + addressresolver_importAddresses_destinations_0_1 + ); + } + + function addressresolver_rebuildCaches_1() internal { + MixinResolver[] memory addressresolver_rebuildCaches_destinations_1_0 = new MixinResolver[](20); + addressresolver_rebuildCaches_destinations_1_0[0] = MixinResolver(0xFAd53Cc9480634563E8ec71E8e693Ffd07981d38); + addressresolver_rebuildCaches_destinations_1_0[1] = MixinResolver(0x8e9757479D5ad4E7f9d951B60d39F5220b893d6c); + addressresolver_rebuildCaches_destinations_1_0[2] = MixinResolver(0xf79603a71144e415730C1A6f57F366E4Ea962C00); + addressresolver_rebuildCaches_destinations_1_0[3] = MixinResolver(0xaeA0065E146FD75Dc24465961a583827284D405a); + addressresolver_rebuildCaches_destinations_1_0[4] = MixinResolver(0xab4688E54A216aB3813438D30603Bf855648AF8d); + addressresolver_rebuildCaches_destinations_1_0[5] = MixinResolver(0x62922670313bf6b41C580143d1f6C173C5C20019); + addressresolver_rebuildCaches_destinations_1_0[6] = MixinResolver(0x39Ea01a0298C315d149a490E34B59Dbf2EC7e48F); + addressresolver_rebuildCaches_destinations_1_0[7] = MixinResolver(0x94f864e55c77E07C2C7BF7bFBc334b7a8123442A); + addressresolver_rebuildCaches_destinations_1_0[8] = MixinResolver(new_Synthetix_contract); + addressresolver_rebuildCaches_destinations_1_0[9] = MixinResolver(0x83105D7CDd2fd9b8185BFF1cb56bB1595a618618); + addressresolver_rebuildCaches_destinations_1_0[10] = MixinResolver(0xd1cad1A569E70d2Df4C8ed43d3cC93DBE16285dE); + addressresolver_rebuildCaches_destinations_1_0[11] = MixinResolver(0x10A5F7D9D65bCc2734763444D4940a31b109275f); + addressresolver_rebuildCaches_destinations_1_0[12] = MixinResolver(0xa8E31E3C38aDD6052A9407298FAEB8fD393A6cF9); + addressresolver_rebuildCaches_destinations_1_0[13] = MixinResolver(0xE1cc2332852B2Ac0dA59A1f9D3051829f4eF3c1C); + addressresolver_rebuildCaches_destinations_1_0[14] = MixinResolver(0xfb020CA7f4e8C4a5bBBe060f59a249c6275d2b69); + addressresolver_rebuildCaches_destinations_1_0[15] = MixinResolver(0xdc883b9d9Ee16f74bE08826E68dF4C9D9d26e8bD); + addressresolver_rebuildCaches_destinations_1_0[16] = MixinResolver(0xBb5b03E920cF702De5A3bA9Fc1445aF4B3919c88); + addressresolver_rebuildCaches_destinations_1_0[17] = MixinResolver(0xdAe6C79c46aB3B280Ca28259000695529cbD1339); + addressresolver_rebuildCaches_destinations_1_0[18] = MixinResolver(0x1cB004a8e84a5CE95C1fF895EE603BaC8EC506c7); + addressresolver_rebuildCaches_destinations_1_0[19] = MixinResolver(0x5D4C724BFe3a228Ff0E29125Ac1571FE093700a4); + addressresolver_i.rebuildCaches(addressresolver_rebuildCaches_destinations_1_0); + } + + function addressresolver_rebuildCaches_2() internal { + MixinResolver[] memory addressresolver_rebuildCaches_destinations_2_0 = new MixinResolver[](2); + addressresolver_rebuildCaches_destinations_2_0[0] = MixinResolver(0x07C1E81C345A7c58d7c24072EFc5D929BD0647AD); + addressresolver_rebuildCaches_destinations_2_0[1] = MixinResolver(0x7A3d898b717e50a96fd8b232E9d15F0A547A7eeb); + addressresolver_i.rebuildCaches(addressresolver_rebuildCaches_destinations_2_0); + } +} diff --git a/funding.json b/funding.json new file mode 100644 index 000000000..29447d929 --- /dev/null +++ b/funding.json @@ -0,0 +1,5 @@ +{ + "opRetro": { + "projectId": "0xcf10a15439ef8c56e1b6c22641544012bfd032c7b584d1160a7d743cb770875b" + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 693e41de6..dbcd2810a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "synthetix", - "version": "2.101.2", + "version": "2.101.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "synthetix", - "version": "2.101.2", + "version": "2.101.3", "license": "MIT", "dependencies": { "@nomiclabs/hardhat-etherscan": "^3.1.0", @@ -59,7 +59,7 @@ "execa": "^4.1.0", "fs-extra": "^9.0.1", "hardhat": "^2.12.7", - "hardhat-cannon": "^2.11.20", + "hardhat-cannon": "^2.12.4", "hardhat-gas-reporter": "^1.0.9", "hardhat-interact": "^0.2.3", "husky": "^4.3.0", @@ -3823,9 +3823,9 @@ } }, "node_modules/@usecannon/builder": { - "version": "2.11.21", - "resolved": "https://registry.npmjs.org/@usecannon/builder/-/builder-2.11.21.tgz", - "integrity": "sha512-B3g/vXXi0COVX2rN1Gq0u3Kl04PtzYM7rWVAnJxlAPfGRww034fJ1PLs+tzkzPzc+lzGOXY5Wmyp1RYD/qpN0g==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/@usecannon/builder/-/builder-2.12.4.tgz", + "integrity": "sha512-r4Sr0unFvaPZL6d33Ra5g/L5znp0QRqs+pHwqF8MdRZzpTQOd4QlL5yTHfERjjnpXeJ5aZN+/jmwnAYgCOIv5g==", "dev": true, "dependencies": { "@synthetixio/router": "^3.3.7", @@ -3839,7 +3839,7 @@ "promise-events": "^0.2.4", "typedoc-plugin-markdown": "^3.17.1", "typestub-ipfs-only-hash": "^4.0.0", - "viem": "^2.6.1", + "viem": "^2.9.3", "zod": "^3.22.4" }, "engines": { @@ -3949,14 +3949,14 @@ } }, "node_modules/@usecannon/cli": { - "version": "2.11.21", - "resolved": "https://registry.npmjs.org/@usecannon/cli/-/cli-2.11.21.tgz", - "integrity": "sha512-ttjK74TjfRqp2hYkCSJMsVnajFYw86rjHiPm6Hp6ntKyx6v6SIlYkCHTLv8KhAWtC836AyqSEbb0lkBrUOKmrA==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/@usecannon/cli/-/cli-2.12.4.tgz", + "integrity": "sha512-BOTU0UCV1vJaEcGcq2GLEb7ica+xecdPyjXNClnR+HPq6dcIjd56juev64rSbzkGoDWEM9ENsWKXHa3X8NRDag==", "dev": true, "dependencies": { "@iarna/toml": "^3.0.0", "@synthetixio/wei": "^2.74.1", - "@usecannon/builder": "2.11.21", + "@usecannon/builder": "2.12.4", "abitype": "^1.0.0", "chalk": "^4.1.2", "commander": "^9.5.0", @@ -3965,13 +3965,12 @@ "fastq": "^1.15.0", "fs-extra": "^10.1.0", "lodash": "^4.17.21", - "promise-timeout": "^1.3.0", "prompts": "^2.4.2", "semver": "^7.3.7", "table": "^6.8.0", "tildify": "2.0.0", "untildify": "^4.0.0", - "viem": "^2.6.1", + "viem": "^2.9.3", "znv": "^0.4.0", "zod": "^3.22.4" }, @@ -4171,9 +4170,9 @@ } }, "node_modules/@usecannon/cli/node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -4927,9 +4926,9 @@ } }, "node_modules/axios-retry": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.0.0.tgz", - "integrity": "sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.1.0.tgz", + "integrity": "sha512-svdth4H00yhlsjBbjfLQ/sMLkXqeLxhiFC1nE1JtkN/CIssGxqk0UwTEdrVjwA2gr3yJkAulwvDSIm4z4HyPvg==", "dev": true, "dependencies": { "is-retry-allowed": "^2.2.0" @@ -9971,18 +9970,18 @@ } }, "node_modules/hardhat-cannon": { - "version": "2.11.21", - "resolved": "https://registry.npmjs.org/hardhat-cannon/-/hardhat-cannon-2.11.21.tgz", - "integrity": "sha512-GjFWCzl9dAhzV3P2M5KUM6yH3AJUkySB12VJtW1O0a1zRcO0dHj6Rjb0ChktGcT0HAzY+erPIM7eln9qIMZdtQ==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/hardhat-cannon/-/hardhat-cannon-2.12.4.tgz", + "integrity": "sha512-VW7nN6KM+07r/uxfpSX5Wdk+ngejLDXZo6fe2D+DuyACGy8vo/y2LdN4GEzHU4MAL6AIKMyRHC/01+VIomtq3w==", "dev": true, "dependencies": { "@iarna/toml": "^3.0.0", - "@usecannon/builder": "2.11.21", - "@usecannon/cli": "2.11.21", + "@usecannon/builder": "2.12.4", + "@usecannon/cli": "2.12.4", "chalk": "^4.1.2", "debug": "^4.3.3", "fs-extra": "^10.0.1", - "viem": "^2.6.1" + "viem": "^2.9.3" }, "peerDependencies": { "hardhat": ">=2.0.0" @@ -15162,12 +15161,6 @@ "node": ">=8.0.0" } }, - "node_modules/promise-timeout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz", - "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==", - "dev": true - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -18084,9 +18077,9 @@ } }, "node_modules/typedoc": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.12.tgz", - "integrity": "sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==", + "version": "0.25.13", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", + "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", "dev": true, "peer": true, "dependencies": { @@ -18141,9 +18134,9 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "peer": true, "dependencies": { @@ -18458,9 +18451,9 @@ } }, "node_modules/viem": { - "version": "2.8.11", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.8.11.tgz", - "integrity": "sha512-TMmHle2k6gZ0+LENMr5ulb/bKGMTaCFj5V3sbS52OGCnhxI4t46NDIk6RIIAiaPR4AkwZPf31LY5LORjpb02Tg==", + "version": "2.9.21", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.9.21.tgz", + "integrity": "sha512-8GtxPjPGpiN5cmr19zSX9mb1LX/eON3MPxxAd3QmyUFn69Rp566zlREOqE7zM35y5yX59fXwnz6O3X7e9+C9zg==", "dev": true, "funding": [ { @@ -23316,9 +23309,9 @@ "dev": true }, "@usecannon/builder": { - "version": "2.11.21", - "resolved": "https://registry.npmjs.org/@usecannon/builder/-/builder-2.11.21.tgz", - "integrity": "sha512-B3g/vXXi0COVX2rN1Gq0u3Kl04PtzYM7rWVAnJxlAPfGRww034fJ1PLs+tzkzPzc+lzGOXY5Wmyp1RYD/qpN0g==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/@usecannon/builder/-/builder-2.12.4.tgz", + "integrity": "sha512-r4Sr0unFvaPZL6d33Ra5g/L5znp0QRqs+pHwqF8MdRZzpTQOd4QlL5yTHfERjjnpXeJ5aZN+/jmwnAYgCOIv5g==", "dev": true, "requires": { "@synthetixio/router": "^3.3.7", @@ -23332,7 +23325,7 @@ "promise-events": "^0.2.4", "typedoc-plugin-markdown": "^3.17.1", "typestub-ipfs-only-hash": "^4.0.0", - "viem": "^2.6.1", + "viem": "^2.9.3", "zod": "^3.22.4" }, "dependencies": { @@ -23411,14 +23404,14 @@ } }, "@usecannon/cli": { - "version": "2.11.21", - "resolved": "https://registry.npmjs.org/@usecannon/cli/-/cli-2.11.21.tgz", - "integrity": "sha512-ttjK74TjfRqp2hYkCSJMsVnajFYw86rjHiPm6Hp6ntKyx6v6SIlYkCHTLv8KhAWtC836AyqSEbb0lkBrUOKmrA==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/@usecannon/cli/-/cli-2.12.4.tgz", + "integrity": "sha512-BOTU0UCV1vJaEcGcq2GLEb7ica+xecdPyjXNClnR+HPq6dcIjd56juev64rSbzkGoDWEM9ENsWKXHa3X8NRDag==", "dev": true, "requires": { "@iarna/toml": "^3.0.0", "@synthetixio/wei": "^2.74.1", - "@usecannon/builder": "2.11.21", + "@usecannon/builder": "2.12.4", "abitype": "^1.0.0", "chalk": "^4.1.2", "commander": "^9.5.0", @@ -23427,13 +23420,12 @@ "fastq": "^1.15.0", "fs-extra": "^10.1.0", "lodash": "^4.17.21", - "promise-timeout": "^1.3.0", "prompts": "^2.4.2", "semver": "^7.3.7", "table": "^6.8.0", "tildify": "2.0.0", "untildify": "^4.0.0", - "viem": "^2.6.1", + "viem": "^2.9.3", "znv": "^0.4.0", "zod": "^3.22.4" }, @@ -23578,9 +23570,9 @@ } }, "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -24191,9 +24183,9 @@ } }, "axios-retry": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.0.0.tgz", - "integrity": "sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.1.0.tgz", + "integrity": "sha512-svdth4H00yhlsjBbjfLQ/sMLkXqeLxhiFC1nE1JtkN/CIssGxqk0UwTEdrVjwA2gr3yJkAulwvDSIm4z4HyPvg==", "dev": true, "requires": { "is-retry-allowed": "^2.2.0" @@ -28382,18 +28374,18 @@ } }, "hardhat-cannon": { - "version": "2.11.21", - "resolved": "https://registry.npmjs.org/hardhat-cannon/-/hardhat-cannon-2.11.21.tgz", - "integrity": "sha512-GjFWCzl9dAhzV3P2M5KUM6yH3AJUkySB12VJtW1O0a1zRcO0dHj6Rjb0ChktGcT0HAzY+erPIM7eln9qIMZdtQ==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/hardhat-cannon/-/hardhat-cannon-2.12.4.tgz", + "integrity": "sha512-VW7nN6KM+07r/uxfpSX5Wdk+ngejLDXZo6fe2D+DuyACGy8vo/y2LdN4GEzHU4MAL6AIKMyRHC/01+VIomtq3w==", "dev": true, "requires": { "@iarna/toml": "^3.0.0", - "@usecannon/builder": "2.11.21", - "@usecannon/cli": "2.11.21", + "@usecannon/builder": "2.12.4", + "@usecannon/cli": "2.12.4", "chalk": "^4.1.2", "debug": "^4.3.3", "fs-extra": "^10.0.1", - "viem": "^2.6.1" + "viem": "^2.9.3" }, "dependencies": { "ansi-styles": { @@ -32256,12 +32248,6 @@ "integrity": "sha512-GCM6DmJcSCC8XboZIzYJAlADwkIS1P54XFUJQYhB7dpE7rtXPzPrT13dsV4Qm0FMCKptwMTyF8ZCir803RfKzA==", "dev": true }, - "promise-timeout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz", - "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==", - "dev": true - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -34527,9 +34513,9 @@ } }, "typedoc": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.12.tgz", - "integrity": "sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw==", + "version": "0.25.13", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", + "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", "dev": true, "peer": true, "requires": { @@ -34557,9 +34543,9 @@ "peer": true }, "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "peer": true, "requires": { @@ -34813,9 +34799,9 @@ } }, "viem": { - "version": "2.8.11", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.8.11.tgz", - "integrity": "sha512-TMmHle2k6gZ0+LENMr5ulb/bKGMTaCFj5V3sbS52OGCnhxI4t46NDIk6RIIAiaPR4AkwZPf31LY5LORjpb02Tg==", + "version": "2.9.21", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.9.21.tgz", + "integrity": "sha512-8GtxPjPGpiN5cmr19zSX9mb1LX/eON3MPxxAd3QmyUFn69Rp566zlREOqE7zM35y5yX59fXwnz6O3X7e9+C9zg==", "dev": true, "requires": { "@adraffy/ens-normalize": "1.10.0", diff --git a/package.json b/package.json index 013b38119..5178b0add 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "synthetix", - "version": "2.101.2", + "version": "2.101.3", "license": "MIT", "author": "Synthetix", "description": "The smart contracts which make up the Synthetix system. (synthetix.io)", @@ -106,7 +106,7 @@ "execa": "^4.1.0", "fs-extra": "^9.0.1", "hardhat": "^2.12.7", - "hardhat-cannon": "^2.11.20", + "hardhat-cannon": "^2.12.4", "hardhat-gas-reporter": "^1.0.9", "hardhat-interact": "^0.2.3", "husky": "^4.3.0", diff --git a/publish/deployed/mainnet-ovm/deployment.json b/publish/deployed/mainnet-ovm/deployment.json index f10359e42..df7e0391f 100644 --- a/publish/deployed/mainnet-ovm/deployment.json +++ b/publish/deployed/mainnet-ovm/deployment.json @@ -241,17 +241,17 @@ }, "Synthetix": { "name": "Synthetix", - "address": "0x5A41F634958dB9183e9d0d1Cd8Dee439B6ABb3BF", + "address": "0x3f2A1F997Ef089798d19473D96be484Aeb3E4ECf", "source": "MintableSynthetix", - "link": "https://explorer.optimism.io/address/0x5A41F634958dB9183e9d0d1Cd8Dee439B6ABb3BF", - "timestamp": "2024-03-07T17:39:49.000Z", - "txn": "https://explorer.optimism.io/tx/0x79f53e5555baed5aea17c47a6b89dbb1867ef59cc171c757a465858bea25f0f4", + "link": "https://explorer.optimism.io/address/0x3f2A1F997Ef089798d19473D96be484Aeb3E4ECf", + "timestamp": "2024-08-20T19:46:15.000Z", + "txn": "https://explorer.optimism.io/tx/0x6d7880c256a6a7a883c4ea17efadfeac1b27d1a758c345a344fba504dc17b4cc", "network": "mainnet", "constructorArgs": [ "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", "0xB9c6CA25452E7f6D0D3340CE1e9B573421afc2eE", "0x6d4a64C57612841c2C6745dB2a4E4db34F002D20", - "95335819255244731861652573", + "102057832127604526258614866", "0x1Cb059b7e74fD21665968C908806143E744D5F30" ] }, @@ -22873,7 +22873,7 @@ } }, "MintableSynthetix": { - "bytecode": "60806040523480156200001157600080fd5b5060405162005d8738038062005d87833981016040819052620000349162000315565b84848484848085856040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e000000000000000000815250604051806040016040528060038152602001620a69cb60eb1b81525086601289868160006001600160a01b0316816001600160a01b03161415620000d35760405162461bcd60e51b8152600401620000ca9062000463565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383161781556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91620001209184906200042b565b60405180910390a1506000546001600160a01b0316620001545760405162461bcd60e51b8152600401620000ca9062000451565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e90620001a19083906200041b565b60405180910390a150600480546001600160a01b0319166001600160a01b0388161790558451620001da90600590602088019062000243565b508351620001f090600690602087019062000243565b50506007919091556008805460ff191660ff90921691909117610100600160a81b0319166101006001600160a01b0397909716969096029590951790945550620004e19c50505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028657805160ff1916838001178555620002b6565b82800160010185558215620002b6579182015b82811115620002b657825182559160200191906001019062000299565b50620002c4929150620002c8565b5090565b620002e591905b80821115620002c45760008155600101620002cf565b90565b8051620002f581620004b1565b92915050565b8051620002f581620004cb565b8051620002f581620004d6565b600080600080600060a086880312156200032e57600080fd5b60006200033c8888620002e8565b95505060206200034f88828901620002fb565b94505060406200036288828901620002e8565b9350506060620003758882890162000308565b92505060806200038888828901620002e8565b9150509295509295909350565b620003a081620004a4565b82525050565b620003a0816200047e565b6000620003c060118362000475565b7013dddb995c881b5d5cdd081899481cd95d607a1b815260200192915050565b6000620003ef60198362000475565b7f4f776e657220616464726573732063616e6e6f74206265203000000000000000815260200192915050565b60208101620002f5828462000395565b604081016200043b828562000395565b6200044a6020830184620003a6565b9392505050565b60208082528101620002f581620003b1565b60208082528101620002f581620003e0565b90815260200190565b6000620002f58262000498565b6000620002f5826200047e565b6001600160a01b031690565b6000620002f5826200048b565b620004bc816200047e565b8114620004c857600080fd5b50565b620004bc816200048b565b620004bc81620002e5565b61589680620004f16000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c8063704e7b851161022b578063a311c7c211610130578063d67bdd25116100b8578063e8e09b8b11610087578063e8e09b8b146108aa578063e90dd9e2146108bd578063ec556889146108c5578063edef719a146108cd578063ee52a2f3146108e057610428565b8063d67bdd2514610874578063d8a1f76f1461087c578063dbf633401461088f578063dd62ed3e1461089757610428565b8063af086c7e116100ff578063af086c7e14610820578063bc67f83214610828578063c2bf38801461083b578063c836fa0a1461084e578063d37c4d8b1461086157610428565b8063a311c7c2146107d4578063a5fdc5de146107e7578063a9059cbb146107fa578063ace88afd1461080d57610428565b80638a290014116101b357806395d89b411161018257806395d89b411461078b57806397107d6d146107935780639741fb22146107a6578063987757dd146107ae5780639f769807146107c157610428565b80638a290014146107555780638da5cb5b1461076857806391e56b68146107705780639324cac71461078357610428565b806379ba5097116101fa57806379ba5097146106fe578063835e119c1461070657806383d625d414610719578063843588431461072c578063899ffef41461074d57610428565b8063704e7b85146106bb57806370a08231146106ce57806372cb051f146106e157806374185360146106f657610428565b80632c955fa7116103315780634e99bda9116102b95780635e22846a116102885780635e22846a1461065c578063666ed4f11461066f5780636ac0bf9c146106825780636c00f310146106955780636f01a986146106a857610428565b80634e99bda914610629578063528c7efb1461063157806353a47bb7146106395780635af090ef1461064e57610428565b8063313ce56711610300578063313ce567146105d5578063320223db146105dd57806332608039146105f05780633e89b9e51461060357806344b3e9231461061657610428565b80632c955fa7146105875780632d3169eb1461059a5780632e0f2625146105ad57806330ead760146105c257610428565b806316b2213f116103b457806323b872dd1161038357806323b872dd1461053e5780632621716f14610551578063295da87d146105645780632a905318146105775780632af64bd31461057f57610428565b806316b2213f1461050857806318160ddd1461051b57806318821400146105235780631fce304d1461052b57610428565b8063095ea7b3116103fb578063095ea7b31461048a5780630e30963c146104aa5780631137aedf146104cb5780631249c58b146104ed5780631627540c146104f557610428565b806303fbc5471461042d57806304f3bcec1461043757806305b3c1c91461045557806306fdde0314610475575b600080fd5b6104356108f3565b005b61043f610ae0565b60405161044c91906154fe565b60405180910390f35b610468610463366004614268565b610af4565b60405161044c919061535f565b61047d610b81565b60405161044c919061550c565b61049d61049836600461432b565b610c0f565b60405161044c9190615351565b6104bd6104b836600461457e565b610c9c565b60405161044c9291906156e7565b6104de6104d9366004614268565b610cb0565b60405161044c93929190615403565b61049d610d45565b610435610503366004614268565b610d52565b610468610516366004614268565b610db0565b610468610de5565b61047d610deb565b61049d610539366004614542565b610e24565b61049d61054c3660046142de565b610eb9565b61046861055f366004614268565b610ef8565b610435610572366004614542565b6110d9565b61047d61115a565b61049d611179565b610435610595366004614268565b611295565b6104356105a836600461457e565b6112e1565b6105b5611397565b60405161044c919061572a565b6104686105d03660046145c1565b61139c565b6105b561145a565b6104356105eb366004614268565b611463565b61043f6105fe366004614542565b6114af565b610468610611366004614542565b611534565b610468610624366004614636565b61156c565b61049d61157f565b61049d6115fe565b6106416117de565b60405161044c91906151bb565b6104686106243660046145c1565b61049d61066a366004614268565b6117ed565b61043561067d36600461432b565b611819565b610468610690366004614268565b61182f565b6104356106a3366004614475565b611937565b6104356106b636600461435b565b6119f9565b61049d6106c936600461432b565b611ab2565b6104686106dc366004614268565b611add565b6106e9611b0f565b60405161044c9190615340565b610435611b8d565b610435611cdf565b61043f610714366004614542565b611d7b565b610468610727366004614542565b611db0565b61073f61073a366004614268565b611de8565b60405161044c929190615389565b6106e961211d565b610435610763366004614542565b612191565b6106416121db565b61046861077e3660046143ee565b6121ea565b6104686122aa565b61047d6122b5565b6104356107a1366004614268565b612310565b610435612363565b6104de6107bc366004614542565b6123dc565b6104356107cf3660046146ab565b612452565b6104686107e2366004614268565b61247e565b6104686107f5366004614268565b6124b3565b61049d61080836600461432b565b6124e8565b61043561081b36600461435b565b612532565b61043561257f565b610435610836366004614268565b6125c8565b61043561084936600461432b565b6125f2565b61046861085c36600461438d565b612676565b61046861086f36600461432b565b612734565b6106416127bb565b61043561088a366004614542565b6127ca565b610468612866565b6104686108a53660046142a4565b6128e0565b6104356108b836600461432b565b612914565b61043f612962565b61043f612971565b6104356108db36600461432b565b612980565b6104686108ee3660046145a0565b612aa0565b6108fb612b5c565b60085460405163dacb2d0160e01b815260009161010090046001600160a01b03169063dacb2d019061092f906004016156c9565b60206040518083038186803b15801561094757600080fd5b505afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097f9190810190614286565b60085460405163dacb2d0160e01b81529192506000916101009091046001600160a01b03169063dacb2d01906109b790600401615641565b60206040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a079190810190614286565b9050816001600160a01b0316816001600160a01b03161415610a445760405162461bcd60e51b8152600401610a3b906156b9565b60405180910390fd5b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610a76918791016151bb565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac69190810190614560565b90508015610adb57610ad9838383612b86565b505b505050565b60085461010090046001600160a01b031681565b6000610afe612d62565b6001600160a01b03166305b3c1c9836040518263ffffffff1660e01b8152600401610b2991906151bb565b60206040518083038186803b158015610b4157600080fd5b505afa158015610b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b799190810190614560565b90505b919050565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c075780601f10610bdc57610100808354040283529160200191610c07565b820191906000526020600020905b815481529060010190602001808311610bea57829003601f168201915b505050505081565b6000610c19612d76565b60035460048054604051633691826360e21b81526001600160a01b03938416939091169163da46098c91610c5391859189918991016152ad565b600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050610c90818585612db5565b60019150505b92915050565b600080610ca7612e35565b94509492505050565b6000806000610cbd612d62565b6001600160a01b0316631137aedf856040518263ffffffff1660e01b8152600401610ce891906151bb565b60606040518083038186803b158015610d0057600080fd5b505afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d389190810190614747565b9250925092509193909250565b6000610d4f612e35565b90565b610d5a612b5c565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290610da59083906151bb565b60405180910390a150565b6000610dba612d62565b6001600160a01b03166316b2213f836040518263ffffffff1660e01b8152600401610b2991906151bb565b60075481565b6040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e00000000000000000081525081565b600080610e2f612e4d565b6003546040516301670a7b60e21b81526001600160a01b039283169263059c29ec92610e62929116908790600401615325565b60206040518083038186803b158015610e7a57600080fd5b505afa158015610e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eb29190810190614560565b1192915050565b6000610ec3612e64565b610ecb612eb9565b610ed58483612f0d565b50600354610eee906001600160a01b03168585856131de565b90505b9392505050565b600080610f0361328a565b6001600160a01b031663204b676a846040518263ffffffff1660e01b8152600401610f2e91906151bb565b60206040518083038186803b158015610f4657600080fd5b505afa158015610f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f7e9190810190614560565b90506000610f8a614133565b60005b838110156110c057610f9d61328a565b6001600160a01b031663ae58254987836040518363ffffffff1660e01b8152600401610fca929190615325565b60206040518083038186803b158015610fe257600080fd5b505afa158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101a9190810190614560565b925061102461328a565b6001600160a01b03166345626bd687856040518363ffffffff1660e01b8152600401611051929190615325565b604080518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110a091908101906146c9565b6020810151909250156110b8579350610b7c92505050565b600101610f8d565b5060405162461bcd60e51b8152600401610a3b90615577565b6110e16132a6565b6110e9612d76565b6110f1612d62565b60035460405163b06e8c6560e01b81526001600160a01b039283169263b06e8c6592611124929116908590600401615325565b600060405180830381600087803b15801561113e57600080fd5b505af1158015611152573d6000803e3d6000fd5b505050505b50565b604051806040016040528060038152602001620a69cb60eb1b81525081565b6000606061118561211d565b905060005b815181101561128c5760008282815181106111a157fe5b602090810291909101810151600081815260099092526040918290205460085492516321f8a72160e01b81529193506001600160a01b0390811692610100900416906321f8a721906111f790859060040161535f565b60206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112479190810190614286565b6001600160a01b031614158061127257506000818152600960205260409020546001600160a01b0316155b156112835760009350505050610d4f565b5060010161118a565b50600191505090565b61129d6132a6565b6112a5612d76565b6112ad612d62565b60035460405163159fa0d560e11b81526001600160a01b0392831692632b3f41aa92611124928692909116906004016151d7565b6112e96132e6565b6002546040516001600160a01b039091169063907dff979061131390869086908690602001615403565b604051602081830303815290604052600260405161133090615143565b6040519081900381206001600160e01b031960e086901b16825261135f9392918a90600090819060040161547d565b600060405180830381600087803b15801561137957600080fd5b505af115801561138d573d6000803e3d6000fd5b5050505050505050565b601281565b600085846113aa828261331e565b6113b2612d76565b6113ba612e4d565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d2926113fc9291169081908d908d908d9084906000908f908f90600401615227565b6040805180830381600087803b15801561141557600080fd5b505af1158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144d9190810190614717565b5098975050505050505050565b60085460ff1681565b61146b6132a6565b611473612d76565b61147b612d62565b60035460405163fd864ccf60e01b81526001600160a01b039283169263fd864ccf92611124928692909116906004016151d7565b60006114b9612d62565b6001600160a01b03166332608039836040518263ffffffff1660e01b81526004016114e4919061535f565b60206040518083038186803b1580156114fc57600080fd5b505afa158015611510573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b79919081019061468d565b600061153e612d62565b6001600160a01b0316637b1001b78360016040518363ffffffff1660e01b8152600401610b2992919061537b565b6000611576612e35565b95945050505050565b6000611589612d62565b6001600160a01b0316634e99bda96040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c157600080fd5b505afa1580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f99190810190614524565b905090565b6000611608612eb9565b611610612d76565b6003546001600160a01b031661162461337f565b6001600160a01b031663c00007b0826040518263ffffffff1660e01b815260040161164f91906151bb565b600060405180830381600087803b15801561166957600080fd5b505af115801561167d573d6000803e3d6000fd5b5050505060008061168c612d62565b6001600160a01b03166372c658168460016040518363ffffffff1660e01b81526004016116ba92919061530a565b606060405180830381600087803b1580156116d457600080fd5b505af11580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061170c9190810190614747565b5091509150600081116117315760405162461bcd60e51b8152600401610a3b9061566f565b61173d8383838661339e565b60006117518461174b61337f565b8561341a565b9050806117705760405162461bcd60e51b8152600401610a3b90615614565b61177861337f565b6001600160a01b0316633c6b16ab846040518263ffffffff1660e01b81526004016117a3919061535f565b600060405180830381600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b5092965050505050505090565b6001546001600160a01b031681565b60006117f7612eb9565b6117ff612d76565b600354610b799083906000906001600160a01b0316613427565b611821613829565b61182b8282613861565b5050565b6000611839612d62565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938793909116916370a0823191611874918591016151bb565b60206040518083038186803b15801561188c57600080fd5b505afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118c49190810190614560565b6040518363ffffffff1660e01b81526004016118e1929190615325565b604080518083038186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061193091908101906146e7565b5092915050565b61193f6132e6565b6002546040516001600160a01b039091169063907dff979061196d90889088908890889088906020016153b7565b604051602081830303815290604052600260405161198a9061516e565b604051809103902061199b8b61390d565b6000806040518763ffffffff1660e01b81526004016119bf9695949392919061547d565b600060405180830381600087803b1580156119d957600080fd5b505af11580156119ed573d6000803e3d6000fd5b50505050505050505050565b611a016132e6565b6002546040516001600160a01b039091169063907dff9790611a299085908590602001615389565b6040516020818303038152906040526002604051611a4690615184565b6040518091039020611a578861390d565b6000806040518763ffffffff1660e01b8152600401611a7b9695949392919061547d565b600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b50505050505050565b6000611abc612eb9565b611ac4612d76565b600354610ef190849084906001600160a01b0316613427565b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610b29918691016151bb565b6060611b19612d62565b6001600160a01b03166372cb051f6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b5157600080fd5b505afa158015611b65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115f991908101906144ef565b6060611b9761211d565b905060005b815181101561182b576000828281518110611bb357fe5b602002602001015190506000600860019054906101000a90046001600160a01b03166001600160a01b031663dacb2d018384604051602001611bf591906151a5565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611c21929190615397565b60206040518083038186803b158015611c3957600080fd5b505afa158015611c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c719190810190614286565b6000838152600960205260409081902080546001600160a01b0319166001600160a01b038416179055519091507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa6890611ccd908490849061536d565b60405180910390a15050600101611b9c565b6001546001600160a01b03163314611d095760405162461bcd60e51b8152600401610a3b9061553a565b6000546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c92611d4c926001600160a01b03918216929116906151d7565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000611d85612d62565b6001600160a01b031663835e119c836040518263ffffffff1660e01b81526004016114e4919061535f565b6000611dba612d62565b6001600160a01b0316637b1001b78360006040518363ffffffff1660e01b8152600401610b2992919061537b565b600080611df3612eb9565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a72190611e429075446562744d69677261746f724f6e457468657265756d60501b9060040161535f565b60206040518083038186803b158015611e5a57600080fd5b505afa158015611e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e929190810190614286565b9050336001600160a01b0382161480611f4e57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190611ee9906b131959d858de53585c9ad95d60a21b9060040161535f565b60206040518083038186803b158015611f0157600080fd5b505afa158015611f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f399190810190614286565b6001600160a01b0316336001600160a01b0316145b611f6a5760405162461bcd60e51b8152600401610a3b90615624565b600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191611f99918891016151bb565b60206040518083038186803b158015611fb157600080fd5b505afa158015611fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fe99190810190614560565b9150811561201f576000611ffe85338561341a565b90508061201d5760405162461bcd60e51b8152600401610a3b906155c4565b505b61202761328a565b6001600160a01b031663326a3cfb856040518263ffffffff1660e01b815260040161205291906151bb565b60206040518083038186803b15801561206a57600080fd5b505afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a29190810190614560565b92508215612117576120b261328a565b6001600160a01b031663de065f6785338660006040518563ffffffff1660e01b81526004016120e494939291906151f2565b600060405180830381600087803b1580156120fe57600080fd5b505af1158015612112573d6000803e3d6000fd5b505050505b50915091565b606080612128613919565b60408051600180825281830190925291925060609190602080830190803883390190505090507453796e746865746978427269646765546f4261736560581b8160008151811061217457fe5b60200260200101818152505061218a8282613a62565b9250505090565b6121996132a6565b6121a1612d76565b6121a9612d62565b6003546040516285c0d160e31b81526001600160a01b039283169263042e068892611124929116908590600401615325565b6000546001600160a01b031681565b600085846121f8828261331e565b612200612d76565b612208612e4d565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d29261224b928e92909116908d908d908d9085906000908f908f90600401615227565b6040805180830381600087803b15801561226457600080fd5b505af1158015612278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061229c9190810190614717565b509998505050505050505050565b631cd554d160e21b81565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c075780601f10610bdc57610100808354040283529160200191610c07565b612318612b5c565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e90610da59083906151c9565b61236b6132a6565b612373612d76565b61237b612d62565b6003546040516324beb82560e11b81526001600160a01b039283169263497d704a926123ac929116906004016151bb565b600060405180830381600087803b1580156123c657600080fd5b505af1158015610ad9573d6000803e3d6000fd5b565b60008060006123e9612d76565b6123f1612e4d565b6003546040516306c5a00b60e21b81526001600160a01b0392831692631b16802c92612424929116908890600401615325565b606060405180830381600087803b15801561243e57600080fd5b505af1158015610d14573d6000803e3d6000fd5b61245a613b17565b600480546001600160a01b0319166001600160a01b03831617905561115781613b85565b6000612488612d62565b6001600160a01b031663a311c7c2836040518263ffffffff1660e01b8152600401610b2991906151bb565b60006124bd612d62565b6001600160a01b031663a5fdc5de836040518263ffffffff1660e01b8152600401610b2991906151bb565b60006124f2612e64565b6124fa612eb9565b600354612510906001600160a01b031683612f0d565b50600354612528906001600160a01b0316848461341a565b5060019392505050565b61253a6132e6565b6002546040516001600160a01b039091169063907dff97906125629085908590602001615389565b6040516020818303038152906040526002604051611a4690615138565b6125876132a6565b61258f612d76565b612597612d62565b60035460405163644bb89960e11b81526001600160a01b039283169263c8977132926123ac929116906004016151bb565b6125d0613bf7565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6125fa6132a6565b612602612d76565b61260a612d62565b600354604051632694552d60e21b81526001600160a01b0392831692639a5154b4926126409287929091169086906004016152ad565b600060405180830381600087803b15801561265a57600080fd5b505af115801561266e573d6000803e3d6000fd5b505050505050565b60008382612684828261331e565b61268c612d76565b612694612e4d565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d2926126d7928c92909116908b908b908b90859060009082908290600401615227565b6040805180830381600087803b1580156126f057600080fd5b505af1158015612704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127289190810190614717565b50979650505050505050565b600061273e612d62565b6001600160a01b031663d37c4d8b84846040518363ffffffff1660e01b815260040161276b929190615325565b60206040518083038186803b15801561278357600080fd5b505afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ef19190810190614560565b6003546001600160a01b031681565b6127d2613829565b60006127dc613c21565b90506127e88183613861565b604051630b32e9c760e31b81526001600160a01b038216906359974e389061281490859060040161535f565b602060405180830381600087803b15801561282e57600080fd5b505af1158015612842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610adb9190810190614524565b6000612870612d62565b6001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b1580156128a857600080fd5b505afa1580156128bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f99190810190614560565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163dd62ed3e9161276b9187918791016151d7565b61291c6132a6565b612924612d76565b61292c612d62565b60035460405163227635b160e11b81526001600160a01b03928316926344ec6b62926126409287929091169086906004016152ad565b6004546001600160a01b031681565b6002546001600160a01b031681565b612988613829565b612990612eb9565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f6918591612a2b91869186916370a08231916129cf918791016151bb565b60206040518083038186803b1580156129e757600080fd5b505afa1580156129fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a1f9190810190614560565b9063ffffffff613c4216565b6040518363ffffffff1660e01b8152600401612a48929190615325565b600060405180830381600087803b158015612a6257600080fd5b505af1158015612a76573d6000803e3d6000fd5b50505050612a8682600083613c6a565b600754612a99908263ffffffff613c4216565b6007555050565b60008382612aae828261331e565b612ab6612d76565b612abe612e4d565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612b009291169081908b908b908b90849060009082908290600401615227565b6040805180830381600087803b158015612b1957600080fd5b505af1158015612b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b519190810190614717565b509695505050505050565b6000546001600160a01b031633146123da5760405162461bcd60e51b8152600401610a3b90615604565b60006001600160a01b03831615801590612ba957506001600160a01b0383163014155b8015612bc357506002546001600160a01b03848116911614155b612bdf5760405162461bcd60e51b8152600401610a3b9061551d565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f6918791612c1e91879186916370a08231916129cf918791016151bb565b6040518363ffffffff1660e01b8152600401612c3b929190615325565b600060405180830381600087803b158015612c5557600080fd5b505af1158015612c69573d6000803e3d6000fd5b5050600480546040516370a0823160e01b81526001600160a01b03909116935063b46310f692508691612d0891879186916370a0823191612cac918791016151bb565b60206040518083038186803b158015612cc457600080fd5b505afa158015612cd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cfc9190810190614560565b9063ffffffff613cad16565b6040518363ffffffff1660e01b8152600401612d25929190615325565b600060405180830381600087803b158015612d3f57600080fd5b505af1158015612d53573d6000803e3d6000fd5b50505050612528848484613c6a565b60006115f96524b9b9bab2b960d11b613cd2565b6002546001600160a01b03163314801590612d9c57506003546001600160a01b03163314155b156123da57600380546001600160a01b03191633179055565b6002546040516001600160a01b039091169063907dff9790612ddb90849060200161535f565b6040516020818303038152906040526003604051612df890615179565b6040518091039020612e098861390d565b612e128861390d565b60006040518763ffffffff1660e01b8152600401611a7b969594939291906154b7565b60405162461bcd60e51b8152600401610a3b906155d4565b60006115f96822bc31b430b733b2b960b91b613cd2565b6002546001600160a01b0316331415612e7c576123da565b612e8533613d2f565b15612ea157600380546001600160a01b031916331790556123da565b60405162461bcd60e51b8152600401610a3b9061569c565b612ec16140de565b6001600160a01b031663086dabd16040518163ffffffff1660e01b815260040160006040518083038186803b158015612ef957600080fd5b505afa158015610ad9573d6000803e3d6000fd5b6008546040516321f8a72160e01b815260009182916101009091046001600160a01b0316906321f8a72190612f55906b131959d858de53585c9ad95d60a21b9060040161535f565b60206040518083038186803b158015612f6d57600080fd5b505afa158015612f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fa59190810190614286565b6003549091506001600160a01b031615801590612fcf57506003546001600160a01b038281169116145b80612feb5750806001600160a01b0316846001600160a01b0316145b15612ffa576001915050610c96565b6000613004612d62565b6001600160a01b031663d37c4d8b86631cd554d160e21b6040518363ffffffff1660e01b8152600401613038929190615325565b60206040518083038186803b15801561305057600080fd5b505afa158015613064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130889190810190614560565b1115610c9057600080613099612d62565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938b93909116916370a08231916130d4918591016151bb565b60206040518083038186803b1580156130ec57600080fd5b505afa158015613100573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131249190810190614560565b6040518363ffffffff1660e01b8152600401613141929190615325565b604080518083038186803b15801561315857600080fd5b505afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061319091908101906146e7565b91509150818511156131b45760405162461bcd60e51b8152600401610a3b906155e4565b80156131d25760405162461bcd60e51b8152600401610a3b906155f4565b50600195945050505050565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163da46098c9187918991613224918891879163dd62ed3e916129cf9188918891016151d7565b6040518463ffffffff1660e01b8152600401613242939291906152ad565b600060405180830381600087803b15801561325c57600080fd5b505af1158015613270573d6000803e3d6000fd5b5050505061327f848484612b86565b90505b949350505050565b60006115f96d2932bbb0b93222b9b1b937bbab1960911b613cd2565b6132ae6140de565b6001600160a01b0316637c3125416040518163ffffffff1660e01b815260040160006040518083038186803b158015612ef957600080fd5b6132ee612e4d565b6001600160a01b0316336001600160a01b0316146123da5760405162461bcd60e51b8152600401610a3b90615567565b6133266140de565b6001600160a01b0316631ce00ba283836040518363ffffffff1660e01b8152600401613353929190615389565b60006040518083038186803b15801561336b57600080fd5b505afa15801561266e573d6000803e3d6000fd5b60006115f9704c697175696461746f725265776172647360781b613cd2565b6002546040516001600160a01b039091169063907dff97906133c890869086908690602001615702565b60405160208183030381529060405260026040516133e59061519a565b60405180910390206133f68961390d565b6000806040518763ffffffff1660e01b815260040161135f9695949392919061547d565b6000610eee848484612b86565b600061343161337f565b6001600160a01b031663c00007b0856040518263ffffffff1660e01b815260040161345c91906151bb565b600060405180830381600087803b15801561347657600080fd5b505af115801561348a573d6000803e3d6000fd5b50505050600080600061349b612d62565b6001600160a01b03166372c658168860006040518363ffffffff1660e01b81526004016134c992919061530a565b606060405180830381600087803b1580156134e357600080fd5b505af11580156134f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061351b9190810190614747565b9194509250905080156135945761353061328a565b6001600160a01b031663de065f678889848a6040518563ffffffff1660e01b815260040161356194939291906152d5565b600060405180830381600087803b15801561357b57600080fd5b505af115801561358f573d6000803e3d6000fd5b505050505b6135a08784848861339e565b60006135aa6140f8565b6001600160a01b0316638074b3726040518163ffffffff1660e01b815260040160206040518083038186803b1580156135e257600080fd5b505afa1580156135f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061361a9190810190614560565b905060006136266140f8565b6001600160a01b03166331e4e0306040518163ffffffff1660e01b815260040160206040518083038186803b15801561365e57600080fd5b505afa158015613672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136969190810190614560565b905060006136a26140f8565b6001600160a01b0316635616c9578b6040518263ffffffff1660e01b81526004016136cd91906151bb565b60206040518083038186803b1580156136e557600080fd5b505afa1580156136f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061371d9190810190614286565b9050600061372c8b838661341a565b90508061374b5760405162461bcd60e51b8152600401610a3b90615597565b60006137588c8b8661341a565b9050806137775760405162461bcd60e51b8152600401610a3b9061565f565b87156138175760006137918d61378b61337f565b8b61341a565b9050806137b05760405162461bcd60e51b8152600401610a3b90615614565b6137b861337f565b6001600160a01b0316633c6b16ab8a6040518263ffffffff1660e01b81526004016137e3919061535f565b600060405180830381600087803b1580156137fd57600080fd5b505af1158015613811573d6000803e3d6000fd5b50505050505b5060019b9a5050505050505050505050565b613831614110565b6001600160a01b0316336001600160a01b0316146123da5760405162461bcd60e51b8152600401610a3b9061568c565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f69185916138a091869186916370a0823191612cac918791016151bb565b6040518363ffffffff1660e01b81526004016138bd929190615325565b600060405180830381600087803b1580156138d757600080fd5b505af11580156138eb573d6000803e3d6000fd5b505050506138fa308383613c6a565b600754612a99908263ffffffff613cad16565b6001600160a01b031690565b60408051600780825261010082019092526060916020820160e0803883390190505090506b53797374656d53746174757360a01b8160008151811061395a57fe5b6020026020010181815250506822bc31b430b733b2b960b91b8160018151811061398057fe5b6020026020010181815250506524b9b9bab2b960d11b816002815181106139a357fe5b602002602001018181525050722932bbb0b93239a234b9ba3934b13aba34b7b760691b816003815181106139d357fe5b602002602001018181525050704c697175696461746f725265776172647360781b81600481518110613a0157fe5b602002602001018181525050692634b8bab4b230ba37b960b11b81600581518110613a2857fe5b6020026020010181815250506d2932bbb0b93222b9b1b937bbab1960911b81600681518110613a5357fe5b60200260200101818152505090565b60608151835101604051908082528060200260200182016040528015613a92578160200160208202803883390190505b50905060005b8351811015613ad457838181518110613aad57fe5b6020026020010151828281518110613ac157fe5b6020908102919091010152600101613a98565b5060005b825181101561193057828181518110613aed57fe5b6020026020010151828286510181518110613b0457fe5b6020908102919091010152600101613ad8565b6002546001600160a01b03163314801590613b3d57506003546001600160a01b03163314155b15613b5557600380546001600160a01b031916331790555b6000546003546001600160a01b039081169116146123da5760405162461bcd60e51b8152600401610a3b90615557565b6002546040516001600160a01b039091169063907dff9790613bab9084906020016151bb565b6040516020818303038152906040526001604051613bc89061518f565b6040519081900381206001600160e01b031960e086901b1682526111249392916000908190819060040161541e565b6002546001600160a01b031633146123da5760405162461bcd60e51b8152600401610a3b9061569c565b60006115f9722932bbb0b93239a234b9ba3934b13aba34b7b760691b613cd2565b600082821115613c645760405162461bcd60e51b8152600401610a3b906155b4565b50900390565b6002546040516001600160a01b039091169063907dff9790613c9090849060200161535f565b6040516020818303038152906040526003604051612df8906151b0565b600082820183811015610ef15760405162461bcd60e51b8152600401610a3b90615587565b60008181526009602090815260408083205490516001600160a01b039091169182151591613d029186910161514e565b604051602081830303815290604052906119305760405162461bcd60e51b8152600401610a3b919061550c565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a72190613d63906004016156ac565b60206040518083038186803b158015613d7b57600080fd5b505afa158015613d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613db39190810190614286565b6001600160a01b0316826001600160a01b03161480613e6457506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613dff90600401615634565b60206040518083038186803b158015613e1757600080fd5b505afa158015613e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613e4f9190810190614286565b6001600160a01b0316826001600160a01b0316145b80613f0157506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613e9c9060040161552d565b60206040518083038186803b158015613eb457600080fd5b505afa158015613ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613eec9190810190614286565b6001600160a01b0316826001600160a01b0316145b80613f9e57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613f39906004016155a7565b60206040518083038186803b158015613f5157600080fd5b505afa158015613f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613f899190810190614286565b6001600160a01b0316826001600160a01b0316145b8061403b57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613fd69060040161554a565b60206040518083038186803b158015613fee57600080fd5b505afa158015614002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140269190810190614286565b6001600160a01b0316826001600160a01b0316145b80610b7957506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906140739060040161567f565b60206040518083038186803b15801561408b57600080fd5b505afa15801561409f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140c39190810190614286565b6001600160a01b0316826001600160a01b0316149050919050565b60006115f96b53797374656d53746174757360a01b613cd2565b60006115f9692634b8bab4b230ba37b960b11b613cd2565b60006115f97453796e746865746978427269646765546f4261736560581b613cd2565b604080518082019091526000808252602082015290565b8035610c968161581b565b8051610c968161581b565b600082601f83011261417157600080fd5b815161418461417f8261575f565b615738565b915081818352602084019350602081019050838560208402820111156141a957600080fd5b60005b838110156141d557816141bf88826141f5565b84525060209283019291909101906001016141ac565b5050505092915050565b8051610c968161582f565b8035610c9681615838565b8051610c9681615838565b8051610c9681615841565b8035610c9681615841565b60006040828403121561422857600080fd5b6142326040615738565b90506000614240848461425d565b8252506020614251848483016141f5565b60208301525092915050565b8051610c968161584a565b60006020828403121561427a57600080fd5b6000613282848461414a565b60006020828403121561429857600080fd5b60006132828484614155565b600080604083850312156142b757600080fd5b60006142c3858561414a565b92505060206142d48582860161414a565b9150509250929050565b6000806000606084860312156142f357600080fd5b60006142ff868661414a565b93505060206143108682870161414a565b9250506040614321868287016141ea565b9150509250925092565b6000806040838503121561433e57600080fd5b600061434a858561414a565b92505060206142d4858286016141ea565b60008060006060848603121561437057600080fd5b600061437c868661414a565b9350506020614310868287016141ea565b600080600080608085870312156143a357600080fd5b60006143af878761414a565b94505060206143c0878288016141ea565b93505060406143d1878288016141ea565b92505060606143e2878288016141ea565b91505092959194509250565b60008060008060008060c0878903121561440757600080fd5b6000614413898961414a565b965050602061442489828a016141ea565b955050604061443589828a016141ea565b945050606061444689828a016141ea565b935050608061445789828a0161414a565b92505060a061446889828a016141ea565b9150509295509295509295565b60008060008060008060c0878903121561448e57600080fd5b600061449a898961414a565b96505060206144ab89828a016141ea565b95505060406144bc89828a016141ea565b94505060606144cd89828a016141ea565b93505060806144de89828a016141ea565b92505060a061446889828a0161414a565b60006020828403121561450157600080fd5b815167ffffffffffffffff81111561451857600080fd5b61328284828501614160565b60006020828403121561453657600080fd5b600061328284846141df565b60006020828403121561455457600080fd5b600061328284846141ea565b60006020828403121561457257600080fd5b600061328284846141f5565b6000806000806080858703121561459457600080fd5b60006143af87876141ea565b6000806000606084860312156145b557600080fd5b600061437c86866141ea565b600080600080600060a086880312156145d957600080fd5b60006145e588886141ea565b95505060206145f6888289016141ea565b9450506040614607888289016141ea565b93505060606146188882890161414a565b9250506080614629888289016141ea565b9150509295509295909350565b600080600080600060a0868803121561464e57600080fd5b600061465a88886141ea565b955050602061466b888289016141ea565b945050604061467c888289016141ea565b9350506060614618888289016141ea565b60006020828403121561469f57600080fd5b60006132828484614200565b6000602082840312156146bd57600080fd5b6000613282848461420b565b6000604082840312156146db57600080fd5b60006132828484614216565b600080604083850312156146fa57600080fd5b600061470685856141f5565b92505060206142d4858286016141df565b6000806040838503121561472a57600080fd5b600061473685856141f5565b92505060206142d485828601614200565b60008060006060848603121561475c57600080fd5b600061476886866141f5565b9350506020614779868287016141f5565b9250506040614321868287016141f5565b60006147968383614818565b505060200190565b6147a7816157c1565b82525050565b6147a781615793565b60006147c182615786565b6147cb818561578a565b93506147d683615780565b8060005b838110156148045781516147ee888261478a565b97506147f983615780565b9250506001016147da565b509495945050505050565b6147a78161579e565b6147a781610d4f565b6147a761482d82610d4f565b610d4f565b600061483d82615786565b614847818561578a565b93506148578185602086016157e5565b61486081615811565b9093019392505050565b6147a7816157a3565b6147a7816157cc565b6147a7816157da565b6000614892601f8361578a565b7f43616e6e6f74207472616e7366657220746f2074686973206164647265737300815260200192915050565b75446562744d69677261746f724f6e4f7074696d69736d60501b9052565b60006148e960358361578a565b7f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7581527402063616e20616363657074206f776e65727368697605c1b602082015260400192915050565b6e53796e746865746978457363726f7760881b9052565b600061495760138361578a565b7227bbb732b91037b7363c90333ab731ba34b7b760691b815260200192915050565b6000614986601e8361578a565b7f4f6e6c792045786368616e6765722063616e20696e766f6b6520746869730000815260200192915050565b60006149bf60148361578a565b73616c6c20656e747269657320617265207a65726f60601b815260200192915050565b60006149ef601b8361578a565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614a2860248361578a565b7f466c616720726577617264207472616e7366657220646964206e6f742073756381526318d9595960e21b602082015260400192915050565b6b526577617264457363726f7760a01b9052565b6000614a8260188361578a565b7f4e657720657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000614abb602883610b7c565b7f45786368616e67655265636c61696d28616464726573732c627974657333322c81526775696e743235362960c01b602082015260280192915050565b6000614b05601e8361578a565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b6000614b3e60138361578a565b721cdb9e081d1c985b9cd9995c8819985a5b1959606a1b815260200192915050565b6000614b6d601b8361578a565b7f43616e6e6f742062652072756e206f6e2074686973206c617965720000000000815260200192915050565b6000614ba6603183610b7c565b7f45786368616e6765547261636b696e6728627974657333322c627974657333328152702c75696e743235362c75696e743235362960781b602082015260310192915050565b6000614bf9601183610b7c565b70026b4b9b9b4b7339030b2323932b9b99d1607d1b815260110192915050565b6000614c26603e83610b7c565b7f53796e746845786368616e676528616464726573732c627974657333322c756981527f6e743235362c627974657333322c75696e743235362c616464726573732900006020820152603e0192915050565b6000614c8560268361578a565b7f43616e6e6f74207472616e73666572207374616b6564206f7220657363726f778152650cac840a69cb60d31b602082015260400192915050565b6000614ccd601e8361578a565b7f412073796e7468206f7220534e58207261746520697320696e76616c69640000815260200192915050565b6000614d06602f8361578a565b7f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726681526e37b936903a3434b99030b1ba34b7b760891b602082015260400192915050565b6000614d5760248361578a565b7f5472616e7366657220746f204c697175696461746f72526577617264732066618152631a5b195960e21b602082015260400192915050565b6000614d9d602183610b7c565b7f417070726f76616c28616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b6000614de0602783610b7c565b7f45786368616e676552656261746528616464726573732c627974657333322c75815266696e743235362960c81b602082015260270192915050565b6000614e2960248361578a565b7f4f6e6c79204c3120446562744d69677261746f72206f72204c65676163794d618152631c9ad95d60e21b602082015260400192915050565b6000614e6f601a83610b7c565b7f546f6b656e5374617465557064617465642861646472657373290000000000008152601a0192915050565b6000614ea8603283610b7c565b7f4163636f756e744c69717569646174656428616464726573732c75696e743235815271362c75696e743235362c616464726573732960701b602082015260320192915050565b6d2932bbb0b93222b9b1b937bbab1960911b9052565b6000614f12601983610b7c565b7f5265736f6c766572206d697373696e67207461726765743a2000000000000000815260190192915050565b6000614f4b60298361578a565b7f4c697175696461746520726577617264207472616e7366657220646964206e6f8152681d081cdd58d8d9595960ba1b602082015260400192915050565b6000614f9660158361578a565b7463616e6e6f742073656c66206c697175696461746560581b815260200192915050565b6411195c1bdd60da1b9052565b6000614fd4601d8361578a565b7f43616e206f6e6c7920626520696e766f6b656420627920627269646765000000815260200192915050565b600061500d60188361578a565b7f4f6c6420657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000615046602183610b7c565b7f5472616e7366657228616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b600061508960178361578a565b7f4f6e6c79207468652070726f78792063616e2063616c6c000000000000000000815260200192915050565b7f53796e746865746978427269646765546f4f7074696d69736d000000000000009052565b60006150e7601e8361578a565b7f63616e6e6f74206d69677261746520746f2073616d6520616464726573730000815260200192915050565b732932bbb0b93222b9b1b937bbab19233937bd32b760611b9052565b6147a7816157bb565b6000610c9682614aae565b6000610c9682614b99565b600061515982614bec565b91506151658284614821565b50602001919050565b6000610c9682614c19565b6000610c9682614d90565b6000610c9682614dd3565b6000610c9682614e62565b6000610c9682614e9b565b600061515982614f05565b6000610c9682615039565b60208101610c9682846147ad565b60208101610c96828461479e565b604081016151e582856147ad565b610ef160208301846147ad565b6080810161520082876147ad565b61520d602083018661479e565b61521a6040830185614818565b611576606083018461487c565b6101208101615236828c6147ad565b615243602083018b6147ad565b615250604083018a614818565b61525d6060830189614818565b61526a6080830188614818565b61527760a08301876147ad565b61528460c083018661480f565b61529160e08301856147ad565b61529f610100830184614818565b9a9950505050505050505050565b606081016152bb82866147ad565b6152c860208301856147ad565b6132826040830184614818565b608081016152e382876147ad565b6152f060208301866147ad565b6152fd6040830185614818565b6115766060830184614818565b6040810161531882856147ad565b610ef1602083018461480f565b6040810161533382856147ad565b610ef16020830184614818565b60208082528101610ef181846147b6565b60208101610c96828461480f565b60208101610c968284614818565b604081016151e58285614818565b604081016153188285614818565b604081016153338285614818565b604081016153a58285614818565b8181036020830152610eee8184614832565b60a081016153c58288614818565b6153d26020830187614818565b6153df6040830186614818565b6153ec6060830185614818565b6153f960808301846147ad565b9695505050505050565b606081016154118286614818565b6152c86020830185614818565b60c0808252810161542f8189614832565b905061543e602083018861487c565b61544b6040830187614818565b6154586060830186614873565b6154656080830185614873565b61547260a0830184614873565b979650505050505050565b60c0808252810161548e8189614832565b905061549d602083018861487c565b6154aa6040830187614818565b6154586060830186614818565b60c080825281016154c88189614832565b90506154d7602083018861487c565b6154e46040830187614818565b6154f16060830186614818565b6154656080830185614818565b60208101610c96828461486a565b60208082528101610ef18184614832565b60208082528101610b7981614885565b60208101610b7c826148be565b60208082528101610b79816148dc565b60208101610b7c82614933565b60208082528101610b798161494a565b60208082528101610b7981614979565b60208082528101610b79816149b2565b60208082528101610b79816149e2565b60208082528101610b7981614a1b565b60208101610b7c82614a61565b60208082528101610b7981614af8565b60208082528101610b7981614b31565b60208082528101610b7981614b60565b60208082528101610b7981614c78565b60208082528101610b7981614cc0565b60208082528101610b7981614cf9565b60208082528101610b7981614d4a565b60208082528101610b7981614e1c565b60208101610b7c82614eef565b6040810161564e82614eef565b8181036020830152610b7981614a75565b60208082528101610b7981614f3e565b60208082528101610b7981614f89565b60208101610b7c82614fba565b60208082528101610b7981614fc7565b60208082528101610b798161507c565b60208101610b7c826150b5565b60208082528101610b79816150da565b604081016156d682615113565b8181036020830152610b7981615000565b604081016156f58285614818565b610ef1602083018461486a565b606081016157108286614818565b61571d6020830185614818565b61328260408301846147ad565b60208101610c96828461512f565b60405181810167ffffffffffffffff8111828210171561575757600080fd5b604052919050565b600067ffffffffffffffff82111561577657600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610b798261390d565b151590565b6000610b7982615793565b67ffffffffffffffff1690565b60ff1690565b6000610b79826157a3565b6000610b7961482d83610d4f565b6000610b7982610d4f565b60005b838110156158005781810151838201526020016157e8565b83811115610ad95750506000910152565b601f01601f191690565b61582481615793565b811461115757600080fd5b6158248161579e565b61582481610d4f565b615824816157a3565b615824816157ae56fea365627a7a7231582000ceb67dcdad4ce8e3ccac2bf28d452fd4d8eef4ad96680589bbead05bf2f5596c6578706572696d656e74616cf564736f6c63430005100040", + "bytecode": "60806040523480156200001157600080fd5b5060405162005e8b38038062005e8b833981016040819052620000349162000315565b84848484848085856040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e000000000000000000815250604051806040016040528060038152602001620a69cb60eb1b81525086601289868160006001600160a01b0316816001600160a01b03161415620000d35760405162461bcd60e51b8152600401620000ca9062000463565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383161781556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91620001209184906200042b565b60405180910390a1506000546001600160a01b0316620001545760405162461bcd60e51b8152600401620000ca9062000451565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e90620001a19083906200041b565b60405180910390a150600480546001600160a01b0319166001600160a01b0388161790558451620001da90600590602088019062000243565b508351620001f090600690602087019062000243565b50506007919091556008805460ff191660ff90921691909117610100600160a81b0319166101006001600160a01b0397909716969096029590951790945550620004e19c50505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028657805160ff1916838001178555620002b6565b82800160010185558215620002b6579182015b82811115620002b657825182559160200191906001019062000299565b50620002c4929150620002c8565b5090565b620002e591905b80821115620002c45760008155600101620002cf565b90565b8051620002f581620004b1565b92915050565b8051620002f581620004cb565b8051620002f581620004d6565b600080600080600060a086880312156200032e57600080fd5b60006200033c8888620002e8565b95505060206200034f88828901620002fb565b94505060406200036288828901620002e8565b9350506060620003758882890162000308565b92505060806200038888828901620002e8565b9150509295509295909350565b620003a081620004a4565b82525050565b620003a0816200047e565b6000620003c060118362000475565b7013dddb995c881b5d5cdd081899481cd95d607a1b815260200192915050565b6000620003ef60198362000475565b7f4f776e657220616464726573732063616e6e6f74206265203000000000000000815260200192915050565b60208101620002f5828462000395565b604081016200043b828562000395565b6200044a6020830184620003a6565b9392505050565b60208082528101620002f581620003b1565b60208082528101620002f581620003e0565b90815260200190565b6000620002f58262000498565b6000620002f5826200047e565b6001600160a01b031690565b6000620002f5826200048b565b620004bc816200047e565b8114620004c857600080fd5b50565b620004bc816200048b565b620004bc81620002e5565b61599a80620004f16000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c8063704e7b851161022b578063a311c7c211610130578063d67bdd25116100b8578063e8e09b8b11610087578063e8e09b8b146108aa578063e90dd9e2146108bd578063ec556889146108c5578063edef719a146108cd578063ee52a2f3146108e057610428565b8063d67bdd2514610874578063d8a1f76f1461087c578063dbf633401461088f578063dd62ed3e1461089757610428565b8063af086c7e116100ff578063af086c7e14610820578063bc67f83214610828578063c2bf38801461083b578063c836fa0a1461084e578063d37c4d8b1461086157610428565b8063a311c7c2146107d4578063a5fdc5de146107e7578063a9059cbb146107fa578063ace88afd1461080d57610428565b80638a290014116101b357806395d89b411161018257806395d89b411461078b57806397107d6d146107935780639741fb22146107a6578063987757dd146107ae5780639f769807146107c157610428565b80638a290014146107555780638da5cb5b1461076857806391e56b68146107705780639324cac71461078357610428565b806379ba5097116101fa57806379ba5097146106fe578063835e119c1461070657806383d625d414610719578063843588431461072c578063899ffef41461074d57610428565b8063704e7b85146106bb57806370a08231146106ce57806372cb051f146106e157806374185360146106f657610428565b80632c955fa7116103315780634e99bda9116102b95780635e22846a116102885780635e22846a1461065c578063666ed4f11461066f5780636ac0bf9c146106825780636c00f310146106955780636f01a986146106a857610428565b80634e99bda914610629578063528c7efb1461063157806353a47bb7146106395780635af090ef1461064e57610428565b8063313ce56711610300578063313ce567146105d5578063320223db146105dd57806332608039146105f05780633e89b9e51461060357806344b3e9231461061657610428565b80632c955fa7146105875780632d3169eb1461059a5780632e0f2625146105ad57806330ead760146105c257610428565b806316b2213f116103b457806323b872dd1161038357806323b872dd1461053e5780632621716f14610551578063295da87d146105645780632a905318146105775780632af64bd31461057f57610428565b806316b2213f1461050857806318160ddd1461051b57806318821400146105235780631fce304d1461052b57610428565b8063095ea7b3116103fb578063095ea7b31461048a5780630e30963c146104aa5780631137aedf146104cb5780631249c58b146104ed5780631627540c146104f557610428565b806303fbc5471461042d57806304f3bcec1461043757806305b3c1c91461045557806306fdde0314610475575b600080fd5b6104356108f3565b005b61043f610ae0565b60405161044c91906155f2565b60405180910390f35b610468610463366004614323565b610af4565b60405161044c9190615453565b61047d610b81565b60405161044c9190615600565b61049d6104983660046143e6565b610c0f565b60405161044c9190615445565b6104bd6104b8366004614639565b610c9c565b60405161044c9291906157eb565b6104de6104d9366004614323565b610cb0565b60405161044c939291906154f7565b61049d610d45565b610435610503366004614323565b610d52565b610468610516366004614323565b610db0565b610468610de5565b61047d610deb565b61049d6105393660046145fd565b610e24565b61049d61054c366004614399565b610eb9565b61046861055f366004614323565b610ef8565b6104356105723660046145fd565b6110d9565b61047d61115a565b61049d611179565b610435610595366004614323565b611295565b6104356105a8366004614639565b6112e1565b6105b5611397565b60405161044c919061582e565b6104686105d036600461467c565b61139c565b6105b561145a565b6104356105eb366004614323565b611463565b61043f6105fe3660046145fd565b6114af565b6104686106113660046145fd565b611534565b6104686106243660046146f1565b61156c565b61049d61157f565b61049d6115fe565b610641611899565b60405161044c91906152af565b61046861062436600461467c565b61049d61066a366004614323565b6118a8565b61043561067d3660046143e6565b6118d4565b610468610690366004614323565b6118ea565b6104356106a3366004614530565b6119f2565b6104356106b6366004614416565b611ab4565b61049d6106c93660046143e6565b611b6d565b6104686106dc366004614323565b611b98565b6106e9611bca565b60405161044c9190615434565b610435611c48565b610435611d9a565b61043f6107143660046145fd565b611e36565b6104686107273660046145fd565b611e6b565b61073f61073a366004614323565b611ea3565b60405161044c92919061547d565b6106e96121d8565b6104356107633660046145fd565b61224c565b610641612296565b61046861077e3660046144a9565b6122a5565b610468612365565b61047d612370565b6104356107a1366004614323565b6123cb565b61043561241e565b6104de6107bc3660046145fd565b612497565b6104356107cf366004614766565b61250d565b6104686107e2366004614323565b612539565b6104686107f5366004614323565b61256e565b61049d6108083660046143e6565b6125a3565b61043561081b366004614416565b6125ed565b61043561263a565b610435610836366004614323565b612683565b6104356108493660046143e6565b6126ad565b61046861085c366004614448565b612731565b61046861086f3660046143e6565b6127ef565b610641612876565b61043561088a3660046145fd565b612885565b610468612921565b6104686108a536600461435f565b61299b565b6104356108b83660046143e6565b6129cf565b61043f612a1d565b61043f612a2c565b6104356108db3660046143e6565b612a3b565b6104686108ee36600461465b565b612b5b565b6108fb612c17565b60085460405163dacb2d0160e01b815260009161010090046001600160a01b03169063dacb2d019061092f906004016157cd565b60206040518083038186803b15801561094757600080fd5b505afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097f9190810190614341565b60085460405163dacb2d0160e01b81529192506000916101009091046001600160a01b03169063dacb2d01906109b790600401615745565b60206040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a079190810190614341565b9050816001600160a01b0316816001600160a01b03161415610a445760405162461bcd60e51b8152600401610a3b906157bd565b60405180910390fd5b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610a76918791016152af565b60206040518083038186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ac6919081019061461b565b90508015610adb57610ad9838383612c41565b505b505050565b60085461010090046001600160a01b031681565b6000610afe612e1d565b6001600160a01b03166305b3c1c9836040518263ffffffff1660e01b8152600401610b2991906152af565b60206040518083038186803b158015610b4157600080fd5b505afa158015610b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b79919081019061461b565b90505b919050565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c075780601f10610bdc57610100808354040283529160200191610c07565b820191906000526020600020905b815481529060010190602001808311610bea57829003601f168201915b505050505081565b6000610c19612e31565b60035460048054604051633691826360e21b81526001600160a01b03938416939091169163da46098c91610c5391859189918991016153a1565b600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050610c90818585612e70565b60019150505b92915050565b600080610ca7612ef0565b94509492505050565b6000806000610cbd612e1d565b6001600160a01b0316631137aedf856040518263ffffffff1660e01b8152600401610ce891906152af565b60606040518083038186803b158015610d0057600080fd5b505afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d389190810190614802565b9250925092509193909250565b6000610d4f612ef0565b90565b610d5a612c17565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290610da59083906152af565b60405180910390a150565b6000610dba612e1d565b6001600160a01b03166316b2213f836040518263ffffffff1660e01b8152600401610b2991906152af565b60075481565b6040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e00000000000000000081525081565b600080610e2f612f08565b6003546040516301670a7b60e21b81526001600160a01b039283169263059c29ec92610e62929116908790600401615419565b60206040518083038186803b158015610e7a57600080fd5b505afa158015610e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eb2919081019061461b565b1192915050565b6000610ec3612f1f565b610ecb612f74565b610ed58483612fc8565b50600354610eee906001600160a01b0316858585613299565b90505b9392505050565b600080610f03613345565b6001600160a01b031663204b676a846040518263ffffffff1660e01b8152600401610f2e91906152af565b60206040518083038186803b158015610f4657600080fd5b505afa158015610f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f7e919081019061461b565b90506000610f8a6141ee565b60005b838110156110c057610f9d613345565b6001600160a01b031663ae58254987836040518363ffffffff1660e01b8152600401610fca929190615419565b60206040518083038186803b158015610fe257600080fd5b505afa158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061101a919081019061461b565b9250611024613345565b6001600160a01b03166345626bd687856040518363ffffffff1660e01b8152600401611051929190615419565b604080518083038186803b15801561106857600080fd5b505afa15801561107c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110a09190810190614784565b6020810151909250156110b8579350610b7c92505050565b600101610f8d565b5060405162461bcd60e51b8152600401610a3b9061566b565b6110e1613361565b6110e9612e31565b6110f1612e1d565b60035460405163b06e8c6560e01b81526001600160a01b039283169263b06e8c6592611124929116908590600401615419565b600060405180830381600087803b15801561113e57600080fd5b505af1158015611152573d6000803e3d6000fd5b505050505b50565b604051806040016040528060038152602001620a69cb60eb1b81525081565b600060606111856121d8565b905060005b815181101561128c5760008282815181106111a157fe5b602090810291909101810151600081815260099092526040918290205460085492516321f8a72160e01b81529193506001600160a01b0390811692610100900416906321f8a721906111f7908590600401615453565b60206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112479190810190614341565b6001600160a01b031614158061127257506000818152600960205260409020546001600160a01b0316155b156112835760009350505050610d4f565b5060010161118a565b50600191505090565b61129d613361565b6112a5612e31565b6112ad612e1d565b60035460405163159fa0d560e11b81526001600160a01b0392831692632b3f41aa92611124928692909116906004016152cb565b6112e96133a1565b6002546040516001600160a01b039091169063907dff9790611313908690869086906020016154f7565b604051602081830303815290604052600260405161133090615237565b6040519081900381206001600160e01b031960e086901b16825261135f9392918a906000908190600401615571565b600060405180830381600087803b15801561137957600080fd5b505af115801561138d573d6000803e3d6000fd5b5050505050505050565b601281565b600085846113aa82826133d9565b6113b2612e31565b6113ba612f08565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d2926113fc9291169081908d908d908d9084906000908f908f9060040161531b565b6040805180830381600087803b15801561141557600080fd5b505af1158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144d91908101906147d2565b5098975050505050505050565b60085460ff1681565b61146b613361565b611473612e31565b61147b612e1d565b60035460405163fd864ccf60e01b81526001600160a01b039283169263fd864ccf92611124928692909116906004016152cb565b60006114b9612e1d565b6001600160a01b03166332608039836040518263ffffffff1660e01b81526004016114e49190615453565b60206040518083038186803b1580156114fc57600080fd5b505afa158015611510573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b799190810190614748565b600061153e612e1d565b6001600160a01b0316637b1001b78360016040518363ffffffff1660e01b8152600401610b2992919061546f565b6000611576612ef0565b95945050505050565b6000611589612e1d565b6001600160a01b0316634e99bda96040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c157600080fd5b505afa1580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f991908101906145df565b905090565b6000611608612f74565b611610612e31565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a72190611655906b131959d858de53585c9ad95d60a21b90600401615453565b60206040518083038186803b15801561166d57600080fd5b505afa158015611681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116a59190810190614341565b6001600160a01b0316146116cb5760405162461bcd60e51b8152600401610a3b90615718565b6003546001600160a01b03166116df61343a565b6001600160a01b031663c00007b0826040518263ffffffff1660e01b815260040161170a91906152af565b600060405180830381600087803b15801561172457600080fd5b505af1158015611738573d6000803e3d6000fd5b50505050600080611747612e1d565b6001600160a01b03166372c658168460016040518363ffffffff1660e01b81526004016117759291906153fe565b606060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117c79190810190614802565b5091509150600081116117ec5760405162461bcd60e51b8152600401610a3b90615773565b6117f883838386613459565b600061180c8461180661343a565b856134d5565b90508061182b5760405162461bcd60e51b8152600401610a3b90615708565b61183361343a565b6001600160a01b0316633c6b16ab846040518263ffffffff1660e01b815260040161185e9190615453565b600060405180830381600087803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b5092965050505050505090565b6001546001600160a01b031681565b60006118b2612f74565b6118ba612e31565b600354610b799083906000906001600160a01b03166134e2565b6118dc6138e4565b6118e6828261391c565b5050565b60006118f4612e1d565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938793909116916370a082319161192f918591016152af565b60206040518083038186803b15801561194757600080fd5b505afa15801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061197f919081019061461b565b6040518363ffffffff1660e01b815260040161199c929190615419565b604080518083038186803b1580156119b357600080fd5b505afa1580156119c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119eb91908101906147a2565b5092915050565b6119fa6133a1565b6002546040516001600160a01b039091169063907dff9790611a2890889088908890889088906020016154ab565b6040516020818303038152906040526002604051611a4590615262565b6040518091039020611a568b6139c8565b6000806040518763ffffffff1660e01b8152600401611a7a96959493929190615571565b600060405180830381600087803b158015611a9457600080fd5b505af1158015611aa8573d6000803e3d6000fd5b50505050505050505050565b611abc6133a1565b6002546040516001600160a01b039091169063907dff9790611ae4908590859060200161547d565b6040516020818303038152906040526002604051611b0190615278565b6040518091039020611b12886139c8565b6000806040518763ffffffff1660e01b8152600401611b3696959493929190615571565b600060405180830381600087803b158015611b5057600080fd5b505af1158015611b64573d6000803e3d6000fd5b50505050505050565b6000611b77612f74565b611b7f612e31565b600354610ef190849084906001600160a01b03166134e2565b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610b29918691016152af565b6060611bd4612e1d565b6001600160a01b03166372cb051f6040518163ffffffff1660e01b815260040160006040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115f991908101906145aa565b6060611c526121d8565b905060005b81518110156118e6576000828281518110611c6e57fe5b602002602001015190506000600860019054906101000a90046001600160a01b03166001600160a01b031663dacb2d018384604051602001611cb09190615299565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611cdc92919061548b565b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d2c9190810190614341565b6000838152600960205260409081902080546001600160a01b0319166001600160a01b038416179055519091507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa6890611d889084908490615461565b60405180910390a15050600101611c57565b6001546001600160a01b03163314611dc45760405162461bcd60e51b8152600401610a3b9061562e565b6000546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c92611e07926001600160a01b03918216929116906152cb565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000611e40612e1d565b6001600160a01b031663835e119c836040518263ffffffff1660e01b81526004016114e49190615453565b6000611e75612e1d565b6001600160a01b0316637b1001b78360006040518363ffffffff1660e01b8152600401610b2992919061546f565b600080611eae612f74565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a72190611efd9075446562744d69677261746f724f6e457468657265756d60501b90600401615453565b60206040518083038186803b158015611f1557600080fd5b505afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f4d9190810190614341565b9050336001600160a01b038216148061200957506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190611fa4906b131959d858de53585c9ad95d60a21b90600401615453565b60206040518083038186803b158015611fbc57600080fd5b505afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff49190810190614341565b6001600160a01b0316336001600160a01b0316145b6120255760405162461bcd60e51b8152600401610a3b90615728565b600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191612054918891016152af565b60206040518083038186803b15801561206c57600080fd5b505afa158015612080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a4919081019061461b565b915081156120da5760006120b98533856134d5565b9050806120d85760405162461bcd60e51b8152600401610a3b906156b8565b505b6120e2613345565b6001600160a01b031663326a3cfb856040518263ffffffff1660e01b815260040161210d91906152af565b60206040518083038186803b15801561212557600080fd5b505afa158015612139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061215d919081019061461b565b925082156121d25761216d613345565b6001600160a01b031663de065f6785338660006040518563ffffffff1660e01b815260040161219f94939291906152e6565b600060405180830381600087803b1580156121b957600080fd5b505af11580156121cd573d6000803e3d6000fd5b505050505b50915091565b6060806121e36139d4565b60408051600180825281830190925291925060609190602080830190803883390190505090507453796e746865746978427269646765546f4261736560581b8160008151811061222f57fe5b6020026020010181815250506122458282613b1d565b9250505090565b612254613361565b61225c612e31565b612264612e1d565b6003546040516285c0d160e31b81526001600160a01b039283169263042e068892611124929116908590600401615419565b6000546001600160a01b031681565b600085846122b382826133d9565b6122bb612e31565b6122c3612f08565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612306928e92909116908d908d908d9085906000908f908f9060040161531b565b6040805180830381600087803b15801561231f57600080fd5b505af1158015612333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061235791908101906147d2565b509998505050505050505050565b631cd554d160e21b81565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c075780601f10610bdc57610100808354040283529160200191610c07565b6123d3612c17565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e90610da59083906152bd565b612426613361565b61242e612e31565b612436612e1d565b6003546040516324beb82560e11b81526001600160a01b039283169263497d704a92612467929116906004016152af565b600060405180830381600087803b15801561248157600080fd5b505af1158015610ad9573d6000803e3d6000fd5b565b60008060006124a4612e31565b6124ac612f08565b6003546040516306c5a00b60e21b81526001600160a01b0392831692631b16802c926124df929116908890600401615419565b606060405180830381600087803b1580156124f957600080fd5b505af1158015610d14573d6000803e3d6000fd5b612515613bd2565b600480546001600160a01b0319166001600160a01b03831617905561115781613c40565b6000612543612e1d565b6001600160a01b031663a311c7c2836040518263ffffffff1660e01b8152600401610b2991906152af565b6000612578612e1d565b6001600160a01b031663a5fdc5de836040518263ffffffff1660e01b8152600401610b2991906152af565b60006125ad612f1f565b6125b5612f74565b6003546125cb906001600160a01b031683612fc8565b506003546125e3906001600160a01b031684846134d5565b5060019392505050565b6125f56133a1565b6002546040516001600160a01b039091169063907dff979061261d908590859060200161547d565b6040516020818303038152906040526002604051611b019061522c565b612642613361565b61264a612e31565b612652612e1d565b60035460405163644bb89960e11b81526001600160a01b039283169263c897713292612467929116906004016152af565b61268b613cb2565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6126b5613361565b6126bd612e31565b6126c5612e1d565b600354604051632694552d60e21b81526001600160a01b0392831692639a5154b4926126fb9287929091169086906004016153a1565b600060405180830381600087803b15801561271557600080fd5b505af1158015612729573d6000803e3d6000fd5b505050505050565b6000838261273f82826133d9565b612747612e31565b61274f612f08565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612792928c92909116908b908b908b9085906000908290829060040161531b565b6040805180830381600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127e391908101906147d2565b50979650505050505050565b60006127f9612e1d565b6001600160a01b031663d37c4d8b84846040518363ffffffff1660e01b8152600401612826929190615419565b60206040518083038186803b15801561283e57600080fd5b505afa158015612852573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ef1919081019061461b565b6003546001600160a01b031681565b61288d6138e4565b6000612897613cdc565b90506128a3818361391c565b604051630b32e9c760e31b81526001600160a01b038216906359974e38906128cf908590600401615453565b602060405180830381600087803b1580156128e957600080fd5b505af11580156128fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610adb91908101906145df565b600061292b612e1d565b6001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b15801561296357600080fd5b505afa158015612977573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f9919081019061461b565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163dd62ed3e916128269187918791016152cb565b6129d7613361565b6129df612e31565b6129e7612e1d565b60035460405163227635b160e11b81526001600160a01b03928316926344ec6b62926126fb9287929091169086906004016153a1565b6004546001600160a01b031681565b6002546001600160a01b031681565b612a436138e4565b612a4b612f74565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f6918591612ae691869186916370a0823191612a8a918791016152af565b60206040518083038186803b158015612aa257600080fd5b505afa158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ada919081019061461b565b9063ffffffff613cfd16565b6040518363ffffffff1660e01b8152600401612b03929190615419565b600060405180830381600087803b158015612b1d57600080fd5b505af1158015612b31573d6000803e3d6000fd5b50505050612b4182600083613d25565b600754612b54908263ffffffff613cfd16565b6007555050565b60008382612b6982826133d9565b612b71612e31565b612b79612f08565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612bbb9291169081908b908b908b9084906000908290829060040161531b565b6040805180830381600087803b158015612bd457600080fd5b505af1158015612be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c0c91908101906147d2565b509695505050505050565b6000546001600160a01b031633146124955760405162461bcd60e51b8152600401610a3b906156f8565b60006001600160a01b03831615801590612c6457506001600160a01b0383163014155b8015612c7e57506002546001600160a01b03848116911614155b612c9a5760405162461bcd60e51b8152600401610a3b90615611565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f6918791612cd991879186916370a0823191612a8a918791016152af565b6040518363ffffffff1660e01b8152600401612cf6929190615419565b600060405180830381600087803b158015612d1057600080fd5b505af1158015612d24573d6000803e3d6000fd5b5050600480546040516370a0823160e01b81526001600160a01b03909116935063b46310f692508691612dc391879186916370a0823191612d67918791016152af565b60206040518083038186803b158015612d7f57600080fd5b505afa158015612d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612db7919081019061461b565b9063ffffffff613d6816565b6040518363ffffffff1660e01b8152600401612de0929190615419565b600060405180830381600087803b158015612dfa57600080fd5b505af1158015612e0e573d6000803e3d6000fd5b505050506125e3848484613d25565b60006115f96524b9b9bab2b960d11b613d8d565b6002546001600160a01b03163314801590612e5757506003546001600160a01b03163314155b1561249557600380546001600160a01b03191633179055565b6002546040516001600160a01b039091169063907dff9790612e96908490602001615453565b6040516020818303038152906040526003604051612eb39061526d565b6040518091039020612ec4886139c8565b612ecd886139c8565b60006040518763ffffffff1660e01b8152600401611b36969594939291906155ab565b60405162461bcd60e51b8152600401610a3b906156c8565b60006115f96822bc31b430b733b2b960b91b613d8d565b6002546001600160a01b0316331415612f3757612495565b612f4033613dea565b15612f5c57600380546001600160a01b03191633179055612495565b60405162461bcd60e51b8152600401610a3b906157a0565b612f7c614199565b6001600160a01b031663086dabd16040518163ffffffff1660e01b815260040160006040518083038186803b158015612fb457600080fd5b505afa158015610ad9573d6000803e3d6000fd5b6008546040516321f8a72160e01b815260009182916101009091046001600160a01b0316906321f8a72190613010906b131959d858de53585c9ad95d60a21b90600401615453565b60206040518083038186803b15801561302857600080fd5b505afa15801561303c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130609190810190614341565b6003549091506001600160a01b03161580159061308a57506003546001600160a01b038281169116145b806130a65750806001600160a01b0316846001600160a01b0316145b156130b5576001915050610c96565b60006130bf612e1d565b6001600160a01b031663d37c4d8b86631cd554d160e21b6040518363ffffffff1660e01b81526004016130f3929190615419565b60206040518083038186803b15801561310b57600080fd5b505afa15801561311f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613143919081019061461b565b1115610c9057600080613154612e1d565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938b93909116916370a082319161318f918591016152af565b60206040518083038186803b1580156131a757600080fd5b505afa1580156131bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131df919081019061461b565b6040518363ffffffff1660e01b81526004016131fc929190615419565b604080518083038186803b15801561321357600080fd5b505afa158015613227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061324b91908101906147a2565b915091508185111561326f5760405162461bcd60e51b8152600401610a3b906156d8565b801561328d5760405162461bcd60e51b8152600401610a3b906156e8565b50600195945050505050565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163da46098c91879189916132df918891879163dd62ed3e91612a8a9188918891016152cb565b6040518463ffffffff1660e01b81526004016132fd939291906153a1565b600060405180830381600087803b15801561331757600080fd5b505af115801561332b573d6000803e3d6000fd5b5050505061333a848484612c41565b90505b949350505050565b60006115f96d2932bbb0b93222b9b1b937bbab1960911b613d8d565b613369614199565b6001600160a01b0316637c3125416040518163ffffffff1660e01b815260040160006040518083038186803b158015612fb457600080fd5b6133a9612f08565b6001600160a01b0316336001600160a01b0316146124955760405162461bcd60e51b8152600401610a3b9061565b565b6133e1614199565b6001600160a01b0316631ce00ba283836040518363ffffffff1660e01b815260040161340e92919061547d565b60006040518083038186803b15801561342657600080fd5b505afa158015612729573d6000803e3d6000fd5b60006115f9704c697175696461746f725265776172647360781b613d8d565b6002546040516001600160a01b039091169063907dff979061348390869086908690602001615806565b60405160208183030381529060405260026040516134a09061528e565b60405180910390206134b1896139c8565b6000806040518763ffffffff1660e01b815260040161135f96959493929190615571565b6000610eee848484612c41565b60006134ec61343a565b6001600160a01b031663c00007b0856040518263ffffffff1660e01b815260040161351791906152af565b600060405180830381600087803b15801561353157600080fd5b505af1158015613545573d6000803e3d6000fd5b505050506000806000613556612e1d565b6001600160a01b03166372c658168860006040518363ffffffff1660e01b81526004016135849291906153fe565b606060405180830381600087803b15801561359e57600080fd5b505af11580156135b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506135d69190810190614802565b91945092509050801561364f576135eb613345565b6001600160a01b031663de065f678889848a6040518563ffffffff1660e01b815260040161361c94939291906153c9565b600060405180830381600087803b15801561363657600080fd5b505af115801561364a573d6000803e3d6000fd5b505050505b61365b87848488613459565b60006136656141b3565b6001600160a01b0316638074b3726040518163ffffffff1660e01b815260040160206040518083038186803b15801561369d57600080fd5b505afa1580156136b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136d5919081019061461b565b905060006136e16141b3565b6001600160a01b03166331e4e0306040518163ffffffff1660e01b815260040160206040518083038186803b15801561371957600080fd5b505afa15801561372d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613751919081019061461b565b9050600061375d6141b3565b6001600160a01b0316635616c9578b6040518263ffffffff1660e01b815260040161378891906152af565b60206040518083038186803b1580156137a057600080fd5b505afa1580156137b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137d89190810190614341565b905060006137e78b83866134d5565b9050806138065760405162461bcd60e51b8152600401610a3b9061568b565b60006138138c8b866134d5565b9050806138325760405162461bcd60e51b8152600401610a3b90615763565b87156138d257600061384c8d61384661343a565b8b6134d5565b90508061386b5760405162461bcd60e51b8152600401610a3b90615708565b61387361343a565b6001600160a01b0316633c6b16ab8a6040518263ffffffff1660e01b815260040161389e9190615453565b600060405180830381600087803b1580156138b857600080fd5b505af11580156138cc573d6000803e3d6000fd5b50505050505b5060019b9a5050505050505050505050565b6138ec6141cb565b6001600160a01b0316336001600160a01b0316146124955760405162461bcd60e51b8152600401610a3b90615790565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f691859161395b91869186916370a0823191612d67918791016152af565b6040518363ffffffff1660e01b8152600401613978929190615419565b600060405180830381600087803b15801561399257600080fd5b505af11580156139a6573d6000803e3d6000fd5b505050506139b5308383613d25565b600754612b54908263ffffffff613d6816565b6001600160a01b031690565b60408051600780825261010082019092526060916020820160e0803883390190505090506b53797374656d53746174757360a01b81600081518110613a1557fe5b6020026020010181815250506822bc31b430b733b2b960b91b81600181518110613a3b57fe5b6020026020010181815250506524b9b9bab2b960d11b81600281518110613a5e57fe5b602002602001018181525050722932bbb0b93239a234b9ba3934b13aba34b7b760691b81600381518110613a8e57fe5b602002602001018181525050704c697175696461746f725265776172647360781b81600481518110613abc57fe5b602002602001018181525050692634b8bab4b230ba37b960b11b81600581518110613ae357fe5b6020026020010181815250506d2932bbb0b93222b9b1b937bbab1960911b81600681518110613b0e57fe5b60200260200101818152505090565b60608151835101604051908082528060200260200182016040528015613b4d578160200160208202803883390190505b50905060005b8351811015613b8f57838181518110613b6857fe5b6020026020010151828281518110613b7c57fe5b6020908102919091010152600101613b53565b5060005b82518110156119eb57828181518110613ba857fe5b6020026020010151828286510181518110613bbf57fe5b6020908102919091010152600101613b93565b6002546001600160a01b03163314801590613bf857506003546001600160a01b03163314155b15613c1057600380546001600160a01b031916331790555b6000546003546001600160a01b039081169116146124955760405162461bcd60e51b8152600401610a3b9061564b565b6002546040516001600160a01b039091169063907dff9790613c669084906020016152af565b6040516020818303038152906040526001604051613c8390615283565b6040519081900381206001600160e01b031960e086901b16825261112493929160009081908190600401615512565b6002546001600160a01b031633146124955760405162461bcd60e51b8152600401610a3b906157a0565b60006115f9722932bbb0b93239a234b9ba3934b13aba34b7b760691b613d8d565b600082821115613d1f5760405162461bcd60e51b8152600401610a3b906156a8565b50900390565b6002546040516001600160a01b039091169063907dff9790613d4b908490602001615453565b6040516020818303038152906040526003604051612eb3906152a4565b600082820183811015610ef15760405162461bcd60e51b8152600401610a3b9061567b565b60008181526009602090815260408083205490516001600160a01b039091169182151591613dbd91869101615242565b604051602081830303815290604052906119eb5760405162461bcd60e51b8152600401610a3b9190615600565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a72190613e1e906004016157b0565b60206040518083038186803b158015613e3657600080fd5b505afa158015613e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613e6e9190810190614341565b6001600160a01b0316826001600160a01b03161480613f1f57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613eba90600401615738565b60206040518083038186803b158015613ed257600080fd5b505afa158015613ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613f0a9190810190614341565b6001600160a01b0316826001600160a01b0316145b80613fbc57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613f5790600401615621565b60206040518083038186803b158015613f6f57600080fd5b505afa158015613f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613fa79190810190614341565b6001600160a01b0316826001600160a01b0316145b8061405957506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a72190613ff49060040161569b565b60206040518083038186803b15801561400c57600080fd5b505afa158015614020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140449190810190614341565b6001600160a01b0316826001600160a01b0316145b806140f657506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906140919060040161563e565b60206040518083038186803b1580156140a957600080fd5b505afa1580156140bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140e19190810190614341565b6001600160a01b0316826001600160a01b0316145b80610b7957506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061412e90600401615783565b60206040518083038186803b15801561414657600080fd5b505afa15801561415a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061417e9190810190614341565b6001600160a01b0316826001600160a01b0316149050919050565b60006115f96b53797374656d53746174757360a01b613d8d565b60006115f9692634b8bab4b230ba37b960b11b613d8d565b60006115f97453796e746865746978427269646765546f4261736560581b613d8d565b604080518082019091526000808252602082015290565b8035610c968161591f565b8051610c968161591f565b600082601f83011261422c57600080fd5b815161423f61423a82615863565b61583c565b9150818183526020840193506020810190508385602084028201111561426457600080fd5b60005b83811015614290578161427a88826142b0565b8452506020928301929190910190600101614267565b5050505092915050565b8051610c9681615933565b8035610c968161593c565b8051610c968161593c565b8051610c9681615945565b8035610c9681615945565b6000604082840312156142e357600080fd5b6142ed604061583c565b905060006142fb8484614318565b825250602061430c848483016142b0565b60208301525092915050565b8051610c968161594e565b60006020828403121561433557600080fd5b600061333d8484614205565b60006020828403121561435357600080fd5b600061333d8484614210565b6000806040838503121561437257600080fd5b600061437e8585614205565b925050602061438f85828601614205565b9150509250929050565b6000806000606084860312156143ae57600080fd5b60006143ba8686614205565b93505060206143cb86828701614205565b92505060406143dc868287016142a5565b9150509250925092565b600080604083850312156143f957600080fd5b60006144058585614205565b925050602061438f858286016142a5565b60008060006060848603121561442b57600080fd5b60006144378686614205565b93505060206143cb868287016142a5565b6000806000806080858703121561445e57600080fd5b600061446a8787614205565b945050602061447b878288016142a5565b935050604061448c878288016142a5565b925050606061449d878288016142a5565b91505092959194509250565b60008060008060008060c087890312156144c257600080fd5b60006144ce8989614205565b96505060206144df89828a016142a5565b95505060406144f089828a016142a5565b945050606061450189828a016142a5565b935050608061451289828a01614205565b92505060a061452389828a016142a5565b9150509295509295509295565b60008060008060008060c0878903121561454957600080fd5b60006145558989614205565b965050602061456689828a016142a5565b955050604061457789828a016142a5565b945050606061458889828a016142a5565b935050608061459989828a016142a5565b92505060a061452389828a01614205565b6000602082840312156145bc57600080fd5b815167ffffffffffffffff8111156145d357600080fd5b61333d8482850161421b565b6000602082840312156145f157600080fd5b600061333d848461429a565b60006020828403121561460f57600080fd5b600061333d84846142a5565b60006020828403121561462d57600080fd5b600061333d84846142b0565b6000806000806080858703121561464f57600080fd5b600061446a87876142a5565b60008060006060848603121561467057600080fd5b600061443786866142a5565b600080600080600060a0868803121561469457600080fd5b60006146a088886142a5565b95505060206146b1888289016142a5565b94505060406146c2888289016142a5565b93505060606146d388828901614205565b92505060806146e4888289016142a5565b9150509295509295909350565b600080600080600060a0868803121561470957600080fd5b600061471588886142a5565b9550506020614726888289016142a5565b9450506040614737888289016142a5565b93505060606146d3888289016142a5565b60006020828403121561475a57600080fd5b600061333d84846142bb565b60006020828403121561477857600080fd5b600061333d84846142c6565b60006040828403121561479657600080fd5b600061333d84846142d1565b600080604083850312156147b557600080fd5b60006147c185856142b0565b925050602061438f8582860161429a565b600080604083850312156147e557600080fd5b60006147f185856142b0565b925050602061438f858286016142bb565b60008060006060848603121561481757600080fd5b600061482386866142b0565b9350506020614834868287016142b0565b92505060406143dc868287016142b0565b600061485183836148d3565b505060200190565b614862816158c5565b82525050565b61486281615897565b600061487c8261588a565b614886818561588e565b935061489183615884565b8060005b838110156148bf5781516148a98882614845565b97506148b483615884565b925050600101614895565b509495945050505050565b614862816158a2565b61486281610d4f565b6148626148e882610d4f565b610d4f565b60006148f88261588a565b614902818561588e565b93506149128185602086016158e9565b61491b81615915565b9093019392505050565b614862816158a7565b614862816158d0565b614862816158de565b600061494d601f8361588e565b7f43616e6e6f74207472616e7366657220746f2074686973206164647265737300815260200192915050565b75446562744d69677261746f724f6e4f7074696d69736d60501b9052565b60006149a460358361588e565b7f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7581527402063616e20616363657074206f776e65727368697605c1b602082015260400192915050565b6e53796e746865746978457363726f7760881b9052565b6000614a1260138361588e565b7227bbb732b91037b7363c90333ab731ba34b7b760691b815260200192915050565b6000614a41601e8361588e565b7f4f6e6c792045786368616e6765722063616e20696e766f6b6520746869730000815260200192915050565b6000614a7a60148361588e565b73616c6c20656e747269657320617265207a65726f60601b815260200192915050565b6000614aaa601b8361588e565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614ae360248361588e565b7f466c616720726577617264207472616e7366657220646964206e6f742073756381526318d9595960e21b602082015260400192915050565b6b526577617264457363726f7760a01b9052565b6000614b3d60188361588e565b7f4e657720657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000614b76602883610b7c565b7f45786368616e67655265636c61696d28616464726573732c627974657333322c81526775696e743235362960c01b602082015260280192915050565b6000614bc0601e8361588e565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b6000614bf960138361588e565b721cdb9e081d1c985b9cd9995c8819985a5b1959606a1b815260200192915050565b6000614c28601b8361588e565b7f43616e6e6f742062652072756e206f6e2074686973206c617965720000000000815260200192915050565b6000614c61603183610b7c565b7f45786368616e6765547261636b696e6728627974657333322c627974657333328152702c75696e743235362c75696e743235362960781b602082015260310192915050565b6000614cb4601183610b7c565b70026b4b9b9b4b7339030b2323932b9b99d1607d1b815260110192915050565b6000614ce1603e83610b7c565b7f53796e746845786368616e676528616464726573732c627974657333322c756981527f6e743235362c627974657333322c75696e743235362c616464726573732900006020820152603e0192915050565b6000614d4060268361588e565b7f43616e6e6f74207472616e73666572207374616b6564206f7220657363726f778152650cac840a69cb60d31b602082015260400192915050565b6000614d88601e8361588e565b7f412073796e7468206f7220534e58207261746520697320696e76616c69640000815260200192915050565b6000614dc1602f8361588e565b7f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726681526e37b936903a3434b99030b1ba34b7b760891b602082015260400192915050565b6000614e1260248361588e565b7f5472616e7366657220746f204c697175696461746f72526577617264732066618152631a5b195960e21b602082015260400192915050565b6000614e58602183610b7c565b7f417070726f76616c28616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b6000614e9b60178361588e565b7f4d757374206c6971756964617465207573696e67205633000000000000000000815260200192915050565b6000614ed4602783610b7c565b7f45786368616e676552656261746528616464726573732c627974657333322c75815266696e743235362960c81b602082015260270192915050565b6000614f1d60248361588e565b7f4f6e6c79204c3120446562744d69677261746f72206f72204c65676163794d618152631c9ad95d60e21b602082015260400192915050565b6000614f63601a83610b7c565b7f546f6b656e5374617465557064617465642861646472657373290000000000008152601a0192915050565b6000614f9c603283610b7c565b7f4163636f756e744c69717569646174656428616464726573732c75696e743235815271362c75696e743235362c616464726573732960701b602082015260320192915050565b6d2932bbb0b93222b9b1b937bbab1960911b9052565b6000615006601983610b7c565b7f5265736f6c766572206d697373696e67207461726765743a2000000000000000815260190192915050565b600061503f60298361588e565b7f4c697175696461746520726577617264207472616e7366657220646964206e6f8152681d081cdd58d8d9595960ba1b602082015260400192915050565b600061508a60158361588e565b7463616e6e6f742073656c66206c697175696461746560581b815260200192915050565b6411195c1bdd60da1b9052565b60006150c8601d8361588e565b7f43616e206f6e6c7920626520696e766f6b656420627920627269646765000000815260200192915050565b600061510160188361588e565b7f4f6c6420657363726f77206164647265737320756e7365740000000000000000815260200192915050565b600061513a602183610b7c565b7f5472616e7366657228616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b600061517d60178361588e565b7f4f6e6c79207468652070726f78792063616e2063616c6c000000000000000000815260200192915050565b7f53796e746865746978427269646765546f4f7074696d69736d000000000000009052565b60006151db601e8361588e565b7f63616e6e6f74206d69677261746520746f2073616d6520616464726573730000815260200192915050565b732932bbb0b93222b9b1b937bbab19233937bd32b760611b9052565b614862816158bf565b6000610c9682614b69565b6000610c9682614c54565b600061524d82614ca7565b915061525982846148dc565b50602001919050565b6000610c9682614cd4565b6000610c9682614e4b565b6000610c9682614ec7565b6000610c9682614f56565b6000610c9682614f8f565b600061524d82614ff9565b6000610c968261512d565b60208101610c968284614868565b60208101610c968284614859565b604081016152d98285614868565b610ef16020830184614868565b608081016152f48287614868565b6153016020830186614859565b61530e60408301856148d3565b6115766060830184614937565b610120810161532a828c614868565b615337602083018b614868565b615344604083018a6148d3565b61535160608301896148d3565b61535e60808301886148d3565b61536b60a0830187614868565b61537860c08301866148ca565b61538560e0830185614868565b6153936101008301846148d3565b9a9950505050505050505050565b606081016153af8286614868565b6153bc6020830185614868565b61333d60408301846148d3565b608081016153d78287614868565b6153e46020830186614868565b6153f160408301856148d3565b61157660608301846148d3565b6040810161540c8285614868565b610ef160208301846148ca565b604081016154278285614868565b610ef160208301846148d3565b60208082528101610ef18184614871565b60208101610c9682846148ca565b60208101610c9682846148d3565b604081016152d982856148d3565b6040810161540c82856148d3565b6040810161542782856148d3565b6040810161549982856148d3565b8181036020830152610eee81846148ed565b60a081016154b982886148d3565b6154c660208301876148d3565b6154d360408301866148d3565b6154e060608301856148d3565b6154ed6080830184614868565b9695505050505050565b6060810161550582866148d3565b6153bc60208301856148d3565b60c0808252810161552381896148ed565b90506155326020830188614937565b61553f60408301876148d3565b61554c606083018661492e565b615559608083018561492e565b61556660a083018461492e565b979650505050505050565b60c0808252810161558281896148ed565b90506155916020830188614937565b61559e60408301876148d3565b61554c60608301866148d3565b60c080825281016155bc81896148ed565b90506155cb6020830188614937565b6155d860408301876148d3565b6155e560608301866148d3565b61555960808301856148d3565b60208101610c968284614925565b60208082528101610ef181846148ed565b60208082528101610b7981614940565b60208101610b7c82614979565b60208082528101610b7981614997565b60208101610b7c826149ee565b60208082528101610b7981614a05565b60208082528101610b7981614a34565b60208082528101610b7981614a6d565b60208082528101610b7981614a9d565b60208082528101610b7981614ad6565b60208101610b7c82614b1c565b60208082528101610b7981614bb3565b60208082528101610b7981614bec565b60208082528101610b7981614c1b565b60208082528101610b7981614d33565b60208082528101610b7981614d7b565b60208082528101610b7981614db4565b60208082528101610b7981614e05565b60208082528101610b7981614e8e565b60208082528101610b7981614f10565b60208101610b7c82614fe3565b6040810161575282614fe3565b8181036020830152610b7981614b30565b60208082528101610b7981615032565b60208082528101610b798161507d565b60208101610b7c826150ae565b60208082528101610b79816150bb565b60208082528101610b7981615170565b60208101610b7c826151a9565b60208082528101610b79816151ce565b604081016157da82615207565b8181036020830152610b79816150f4565b604081016157f982856148d3565b610ef16020830184614925565b6060810161581482866148d3565b61582160208301856148d3565b61333d6040830184614868565b60208101610c968284615223565b60405181810167ffffffffffffffff8111828210171561585b57600080fd5b604052919050565b600067ffffffffffffffff82111561587a57600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610b79826139c8565b151590565b6000610b7982615897565b67ffffffffffffffff1690565b60ff1690565b6000610b79826158a7565b6000610b796148e883610d4f565b6000610b7982610d4f565b60005b838110156159045781810151838201526020016158ec565b83811115610ad95750506000910152565b601f01601f191690565b61592881615897565b811461115757600080fd5b615928816158a2565b61592881610d4f565b615928816158a7565b615928816158b256fea365627a7a723158208c8942e3eb4c747c5421180f7114f8019d76be039e8a27ad675bb90e6f62ee376c6578706572696d656e74616cf564736f6c63430005100040", "abi": [ { "inputs": [ @@ -24685,10 +24685,10 @@ } ], "source": { - "keccak256": "0xc74c72f453dbf6b9fa32ba686c5f45b62f906b77beba50e2e5b21606a483e38d", + "keccak256": "0x9023d9e36b889055353a27eb9c00ac211202574ac8569730d9e3577f3f2c3727", "urls": [ - "bzz-raw://b2b075533b0c7eefa45ddaa33f4d851ecf7e488ec7e6676e6e2884305c8ca424", - "dweb:/ipfs/QmeQKXy3g9odLpjbtKwSpofBj2Ee3MoyPC89Hr1pmBV2mV" + "bzz-raw://7e20da8e2c49372258fdbdf32c0cf24418be82ac26cf3fa9d7fc461d9cbc2aed", + "dweb:/ipfs/QmZkYBb8buUvzmwwE26K4MbAMAuhiEjHnd8BLsYdtpM42e" ] }, "metadata": { @@ -24710,10 +24710,10 @@ }, "sources": { "MintableSynthetix.sol": { - "keccak256": "0xc74c72f453dbf6b9fa32ba686c5f45b62f906b77beba50e2e5b21606a483e38d", + "keccak256": "0x9023d9e36b889055353a27eb9c00ac211202574ac8569730d9e3577f3f2c3727", "urls": [ - "bzz-raw://b2b075533b0c7eefa45ddaa33f4d851ecf7e488ec7e6676e6e2884305c8ca424", - "dweb:/ipfs/QmeQKXy3g9odLpjbtKwSpofBj2Ee3MoyPC89Hr1pmBV2mV" + "bzz-raw://7e20da8e2c49372258fdbdf32c0cf24418be82ac26cf3fa9d7fc461d9cbc2aed", + "dweb:/ipfs/QmZkYBb8buUvzmwwE26K4MbAMAuhiEjHnd8BLsYdtpM42e" ] } }, diff --git a/publish/deployed/mainnet-ovm/perpsv2-markets.json b/publish/deployed/mainnet-ovm/perpsv2-markets.json index a741ea34a..e90a76c6e 100644 --- a/publish/deployed/mainnet-ovm/perpsv2-markets.json +++ b/publish/deployed/mainnet-ovm/perpsv2-markets.json @@ -118,7 +118,7 @@ "takerFee": "0.3", "takerFeeDelayedOrder": "0.3", "makerFeeDelayedOrder": "0.3", - "makerFeeOffchainDelayedOrder": "0.0002", + "makerFeeOffchainDelayedOrder": "0.000001", "takerFeeOffchainDelayedOrder": "0.0008", "nextPriceConfirmWindow": "2", "delayedOrderConfirmWindow": "120", @@ -129,13 +129,13 @@ "maxLeverage": "27.5", "maxMarketValue": "460000", "maxFundingVelocity": "36", - "skewScale": "2812500", + "skewScale": "2100000", "offchainPriceDivergence": "0.10", "liquidationPremiumMultiplier": "1.5625", "offchainMarketKey": "ocSOLPERP", "liquidationBufferRatio": "0.0100", - "maxPD": "0.002", - "maxLiquidationDelta": "0.001", + "maxPD": "0.001602", + "maxLiquidationDelta": "0.000801", "paused": false, "offchainPaused": false }, @@ -351,7 +351,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "400000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "10000000", "offchainPriceDivergence": "0.10", @@ -1417,7 +1417,7 @@ "maxLeverage": "27.5", "maxMarketValue": "362300", "maxFundingVelocity": "36", - "skewScale": "3250000", + "skewScale": "9750000", "offchainPriceDivergence": "0.10", "liquidationPremiumMultiplier": "3", "offchainMarketKey": "ocWLDPERP", @@ -1555,7 +1555,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "263200", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "3750000", "offchainPriceDivergence": "0.10", @@ -1752,7 +1752,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "400000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "10687500", "offchainPriceDivergence": "0.10", @@ -2201,7 +2201,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "900000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "8500000", "offchainPriceDivergence": "0.10", @@ -2259,7 +2259,7 @@ "maxLeverage": "27.5", "maxMarketValue": "2000000", "maxFundingVelocity": "36", - "skewScale": "14437500", + "skewScale": "35000000", "offchainPriceDivergence": "0.10", "liquidationPremiumMultiplier": "3", "offchainMarketKey": "ocPYTHPERP", @@ -2425,7 +2425,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "40000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "750000", "offchainPriceDivergence": "0.10", diff --git a/publish/deployed/mainnet-ovm/versions.json b/publish/deployed/mainnet-ovm/versions.json index 1643e5907..c3d152b80 100644 --- a/publish/deployed/mainnet-ovm/versions.json +++ b/publish/deployed/mainnet-ovm/versions.json @@ -5921,8 +5921,9 @@ }, "Synthetix": { "address": "0x5A41F634958dB9183e9d0d1Cd8Dee439B6ABb3BF", - "status": "current", - "keccak256": "0xc74c72f453dbf6b9fa32ba686c5f45b62f906b77beba50e2e5b21606a483e38d" + "status": "replaced", + "keccak256": "0xc74c72f453dbf6b9fa32ba686c5f45b62f906b77beba50e2e5b21606a483e38d", + "replaced_in": "v2.101.3" } } }, @@ -5950,5 +5951,20 @@ "keccak256": "0xc9560e9672c3dff5c5bea2a78274b3e808bd6cdf338cc4091df5a59c58990f6e" } } + }, + "v2.101.3": { + "tag": "v2.101.3", + "fulltag": "v2.101.3", + "release": "Acrab", + "network": "mainnet", + "date": "2024-08-26T10:37:17-04:00", + "commit": "b888832c963a9fbfe92d50ada2a2452d161fe5c6", + "contracts": { + "Synthetix": { + "address": "0x3f2A1F997Ef089798d19473D96be484Aeb3E4ECf", + "status": "current", + "keccak256": "0x9023d9e36b889055353a27eb9c00ac211202574ac8569730d9e3577f3f2c3727" + } + } } } diff --git a/publish/deployed/mainnet/deployment.json b/publish/deployed/mainnet/deployment.json index c9cc34f77..db00957d4 100644 --- a/publish/deployed/mainnet/deployment.json +++ b/publish/deployed/mainnet/deployment.json @@ -155,11 +155,11 @@ }, "Synthetix": { "name": "Synthetix", - "address": "0xd711709eFc452152B7ad11DbD01ed4B69c9421B3", + "address": "0xc5f0b4194455e0C175ab68C501400e46C7203504", "source": "Synthetix", - "link": "https://etherscan.io/address/0xd711709eFc452152B7ad11DbD01ed4B69c9421B3", - "timestamp": "2024-03-07T16:41:47.000Z", - "txn": "https://etherscan.io/tx/0x1d6ef9f991835b79126a9e9ee69e9f129a5fe094b930f5ac561283ff675ac167", + "link": "https://etherscan.io/address/0xc5f0b4194455e0C175ab68C501400e46C7203504", + "timestamp": "2024-08-19T13:55:35.000Z", + "txn": "https://etherscan.io/tx/0x84fda049dec0e85c997d5014a5e1c4a9a7dc74cb971e2156d6f809355a01bb1f", "network": "mainnet", "constructorArgs": [ "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", @@ -9011,7 +9011,7 @@ } }, "Synthetix": { - "bytecode": "60806040523480156200001157600080fd5b506040516200638438038062006384833981016040819052620000349162000315565b84848484848085856040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e000000000000000000815250604051806040016040528060038152602001620a69cb60eb1b81525086601289868160006001600160a01b0316816001600160a01b03161415620000d35760405162461bcd60e51b8152600401620000ca9062000463565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383161781556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91620001209184906200042b565b60405180910390a1506000546001600160a01b0316620001545760405162461bcd60e51b8152600401620000ca9062000451565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e90620001a19083906200041b565b60405180910390a150600480546001600160a01b0319166001600160a01b0388161790558451620001da90600590602088019062000243565b508351620001f090600690602087019062000243565b50506007919091556008805460ff191660ff90921691909117610100600160a81b0319166101006001600160a01b0397909716969096029590951790945550620004e19c50505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028657805160ff1916838001178555620002b6565b82800160010185558215620002b6579182015b82811115620002b657825182559160200191906001019062000299565b50620002c4929150620002c8565b5090565b620002e591905b80821115620002c45760008155600101620002cf565b90565b8051620002f581620004b1565b92915050565b8051620002f581620004cb565b8051620002f581620004d6565b600080600080600060a086880312156200032e57600080fd5b60006200033c8888620002e8565b95505060206200034f88828901620002fb565b94505060406200036288828901620002e8565b9350506060620003758882890162000308565b92505060806200038888828901620002e8565b9150509295509295909350565b620003a081620004a4565b82525050565b620003a0816200047e565b6000620003c060118362000475565b7013dddb995c881b5d5cdd081899481cd95d607a1b815260200192915050565b6000620003ef60198362000475565b7f4f776e657220616464726573732063616e6e6f74206265203000000000000000815260200192915050565b60208101620002f5828462000395565b604081016200043b828562000395565b6200044a6020830184620003a6565b9392505050565b60208082528101620002f581620003b1565b60208082528101620002f581620003e0565b90815260200190565b6000620002f58262000498565b6000620002f5826200047e565b6001600160a01b031690565b6000620002f5826200048b565b620004bc816200047e565b8114620004c857600080fd5b50565b620004bc816200048b565b620004bc81620002e5565b615e9380620004f16000396000f3fe608060405234801561001057600080fd5b50600436106104495760003560e01c80636c00f310116102415780639f7698071161013b578063d37c4d8b116100c3578063e8e09b8b11610087578063e8e09b8b146108f3578063e90dd9e214610906578063ec5568891461090e578063edef719a146106b0578063ee52a2f31461091657610449565b8063d37c4d8b146108aa578063d67bdd25146108bd578063d8a1f76f146108c5578063dbf63340146108d8578063dd62ed3e146108e057610449565b8063ace88afd1161010a578063ace88afd14610856578063af086c7e14610869578063bc67f83214610871578063c2bf388014610884578063c836fa0a1461089757610449565b80639f7698071461080a578063a311c7c21461081d578063a5fdc5de14610830578063a9059cbb1461084357610449565b806384358843116101c95780639324cac71161018d5780639324cac7146107cc57806395d89b41146107d457806397107d6d146107dc5780639741fb22146107ef578063987757dd146107f757610449565b80638435884314610775578063899ffef4146107965780638a2900141461079e5780638da5cb5b146107b157806391e56b68146107b957610449565b806372cb051f1161021057806372cb051f1461072a578063741853601461073f57806379ba509714610747578063835e119c1461074f57806383d625d41461076257610449565b80636c00f310146106de5780636f01a986146106f1578063704e7b851461070457806370a082311461071757610449565b80632c955fa71161035257806344b3e923116102da5780635e22846a1161029e5780635e22846a14610695578063614d08f8146106a8578063666ed4f1146106b05780636ac0bf9c146106c35780636b76222f146106d657610449565b806344b3e9231461064a5780634e99bda91461065d578063528c7efb1461066557806353a47bb71461066d5780635af090ef1461068257610449565b806330ead7601161032157806330ead760146105f6578063313ce56714610609578063320223db1461061157806332608039146106245780633e89b9e51461063757610449565b80632c955fa7146105a85780632d3169eb146105bb5780632e0f2625146105ce5780632f7206ce146105e357610449565b806316b2213f116103d557806323b872dd116103a457806323b872dd1461055f5780632621716f14610572578063295da87d146105855780632a905318146105985780632af64bd3146105a057610449565b806316b2213f1461052957806318160ddd1461053c57806318821400146105445780631fce304d1461054c57610449565b8063095ea7b31161041c578063095ea7b3146104ab5780630e30963c146104cb5780631137aedf146104ec5780631249c58b1461050e5780631627540c1461051657610449565b806303fbc5471461044e57806304f3bcec1461045857806305b3c1c91461047657806306fdde0314610496575b600080fd5b610456610929565b005b610460610b16565b60405161046d9190615aeb565b60405180910390f35b6104896104843660046146ea565b610b2a565b60405161046d919061594c565b61049e610bb7565b60405161046d9190615af9565b6104be6104b93660046147ad565b610c45565b60405161046d919061593e565b6104de6104d9366004614a00565b610cd2565b60405161046d929190615ce4565b6104ff6104fa3660046146ea565b610de1565b60405161046d939291906159f0565b6104be610e76565b6104566105243660046146ea565b611230565b6104896105373660046146ea565b61128e565b6104896112c3565b61049e6112c9565b6104be61055a3660046149c4565b611302565b6104be61056d366004614760565b611397565b6104896105803660046146ea565b6113d6565b6104566105933660046149c4565b6115b7565b61049e611638565b6104be611657565b6104566105b63660046146ea565b611773565b6104566105c9366004614a00565b6117bf565b6105d6611875565b60405161046d9190615d27565b6104566105f13660046148f7565b61187a565b610489610604366004614a43565b61193c565b6105d66119fa565b61045661061f3660046146ea565b611a03565b6104606106323660046149c4565b611a4f565b6104896106453660046149c4565b611ad4565b610489610658366004614ab8565b611b0c565b6104be611bc4565b6104be611c43565b610675611e23565b60405161046d91906156e5565b610489610690366004614a43565b611e32565b6104be6106a33660046146ea565b611e92565b610489611ebe565b6104566106be3660046147ad565b611ece565b6104896106d13660046146ea565b611eda565b610456611fe2565b6104566106ec3660046148f7565b61208d565b6104566106ff3660046147dd565b6120e0565b6104be6107123660046147ad565b612199565b6104896107253660046146ea565b6121c4565b6107326121f6565b60405161046d919061592d565b610456612274565b6104566123c6565b61046061075d3660046149c4565b612462565b6104896107703660046149c4565b612497565b6107886107833660046146ea565b6124cf565b60405161046d929190615976565b610732612804565b6104566107ac3660046149c4565b612898565b6106756128e2565b6104896107c7366004614870565b6128f1565b6104896129b1565b61049e6129bc565b6104566107ea3660046146ea565b612a17565b610456612a6a565b6104ff6108053660046149c4565b612ae3565b610456610818366004614b2d565b612b59565b61048961082b3660046146ea565b612b85565b61048961083e3660046146ea565b612bba565b6104be6108513660046147ad565b612bef565b6104566108643660046147dd565b612c39565b610456612c86565b61045661087f3660046146ea565b612ccf565b6104566108923660046147ad565b612cf9565b6104896108a536600461480f565b612d7d565b6104896108b83660046147ad565b612e3b565b610675612ec2565b6104566108d33660046149c4565b612ed1565b610489612ed9565b6104896108ee366004614726565b612f53565b6104566109013660046147ad565b612f87565b610460612fd5565b610460612fe4565b610489610924366004614a22565b612ff3565b6109316130af565b60085460405163dacb2d0160e01b815260009161010090046001600160a01b03169063dacb2d019061096590600401615cc6565b60206040518083038186803b15801561097d57600080fd5b505afa158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b59190810190614708565b60085460405163dacb2d0160e01b81529192506000916101009091046001600160a01b03169063dacb2d01906109ed90600401615c3e565b60206040518083038186803b158015610a0557600080fd5b505afa158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3d9190810190614708565b9050816001600160a01b0316816001600160a01b03161415610a7a5760405162461bcd60e51b8152600401610a7190615cb6565b60405180910390fd5b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610aac918791016156e5565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610afc91908101906149e2565b90508015610b1157610b0f8383836130d9565b505b505050565b60085461010090046001600160a01b031681565b6000610b346132b5565b6001600160a01b03166305b3c1c9836040518263ffffffff1660e01b8152600401610b5f91906156e5565b60206040518083038186803b158015610b7757600080fd5b505afa158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610baf91908101906149e2565b90505b919050565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c3d5780601f10610c1257610100808354040283529160200191610c3d565b820191906000526020600020905b815481529060010190602001808311610c2057829003601f168201915b505050505081565b6000610c4f6132c9565b60035460048054604051633691826360e21b81526001600160a01b03938416939091169163da46098c91610c89918591899189910161584b565b600060405180830381600087803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b50505050610cc6818585613308565b60019150505b92915050565b6000808584610ce18282613388565b610ce96132c9565b610cf16133e9565b6001600160a01b0316634f8633d2600360009054906101000a90046001600160a01b0316600360009054906101000a90046001600160a01b03168b8b8b600360009054906101000a90046001600160a01b03166001600360009054906101000a90046001600160a01b03168e6040518a63ffffffff1660e01b8152600401610d81999897969594939291906157fb565b6040805180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd29190810190614b99565b93509350505094509492505050565b6000806000610dee6132b5565b6001600160a01b0316631137aedf856040518263ffffffff1660e01b8152600401610e1991906156e5565b60606040518083038186803b158015610e3157600080fd5b505afa158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e699190810190614bc9565b9250925092509193909250565b6000610e80613400565b6000610e8a613454565b6001600160a01b03161415610eb15760405162461bcd60e51b8152600401610a7190615bf1565b6000610ebb613475565b90506000610ec7613454565b90506000826001600160a01b031663cc5c095c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3c91908101906149e2565b905060008111610f5e5760405162461bcd60e51b8152600401610a7190615c89565b610f6a60003083613491565b604051637e7961d760e01b81526000906001600160a01b03851690637e7961d790610f9990859060040161594c565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610feb91908101906149e2565b90506000610fff838363ffffffff6134d416565b600480546040516370a0823160e01b81529293506001600160a01b03169163b46310f691879161109b91869186916370a082319161103f918791016156e5565b60206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061108f91908101906149e2565b9063ffffffff6134fc16565b6040518363ffffffff1660e01b81526004016110b89291906158c3565b600060405180830381600087803b1580156110d257600080fd5b505af11580156110e6573d6000803e3d6000fd5b505050506110f5308583613491565b604051630b32e9c760e31b81526001600160a01b038516906359974e389061112190849060040161594c565b602060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061117391908101906149a6565b50600480546040516370a0823160e01b81526001600160a01b039091169163b46310f69133916111b391879186916370a082319161103f918791016156f3565b6040518363ffffffff1660e01b81526004016111d0929190615701565b600060405180830381600087803b1580156111ea57600080fd5b505af11580156111fe573d6000803e3d6000fd5b5050505061120d303384613491565b600754611220908463ffffffff6134fc16565b6007555060019450505050505b90565b6112386130af565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906112839083906156e5565b60405180910390a150565b60006112986132b5565b6001600160a01b03166316b2213f836040518263ffffffff1660e01b8152600401610b5f91906156e5565b60075481565b6040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e00000000000000000081525081565b60008061130d6133e9565b6003546040516301670a7b60e21b81526001600160a01b039283169263059c29ec926113409291169087906004016158c3565b60206040518083038186803b15801561135857600080fd5b505afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139091908101906149e2565b1192915050565b60006113a1613521565b6113a9613576565b6113b384836135b6565b506003546113cc906001600160a01b0316858585613887565b90505b9392505050565b6000806113e1613933565b6001600160a01b031663204b676a846040518263ffffffff1660e01b815260040161140c91906156e5565b60206040518083038186803b15801561142457600080fd5b505afa158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061145c91908101906149e2565b905060006114686145b5565b60005b8381101561159e5761147b613933565b6001600160a01b031663ae58254987836040518363ffffffff1660e01b81526004016114a89291906158c3565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114f891908101906149e2565b9250611502613933565b6001600160a01b03166345626bd687856040518363ffffffff1660e01b815260040161152f9291906158c3565b604080518083038186803b15801561154657600080fd5b505afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157e9190810190614b4b565b602081015190925015611596579350610bb292505050565b60010161146b565b5060405162461bcd60e51b8152600401610a7190615b64565b6115bf613400565b6115c76132c9565b6115cf6132b5565b60035460405163b06e8c6560e01b81526001600160a01b039283169263b06e8c65926116029291169085906004016158c3565b600060405180830381600087803b15801561161c57600080fd5b505af1158015611630573d6000803e3d6000fd5b505050505b50565b604051806040016040528060038152602001620a69cb60eb1b81525081565b60006060611663612804565b905060005b815181101561176a57600082828151811061167f57fe5b602090810291909101810151600081815260099092526040918290205460085492516321f8a72160e01b81529193506001600160a01b0390811692610100900416906321f8a721906116d590859060040161594c565b60206040518083038186803b1580156116ed57600080fd5b505afa158015611701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117259190810190614708565b6001600160a01b031614158061175057506000818152600960205260409020546001600160a01b0316155b15611761576000935050505061122d565b50600101611668565b50600191505090565b61177b613400565b6117836132c9565b61178b6132b5565b60035460405163159fa0d560e11b81526001600160a01b0392831692632b3f41aa926116029286929091169060040161571c565b6117c761394f565b6002546040516001600160a01b039091169063907dff97906117f1908690869086906020016159f0565b604051602081830303815290604052600260405161180e9061566d565b6040519081900381206001600160e01b031960e086901b16825261183d9392918a906000908190600401615a6a565b600060405180830381600087803b15801561185757600080fd5b505af115801561186b573d6000803e3d6000fd5b5050505050505050565b601281565b61188261394f565b6002546040516001600160a01b039091169063907dff97906118b090889088908890889088906020016159a4565b60405160208183030381529060405260026040516118cd90615657565b60405180910390206118de8b613987565b6000806040518763ffffffff1660e01b815260040161190296959493929190615a6a565b600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b50505050505050505050565b6000858461194a8282613388565b6119526132c9565b61195a6133e9565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d29261199c9291169081908d908d908d9084906000908f908f906004016157fb565b6040805180830381600087803b1580156119b557600080fd5b505af11580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119ed9190810190614b99565b5098975050505050505050565b60085460ff1681565b611a0b613400565b611a136132c9565b611a1b6132b5565b60035460405163fd864ccf60e01b81526001600160a01b039283169263fd864ccf926116029286929091169060040161571c565b6000611a596132b5565b6001600160a01b03166332608039836040518263ffffffff1660e01b8152600401611a84919061594c565b60206040518083038186803b158015611a9c57600080fd5b505afa158015611ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610baf9190810190614b0f565b6000611ade6132b5565b6001600160a01b0316637b1001b78360016040518363ffffffff1660e01b8152600401610b5f929190615968565b60008584611b1a8282613388565b611b226132c9565b611b2a6133e9565b60035460405162674ed160e71b81526001600160a01b03928316926333a7688092611b66929116908c908c908c9084908d908d906004016158d1565b602060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bb891908101906149e2565b98975050505050505050565b6000611bce6132b5565b6001600160a01b0316634e99bda96040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0657600080fd5b505afa158015611c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c3e91908101906149a6565b905090565b6000611c4d613576565b611c556132c9565b6003546001600160a01b0316611c69613993565b6001600160a01b031663c00007b0826040518263ffffffff1660e01b8152600401611c9491906156e5565b600060405180830381600087803b158015611cae57600080fd5b505af1158015611cc2573d6000803e3d6000fd5b50505050600080611cd16132b5565b6001600160a01b03166372c658168460016040518363ffffffff1660e01b8152600401611cff9291906158a8565b606060405180830381600087803b158015611d1957600080fd5b505af1158015611d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d519190810190614bc9565b509150915060008111611d765760405162461bcd60e51b8152600401610a7190615c6c565b611d82838383866139b2565b6000611d9684611d90613993565b85613a2e565b905080611db55760405162461bcd60e51b8152600401610a7190615c11565b611dbd613993565b6001600160a01b0316633c6b16ab846040518263ffffffff1660e01b8152600401611de8919061594c565b600060405180830381600087803b158015611e0257600080fd5b505af1158015611e16573d6000803e3d6000fd5b5092965050505050505090565b6001546001600160a01b031681565b60008584611e408282613388565b611e486132c9565b611e506133e9565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d29261199c9291169081908d908d908d9032906000908f908f90600401615775565b6000611e9c613576565b611ea46132c9565b600354610baf9083906000906001600160a01b0316613a3b565b680a6f2dce8d0cae8d2f60bb1b81565b611ed6613e3d565b5050565b6000611ee46132b5565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938793909116916370a0823191611f1f918591016156e5565b60206040518083038186803b158015611f3757600080fd5b505afa158015611f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f6f91908101906149e2565b6040518363ffffffff1660e01b8152600401611f8c9291906158c3565b604080518083038186803b158015611fa357600080fd5b505afa158015611fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fdb9190810190614b69565b5092915050565b611fea6130af565b6004546000906001600160a01b03166370a08231612006613e55565b6040518263ffffffff1660e01b815260040161202291906156e5565b60206040518083038186803b15801561203a57600080fd5b505afa15801561204e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061207291908101906149e2565b9050611ed661207f613e55565b612087613933565b836130d9565b61209561394f565b6002546040516001600160a01b039091169063907dff97906120c390889088908890889088906020016159a4565b60405160208183030381529060405260026040516118cd90615698565b6120e861394f565b6002546040516001600160a01b039091169063907dff97906121109085908590602001615976565b604051602081830303815290604052600260405161212d906156ae565b604051809103902061213e88613987565b6000806040518763ffffffff1660e01b815260040161216296959493929190615a6a565b600060405180830381600087803b15801561217c57600080fd5b505af1158015612190573d6000803e3d6000fd5b50505050505050565b60006121a3613576565b6121ab6132c9565b6003546113cf90849084906001600160a01b0316613a3b565b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610b5f918691016156e5565b60606122006132b5565b6001600160a01b03166372cb051f6040518163ffffffff1660e01b815260040160006040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c3e9190810190614971565b606061227e612804565b905060005b8151811015611ed657600082828151811061229a57fe5b602002602001015190506000600860019054906101000a90046001600160a01b03166001600160a01b031663dacb2d0183846040516020016122dc91906156cf565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612308929190615984565b60206040518083038186803b15801561232057600080fd5b505afa158015612334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123589190810190614708565b6000838152600960205260409081902080546001600160a01b0319166001600160a01b038416179055519091507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa68906123b4908490849061595a565b60405180910390a15050600101612283565b6001546001600160a01b031633146123f05760405162461bcd60e51b8152600401610a7190615b27565b6000546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c92612433926001600160a01b039182169291169061571c565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600061246c6132b5565b6001600160a01b031663835e119c836040518263ffffffff1660e01b8152600401611a84919061594c565b60006124a16132b5565b6001600160a01b0316637b1001b78360006040518363ffffffff1660e01b8152600401610b5f929190615968565b6000806124da613576565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a721906125299075446562744d69677261746f724f6e457468657265756d60501b9060040161594c565b60206040518083038186803b15801561254157600080fd5b505afa158015612555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125799190810190614708565b9050336001600160a01b038216148061263557506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906125d0906b131959d858de53585c9ad95d60a21b9060040161594c565b60206040518083038186803b1580156125e857600080fd5b505afa1580156125fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126209190810190614708565b6001600160a01b0316336001600160a01b0316145b6126515760405162461bcd60e51b8152600401610a7190615c21565b600480546040516370a0823160e01b81526001600160a01b03909116916370a0823191612680918891016156e5565b60206040518083038186803b15801561269857600080fd5b505afa1580156126ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126d091908101906149e2565b915081156127065760006126e5853385613a2e565b9050806127045760405162461bcd60e51b8152600401610a7190615bb1565b505b61270e613933565b6001600160a01b031663326a3cfb856040518263ffffffff1660e01b815260040161273991906156e5565b60206040518083038186803b15801561275157600080fd5b505afa158015612765573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061278991908101906149e2565b925082156127fe57612799613933565b6001600160a01b031663de065f6785338660006040518563ffffffff1660e01b81526004016127cb9493929190615737565b600060405180830381600087803b1580156127e557600080fd5b505af11580156127f9573d6000803e3d6000fd5b505050505b50915091565b60608061280f613e6f565b6040805160028082526060808301845293945090916020830190803883390190505090506b526577617264457363726f7760a01b8160008151811061285057fe5b6020026020010181815250506d537570706c795363686564756c6560901b8160018151811061287b57fe5b6020026020010181815250506128918282613fb8565b9250505090565b6128a0613400565b6128a86132c9565b6128b06132b5565b6003546040516285c0d160e31b81526001600160a01b039283169263042e0688926116029291169085906004016158c3565b6000546001600160a01b031681565b600085846128ff8282613388565b6129076132c9565b61290f6133e9565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612952928e92909116908d908d908d9085906000908f908f906004016157fb565b6040805180830381600087803b15801561296b57600080fd5b505af115801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129a39190810190614b99565b509998505050505050505050565b631cd554d160e21b81565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c3d5780601f10610c1257610100808354040283529160200191610c3d565b612a1f6130af565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e906112839083906156f3565b612a72613400565b612a7a6132c9565b612a826132b5565b6003546040516324beb82560e11b81526001600160a01b039283169263497d704a92612ab3929116906004016156e5565b600060405180830381600087803b158015612acd57600080fd5b505af1158015610b0f573d6000803e3d6000fd5b565b6000806000612af06132c9565b612af86133e9565b6003546040516306c5a00b60e21b81526001600160a01b0392831692631b16802c92612b2b9291169088906004016158c3565b606060405180830381600087803b158015612b4557600080fd5b505af1158015610e45573d6000803e3d6000fd5b612b6161406d565b600480546001600160a01b0319166001600160a01b038316179055611635816140db565b6000612b8f6132b5565b6001600160a01b031663a311c7c2836040518263ffffffff1660e01b8152600401610b5f91906156e5565b6000612bc46132b5565b6001600160a01b031663a5fdc5de836040518263ffffffff1660e01b8152600401610b5f91906156e5565b6000612bf9613521565b612c01613576565b600354612c17906001600160a01b0316836135b6565b50600354612c2f906001600160a01b03168484613a2e565b5060019392505050565b612c4161394f565b6002546040516001600160a01b039091169063907dff9790612c699085908590602001615976565b604051602081830303815290604052600260405161212d90615662565b612c8e613400565b612c966132c9565b612c9e6132b5565b60035460405163644bb89960e11b81526001600160a01b039283169263c897713292612ab3929116906004016156e5565b612cd761414d565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b612d01613400565b612d096132c9565b612d116132b5565b600354604051632694552d60e21b81526001600160a01b0392831692639a5154b492612d4792879290911690869060040161584b565b600060405180830381600087803b158015612d6157600080fd5b505af1158015612d75573d6000803e3d6000fd5b505050505050565b60008382612d8b8282613388565b612d936132c9565b612d9b6133e9565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612dde928c92909116908b908b908b908590600090829082906004016157fb565b6040805180830381600087803b158015612df757600080fd5b505af1158015612e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e2f9190810190614b99565b50979650505050505050565b6000612e456132b5565b6001600160a01b031663d37c4d8b84846040518363ffffffff1660e01b8152600401612e729291906158c3565b60206040518083038186803b158015612e8a57600080fd5b505afa158015612e9e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113cf91908101906149e2565b6003546001600160a01b031681565b611635613e3d565b6000612ee36132b5565b6001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b158015612f1b57600080fd5b505afa158015612f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c3e91908101906149e2565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163dd62ed3e91612e7291879187910161571c565b612f8f613400565b612f976132c9565b612f9f6132b5565b60035460405163227635b160e11b81526001600160a01b03928316926344ec6b6292612d4792879290911690869060040161584b565b6004546001600160a01b031681565b6002546001600160a01b031681565b600083826130018282613388565b6130096132c9565b6130116133e9565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d2926130539291169081908b908b908b908490600090829082906004016157fb565b6040805180830381600087803b15801561306c57600080fd5b505af1158015613080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130a49190810190614b99565b509695505050505050565b6000546001600160a01b03163314612ae15760405162461bcd60e51b8152600401610a7190615c01565b60006001600160a01b038316158015906130fc57506001600160a01b0383163014155b801561311657506002546001600160a01b03848116911614155b6131325760405162461bcd60e51b8152600401610a7190615b0a565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f69187916131cd91879186916370a0823191613171918791016156e5565b60206040518083038186803b15801561318957600080fd5b505afa15801561319d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131c191908101906149e2565b9063ffffffff6134d416565b6040518363ffffffff1660e01b81526004016131ea9291906158c3565b600060405180830381600087803b15801561320457600080fd5b505af1158015613218573d6000803e3d6000fd5b5050600480546040516370a0823160e01b81526001600160a01b03909116935063b46310f69250869161325b91879186916370a082319161103f918791016156e5565b6040518363ffffffff1660e01b81526004016132789291906158c3565b600060405180830381600087803b15801561329257600080fd5b505af11580156132a6573d6000803e3d6000fd5b50505050612c2f848484613491565b6000611c3e6524b9b9bab2b960d11b614177565b6002546001600160a01b031633148015906132ef57506003546001600160a01b03163314155b15612ae157600380546001600160a01b03191633179055565b6002546040516001600160a01b039091169063907dff979061332e90849060200161594c565b604051602081830303815290604052600360405161334b906156a3565b604051809103902061335c88613987565b61336588613987565b60006040518763ffffffff1660e01b815260040161216296959493929190615aa4565b6133906141d4565b6001600160a01b0316631ce00ba283836040518363ffffffff1660e01b81526004016133bd929190615976565b60006040518083038186803b1580156133d557600080fd5b505afa158015612d75573d6000803e3d6000fd5b6000611c3e6822bc31b430b733b2b960b91b614177565b6134086141d4565b6001600160a01b0316637c3125416040518163ffffffff1660e01b815260040160006040518083038186803b15801561344057600080fd5b505afa158015610b0f573d6000803e3d6000fd5b6000611c3e722932bbb0b93239a234b9ba3934b13aba34b7b760691b614177565b6000611c3e6d537570706c795363686564756c6560901b614177565b6002546040516001600160a01b039091169063907dff97906134b790849060200161594c565b604051602081830303815290604052600360405161334b906156da565b6000828211156134f65760405162461bcd60e51b8152600401610a7190615ba1565b50900390565b6000828201838110156113cf5760405162461bcd60e51b8152600401610a7190615b74565b6002546001600160a01b031633141561353957612ae1565b613542336141ee565b1561355e57600380546001600160a01b03191633179055612ae1565b60405162461bcd60e51b8152600401610a7190615c99565b61357e6141d4565b6001600160a01b031663086dabd16040518163ffffffff1660e01b815260040160006040518083038186803b15801561344057600080fd5b6008546040516321f8a72160e01b815260009182916101009091046001600160a01b0316906321f8a721906135fe906b131959d858de53585c9ad95d60a21b9060040161594c565b60206040518083038186803b15801561361657600080fd5b505afa15801561362a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061364e9190810190614708565b6003549091506001600160a01b03161580159061367857506003546001600160a01b038281169116145b806136945750806001600160a01b0316846001600160a01b0316145b156136a3576001915050610ccc565b60006136ad6132b5565b6001600160a01b031663d37c4d8b86631cd554d160e21b6040518363ffffffff1660e01b81526004016136e19291906158c3565b60206040518083038186803b1580156136f957600080fd5b505afa15801561370d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061373191908101906149e2565b1115610cc6576000806137426132b5565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938b93909116916370a082319161377d918591016156e5565b60206040518083038186803b15801561379557600080fd5b505afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137cd91908101906149e2565b6040518363ffffffff1660e01b81526004016137ea9291906158c3565b604080518083038186803b15801561380157600080fd5b505afa158015613815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138399190810190614b69565b915091508185111561385d5760405162461bcd60e51b8152600401610a7190615bd1565b801561387b5760405162461bcd60e51b8152600401610a7190615be1565b50600195945050505050565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163da46098c91879189916138cd918891879163dd62ed3e9161317191889188910161571c565b6040518463ffffffff1660e01b81526004016138eb9392919061584b565b600060405180830381600087803b15801561390557600080fd5b505af1158015613919573d6000803e3d6000fd5b505050506139288484846130d9565b90505b949350505050565b6000611c3e6d2932bbb0b93222b9b1b937bbab1960911b614177565b6139576133e9565b6001600160a01b0316336001600160a01b031614612ae15760405162461bcd60e51b8152600401610a7190615b54565b6001600160a01b031690565b6000611c3e704c697175696461746f725265776172647360781b614177565b6002546040516001600160a01b039091169063907dff97906139dc90869086908690602001615cff565b60405160208183030381529060405260026040516139f9906156c4565b6040518091039020613a0a89613987565b6000806040518763ffffffff1660e01b815260040161183d96959493929190615a6a565b60006113cc8484846130d9565b6000613a45613993565b6001600160a01b031663c00007b0856040518263ffffffff1660e01b8152600401613a7091906156e5565b600060405180830381600087803b158015613a8a57600080fd5b505af1158015613a9e573d6000803e3d6000fd5b505050506000806000613aaf6132b5565b6001600160a01b03166372c658168860006040518363ffffffff1660e01b8152600401613add9291906158a8565b606060405180830381600087803b158015613af757600080fd5b505af1158015613b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b2f9190810190614bc9565b919450925090508015613ba857613b44613933565b6001600160a01b031663de065f678889848a6040518563ffffffff1660e01b8152600401613b759493929190615873565b600060405180830381600087803b158015613b8f57600080fd5b505af1158015613ba3573d6000803e3d6000fd5b505050505b613bb4878484886139b2565b6000613bbe61459d565b6001600160a01b0316638074b3726040518163ffffffff1660e01b815260040160206040518083038186803b158015613bf657600080fd5b505afa158015613c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c2e91908101906149e2565b90506000613c3a61459d565b6001600160a01b03166331e4e0306040518163ffffffff1660e01b815260040160206040518083038186803b158015613c7257600080fd5b505afa158015613c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613caa91908101906149e2565b90506000613cb661459d565b6001600160a01b0316635616c9578b6040518263ffffffff1660e01b8152600401613ce191906156e5565b60206040518083038186803b158015613cf957600080fd5b505afa158015613d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613d319190810190614708565b90506000613d408b8386613a2e565b905080613d5f5760405162461bcd60e51b8152600401610a7190615b84565b6000613d6c8c8b86613a2e565b905080613d8b5760405162461bcd60e51b8152600401610a7190615c5c565b8715613e2b576000613da58d613d9f613993565b8b613a2e565b905080613dc45760405162461bcd60e51b8152600401610a7190615c11565b613dcc613993565b6001600160a01b0316633c6b16ab8a6040518263ffffffff1660e01b8152600401613df7919061594c565b600060405180830381600087803b158015613e1157600080fd5b505af1158015613e25573d6000803e3d6000fd5b50505050505b5060019b9a5050505050505050505050565b60405162461bcd60e51b8152600401610a7190615bc1565b6000611c3e6b526577617264457363726f7760a01b614177565b60408051600780825261010082019092526060916020820160e0803883390190505090506b53797374656d53746174757360a01b81600081518110613eb057fe5b6020026020010181815250506822bc31b430b733b2b960b91b81600181518110613ed657fe5b6020026020010181815250506524b9b9bab2b960d11b81600281518110613ef957fe5b602002602001018181525050722932bbb0b93239a234b9ba3934b13aba34b7b760691b81600381518110613f2957fe5b602002602001018181525050704c697175696461746f725265776172647360781b81600481518110613f5757fe5b602002602001018181525050692634b8bab4b230ba37b960b11b81600581518110613f7e57fe5b6020026020010181815250506d2932bbb0b93222b9b1b937bbab1960911b81600681518110613fa957fe5b60200260200101818152505090565b60608151835101604051908082528060200260200182016040528015613fe8578160200160208202803883390190505b50905060005b835181101561402a5783818151811061400357fe5b602002602001015182828151811061401757fe5b6020908102919091010152600101613fee565b5060005b8251811015611fdb5782818151811061404357fe5b602002602001015182828651018151811061405a57fe5b602090810291909101015260010161402e565b6002546001600160a01b0316331480159061409357506003546001600160a01b03163314155b156140ab57600380546001600160a01b031916331790555b6000546003546001600160a01b03908116911614612ae15760405162461bcd60e51b8152600401610a7190615b44565b6002546040516001600160a01b039091169063907dff97906141019084906020016156e5565b604051602081830303815290604052600160405161411e906156b9565b6040519081900381206001600160e01b031960e086901b16825261160293929160009081908190600401615a0b565b6002546001600160a01b03163314612ae15760405162461bcd60e51b8152600401610a7190615c99565b60008181526009602090815260408083205490516001600160a01b0390911691821515916141a791869101615678565b60405160208183030381529060405290611fdb5760405162461bcd60e51b8152600401610a719190615af9565b6000611c3e6b53797374656d53746174757360a01b614177565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a7219061422290600401615ca9565b60206040518083038186803b15801561423a57600080fd5b505afa15801561424e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506142729190810190614708565b6001600160a01b0316826001600160a01b0316148061432357506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906142be90600401615c31565b60206040518083038186803b1580156142d657600080fd5b505afa1580156142ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061430e9190810190614708565b6001600160a01b0316826001600160a01b0316145b806143c057506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061435b90600401615b1a565b60206040518083038186803b15801561437357600080fd5b505afa158015614387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506143ab9190810190614708565b6001600160a01b0316826001600160a01b0316145b8061445d57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906143f890600401615b94565b60206040518083038186803b15801561441057600080fd5b505afa158015614424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506144489190810190614708565b6001600160a01b0316826001600160a01b0316145b806144fa57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061449590600401615b37565b60206040518083038186803b1580156144ad57600080fd5b505afa1580156144c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506144e59190810190614708565b6001600160a01b0316826001600160a01b0316145b80610baf57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061453290600401615c7c565b60206040518083038186803b15801561454a57600080fd5b505afa15801561455e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145829190810190614708565b6001600160a01b0316826001600160a01b0316149050919050565b6000611c3e692634b8bab4b230ba37b960b11b614177565b604080518082019091526000808252602082015290565b8035610ccc81615e18565b8051610ccc81615e18565b600082601f8301126145f357600080fd5b815161460661460182615d5c565b615d35565b9150818183526020840193506020810190508385602084028201111561462b57600080fd5b60005b8381101561465757816146418882614677565b845250602092830192919091019060010161462e565b5050505092915050565b8051610ccc81615e2c565b8035610ccc81615e35565b8051610ccc81615e35565b8051610ccc81615e3e565b8035610ccc81615e3e565b6000604082840312156146aa57600080fd5b6146b46040615d35565b905060006146c284846146df565b82525060206146d384848301614677565b60208301525092915050565b8051610ccc81615e47565b6000602082840312156146fc57600080fd5b600061392b84846145cc565b60006020828403121561471a57600080fd5b600061392b84846145d7565b6000806040838503121561473957600080fd5b600061474585856145cc565b9250506020614756858286016145cc565b9150509250929050565b60008060006060848603121561477557600080fd5b600061478186866145cc565b9350506020614792868287016145cc565b92505060406147a38682870161466c565b9150509250925092565b600080604083850312156147c057600080fd5b60006147cc85856145cc565b92505060206147568582860161466c565b6000806000606084860312156147f257600080fd5b60006147fe86866145cc565b93505060206147928682870161466c565b6000806000806080858703121561482557600080fd5b600061483187876145cc565b94505060206148428782880161466c565b93505060406148538782880161466c565b92505060606148648782880161466c565b91505092959194509250565b60008060008060008060c0878903121561488957600080fd5b600061489589896145cc565b96505060206148a689828a0161466c565b95505060406148b789828a0161466c565b94505060606148c889828a0161466c565b93505060806148d989828a016145cc565b92505060a06148ea89828a0161466c565b9150509295509295509295565b60008060008060008060c0878903121561491057600080fd5b600061491c89896145cc565b965050602061492d89828a0161466c565b955050604061493e89828a0161466c565b945050606061494f89828a0161466c565b935050608061496089828a0161466c565b92505060a06148ea89828a016145cc565b60006020828403121561498357600080fd5b815167ffffffffffffffff81111561499a57600080fd5b61392b848285016145e2565b6000602082840312156149b857600080fd5b600061392b8484614661565b6000602082840312156149d657600080fd5b600061392b848461466c565b6000602082840312156149f457600080fd5b600061392b8484614677565b60008060008060808587031215614a1657600080fd5b6000614831878761466c565b600080600060608486031215614a3757600080fd5b60006147fe868661466c565b600080600080600060a08688031215614a5b57600080fd5b6000614a67888861466c565b9550506020614a788882890161466c565b9450506040614a898882890161466c565b9350506060614a9a888289016145cc565b9250506080614aab8882890161466c565b9150509295509295909350565b600080600080600060a08688031215614ad057600080fd5b6000614adc888861466c565b9550506020614aed8882890161466c565b9450506040614afe8882890161466c565b9350506060614a9a8882890161466c565b600060208284031215614b2157600080fd5b600061392b8484614682565b600060208284031215614b3f57600080fd5b600061392b848461468d565b600060408284031215614b5d57600080fd5b600061392b8484614698565b60008060408385031215614b7c57600080fd5b6000614b888585614677565b925050602061475685828601614661565b60008060408385031215614bac57600080fd5b6000614bb88585614677565b925050602061475685828601614682565b600080600060608486031215614bde57600080fd5b6000614bea8686614677565b9350506020614bfb86828701614677565b92505060406147a386828701614677565b6000614c188383614c9a565b505060200190565b614c2981615dbe565b82525050565b614c2981615d90565b6000614c4382615d83565b614c4d8185615d87565b9350614c5883615d7d565b8060005b83811015614c86578151614c708882614c0c565b9750614c7b83615d7d565b925050600101614c5c565b509495945050505050565b614c2981615d9b565b614c298161122d565b614c29614caf8261122d565b61122d565b6000614cbf82615d83565b614cc98185615d87565b9350614cd9818560208601615de2565b614ce281615e0e565b9093019392505050565b614c2981615da0565b614c2981615dc9565b614c2981615dd7565b6000614d14601f83615d87565b7f43616e6e6f74207472616e7366657220746f2074686973206164647265737300815260200192915050565b75446562744d69677261746f724f6e4f7074696d69736d60501b9052565b6000614d6b603583615d87565b7f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7581527402063616e20616363657074206f776e65727368697605c1b602082015260400192915050565b6e53796e746865746978457363726f7760881b9052565b6000614dd9601383615d87565b7227bbb732b91037b7363c90333ab731ba34b7b760691b815260200192915050565b6000614e08601e83615d87565b7f4f6e6c792045786368616e6765722063616e20696e766f6b6520746869730000815260200192915050565b6000614e41604483610bb2565b7f41746f6d696353796e746845786368616e676528616464726573732c6279746581527f7333322c75696e743235362c627974657333322c75696e743235362c616464726020820152636573732960e01b604082015260440192915050565b6000614ead601483615d87565b73616c6c20656e747269657320617265207a65726f60601b815260200192915050565b6000614edd601b83615d87565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614f16602483615d87565b7f466c616720726577617264207472616e7366657220646964206e6f742073756381526318d9595960e21b602082015260400192915050565b6b526577617264457363726f7760a01b9052565b6000614f70601883615d87565b7f4e657720657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000614fa9602883610bb2565b7f45786368616e67655265636c61696d28616464726573732c627974657333322c81526775696e743235362960c01b602082015260280192915050565b6000614ff3601e83615d87565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b600061502c601383615d87565b721cdb9e081d1c985b9cd9995c8819985a5b1959606a1b815260200192915050565b600061505b601b83615d87565b7f43616e6e6f742062652072756e206f6e2074686973206c617965720000000000815260200192915050565b6000615094603183610bb2565b7f45786368616e6765547261636b696e6728627974657333322c627974657333328152702c75696e743235362c75696e743235362960781b602082015260310192915050565b60006150e7601183610bb2565b70026b4b9b9b4b7339030b2323932b9b99d1607d1b815260110192915050565b6000615114603e83610bb2565b7f53796e746845786368616e676528616464726573732c627974657333322c756981527f6e743235362c627974657333322c75696e743235362c616464726573732900006020820152603e0192915050565b6000615173602683615d87565b7f43616e6e6f74207472616e73666572207374616b6564206f7220657363726f778152650cac840a69cb60d31b602082015260400192915050565b60006151bb601e83615d87565b7f412073796e7468206f7220534e58207261746520697320696e76616c69640000815260200192915050565b60006151f4601b83615d87565b7f52657761726473446973747269627574696f6e206e6f74207365740000000000815260200192915050565b600061522d602f83615d87565b7f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726681526e37b936903a3434b99030b1ba34b7b760891b602082015260400192915050565b600061527e602483615d87565b7f5472616e7366657220746f204c697175696461746f72526577617264732066618152631a5b195960e21b602082015260400192915050565b60006152c4602183610bb2565b7f417070726f76616c28616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b6000615307602783610bb2565b7f45786368616e676552656261746528616464726573732c627974657333322c75815266696e743235362960c81b602082015260270192915050565b6000615350602483615d87565b7f4f6e6c79204c3120446562744d69677261746f72206f72204c65676163794d618152631c9ad95d60e21b602082015260400192915050565b6000615396601a83610bb2565b7f546f6b656e5374617465557064617465642861646472657373290000000000008152601a0192915050565b60006153cf603283610bb2565b7f4163636f756e744c69717569646174656428616464726573732c75696e743235815271362c75696e743235362c616464726573732960701b602082015260320192915050565b6d2932bbb0b93222b9b1b937bbab1960911b9052565b6000615439601983610bb2565b7f5265736f6c766572206d697373696e67207461726765743a2000000000000000815260190192915050565b6000615472602983615d87565b7f4c697175696461746520726577617264207472616e7366657220646964206e6f8152681d081cdd58d8d9595960ba1b602082015260400192915050565b60006154bd601583615d87565b7463616e6e6f742073656c66206c697175696461746560581b815260200192915050565b6411195c1bdd60da1b9052565b60006154fb601583615d87565b744e6f20737570706c79206973206d696e7461626c6560581b815260200192915050565b600061552c601883615d87565b7f4f6c6420657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000615565602183610bb2565b7f5472616e7366657228616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b60006155a8601783615d87565b7f4f6e6c79207468652070726f78792063616e2063616c6c000000000000000000815260200192915050565b7f53796e746865746978427269646765546f4f7074696d69736d000000000000009052565b6000615606601e83615d87565b7f63616e6e6f74206d69677261746520746f2073616d6520616464726573730000815260200192915050565b732932bbb0b93222b9b1b937bbab19233937bd32b760611b9052565b614c2981615db8565b6000610ccc82614e34565b6000610ccc82614f9c565b6000610ccc82615087565b6000615683826150da565b915061568f8284614ca3565b50602001919050565b6000610ccc82615107565b6000610ccc826152b7565b6000610ccc826152fa565b6000610ccc82615389565b6000610ccc826153c2565b60006156838261542c565b6000610ccc82615558565b60208101610ccc8284614c2f565b60208101610ccc8284614c20565b6040810161570f8285614c20565b6113cf6020830184614c9a565b6040810161572a8285614c2f565b6113cf6020830184614c2f565b608081016157458287614c2f565b6157526020830186614c20565b61575f6040830185614c9a565b61576c6060830184614cfe565b95945050505050565b6101208101615784828c614c2f565b615791602083018b614c2f565b61579e604083018a614c9a565b6157ab6060830189614c9a565b6157b86080830188614c9a565b6157c560a0830187614c20565b6157d260c0830186614c91565b6157df60e0830185614c2f565b6157ed610100830184614c9a565b9a9950505050505050505050565b610120810161580a828c614c2f565b615817602083018b614c2f565b615824604083018a614c9a565b6158316060830189614c9a565b61583e6080830188614c9a565b6157c560a0830187614c2f565b606081016158598286614c2f565b6158666020830185614c2f565b61392b6040830184614c9a565b608081016158818287614c2f565b61588e6020830186614c2f565b61589b6040830185614c9a565b61576c6060830184614c9a565b604081016158b68285614c2f565b6113cf6020830184614c91565b6040810161570f8285614c2f565b60e081016158df828a614c2f565b6158ec6020830189614c9a565b6158f96040830188614c9a565b6159066060830187614c9a565b6159136080830186614c2f565b61592060a0830185614c9a565b611bb860c0830184614c9a565b602080825281016113cf8184614c38565b60208101610ccc8284614c91565b60208101610ccc8284614c9a565b6040810161572a8285614c9a565b604081016158b68285614c9a565b6040810161570f8285614c9a565b604081016159928285614c9a565b81810360208301526113cc8184614cb4565b60a081016159b28288614c9a565b6159bf6020830187614c9a565b6159cc6040830186614c9a565b6159d96060830185614c9a565b6159e66080830184614c2f565b9695505050505050565b606081016159fe8286614c9a565b6158666020830185614c9a565b60c08082528101615a1c8189614cb4565b9050615a2b6020830188614cfe565b615a386040830187614c9a565b615a456060830186614cf5565b615a526080830185614cf5565b615a5f60a0830184614cf5565b979650505050505050565b60c08082528101615a7b8189614cb4565b9050615a8a6020830188614cfe565b615a976040830187614c9a565b615a456060830186614c9a565b60c08082528101615ab58189614cb4565b9050615ac46020830188614cfe565b615ad16040830187614c9a565b615ade6060830186614c9a565b615a526080830185614c9a565b60208101610ccc8284614cec565b602080825281016113cf8184614cb4565b60208082528101610baf81614d07565b60208101610bb282614d40565b60208082528101610baf81614d5e565b60208101610bb282614db5565b60208082528101610baf81614dcc565b60208082528101610baf81614dfb565b60208082528101610baf81614ea0565b60208082528101610baf81614ed0565b60208082528101610baf81614f09565b60208101610bb282614f4f565b60208082528101610baf81614fe6565b60208082528101610baf8161501f565b60208082528101610baf8161504e565b60208082528101610baf81615166565b60208082528101610baf816151ae565b60208082528101610baf816151e7565b60208082528101610baf81615220565b60208082528101610baf81615271565b60208082528101610baf81615343565b60208101610bb282615416565b60408101615c4b82615416565b8181036020830152610baf81614f63565b60208082528101610baf81615465565b60208082528101610baf816154b0565b60208101610bb2826154e1565b60208082528101610baf816154ee565b60208082528101610baf8161559b565b60208101610bb2826155d4565b60208082528101610baf816155f9565b60408101615cd382615632565b8181036020830152610baf8161551f565b60408101615cf28285614c9a565b6113cf6020830184614cec565b60608101615d0d8286614c9a565b615d1a6020830185614c9a565b61392b6040830184614c2f565b60208101610ccc828461564e565b60405181810167ffffffffffffffff81118282101715615d5457600080fd5b604052919050565b600067ffffffffffffffff821115615d7357600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610baf82613987565b151590565b6000610baf82615d90565b67ffffffffffffffff1690565b60ff1690565b6000610baf82615da0565b6000610baf614caf8361122d565b6000610baf8261122d565b60005b83811015615dfd578181015183820152602001615de5565b83811115610b0f5750506000910152565b601f01601f191690565b615e2181615d90565b811461163557600080fd5b615e2181615d9b565b615e218161122d565b615e2181615da0565b615e2181615dab56fea365627a7a723158203da0feefa4691535959e364a24e007dd888c79a90e82c413a86ee4cbd7ef59b36c6578706572696d656e74616cf564736f6c63430005100040", + "bytecode": "60806040523480156200001157600080fd5b506040516200648838038062006488833981016040819052620000349162000315565b84848484848085856040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e000000000000000000815250604051806040016040528060038152602001620a69cb60eb1b81525086601289868160006001600160a01b0316816001600160a01b03161415620000d35760405162461bcd60e51b8152600401620000ca9062000463565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0383161781556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91620001209184906200042b565b60405180910390a1506000546001600160a01b0316620001545760405162461bcd60e51b8152600401620000ca9062000451565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e90620001a19083906200041b565b60405180910390a150600480546001600160a01b0319166001600160a01b0388161790558451620001da90600590602088019062000243565b508351620001f090600690602087019062000243565b50506007919091556008805460ff191660ff90921691909117610100600160a81b0319166101006001600160a01b0397909716969096029590951790945550620004e19c50505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028657805160ff1916838001178555620002b6565b82800160010185558215620002b6579182015b82811115620002b657825182559160200191906001019062000299565b50620002c4929150620002c8565b5090565b620002e591905b80821115620002c45760008155600101620002cf565b90565b8051620002f581620004b1565b92915050565b8051620002f581620004cb565b8051620002f581620004d6565b600080600080600060a086880312156200032e57600080fd5b60006200033c8888620002e8565b95505060206200034f88828901620002fb565b94505060406200036288828901620002e8565b9350506060620003758882890162000308565b92505060806200038888828901620002e8565b9150509295509295909350565b620003a081620004a4565b82525050565b620003a0816200047e565b6000620003c060118362000475565b7013dddb995c881b5d5cdd081899481cd95d607a1b815260200192915050565b6000620003ef60198362000475565b7f4f776e657220616464726573732063616e6e6f74206265203000000000000000815260200192915050565b60208101620002f5828462000395565b604081016200043b828562000395565b6200044a6020830184620003a6565b9392505050565b60208082528101620002f581620003b1565b60208082528101620002f581620003e0565b90815260200190565b6000620002f58262000498565b6000620002f5826200047e565b6001600160a01b031690565b6000620002f5826200048b565b620004bc816200047e565b8114620004c857600080fd5b50565b620004bc816200048b565b620004bc81620002e5565b615f9780620004f16000396000f3fe608060405234801561001057600080fd5b50600436106104495760003560e01c80636c00f310116102415780639f7698071161013b578063d37c4d8b116100c3578063e8e09b8b11610087578063e8e09b8b146108f3578063e90dd9e214610906578063ec5568891461090e578063edef719a146106b0578063ee52a2f31461091657610449565b8063d37c4d8b146108aa578063d67bdd25146108bd578063d8a1f76f146108c5578063dbf63340146108d8578063dd62ed3e146108e057610449565b8063ace88afd1161010a578063ace88afd14610856578063af086c7e14610869578063bc67f83214610871578063c2bf388014610884578063c836fa0a1461089757610449565b80639f7698071461080a578063a311c7c21461081d578063a5fdc5de14610830578063a9059cbb1461084357610449565b806384358843116101c95780639324cac71161018d5780639324cac7146107cc57806395d89b41146107d457806397107d6d146107dc5780639741fb22146107ef578063987757dd146107f757610449565b80638435884314610775578063899ffef4146107965780638a2900141461079e5780638da5cb5b146107b157806391e56b68146107b957610449565b806372cb051f1161021057806372cb051f1461072a578063741853601461073f57806379ba509714610747578063835e119c1461074f57806383d625d41461076257610449565b80636c00f310146106de5780636f01a986146106f1578063704e7b851461070457806370a082311461071757610449565b80632c955fa71161035257806344b3e923116102da5780635e22846a1161029e5780635e22846a14610695578063614d08f8146106a8578063666ed4f1146106b05780636ac0bf9c146106c35780636b76222f146106d657610449565b806344b3e9231461064a5780634e99bda91461065d578063528c7efb1461066557806353a47bb71461066d5780635af090ef1461068257610449565b806330ead7601161032157806330ead760146105f6578063313ce56714610609578063320223db1461061157806332608039146106245780633e89b9e51461063757610449565b80632c955fa7146105a85780632d3169eb146105bb5780632e0f2625146105ce5780632f7206ce146105e357610449565b806316b2213f116103d557806323b872dd116103a457806323b872dd1461055f5780632621716f14610572578063295da87d146105855780632a905318146105985780632af64bd3146105a057610449565b806316b2213f1461052957806318160ddd1461053c57806318821400146105445780631fce304d1461054c57610449565b8063095ea7b31161041c578063095ea7b3146104ab5780630e30963c146104cb5780631137aedf146104ec5780631249c58b1461050e5780631627540c1461051657610449565b806303fbc5471461044e57806304f3bcec1461045857806305b3c1c91461047657806306fdde0314610496575b600080fd5b610456610929565b005b610460610b16565b60405161046d9190615bdf565b60405180910390f35b6104896104843660046147a5565b610b2a565b60405161046d9190615a40565b61049e610bb7565b60405161046d9190615bed565b6104be6104b9366004614868565b610c45565b60405161046d9190615a32565b6104de6104d9366004614abb565b610cd2565b60405161046d929190615de8565b6104ff6104fa3660046147a5565b610de1565b60405161046d93929190615ae4565b6104be610e76565b6104566105243660046147a5565b611230565b6104896105373660046147a5565b61128e565b6104896112c3565b61049e6112c9565b6104be61055a366004614a7f565b611302565b6104be61056d36600461481b565b611397565b6104896105803660046147a5565b6113d6565b610456610593366004614a7f565b6115b7565b61049e611638565b6104be611657565b6104566105b63660046147a5565b611773565b6104566105c9366004614abb565b6117bf565b6105d6611875565b60405161046d9190615e2b565b6104566105f13660046149b2565b61187a565b610489610604366004614afe565b61193c565b6105d66119fa565b61045661061f3660046147a5565b611a03565b610460610632366004614a7f565b611a4f565b610489610645366004614a7f565b611ad4565b610489610658366004614b73565b611b0c565b6104be611bc4565b6104be611c43565b610675611ede565b60405161046d91906157d9565b610489610690366004614afe565b611eed565b6104be6106a33660046147a5565b611f4d565b610489611f79565b6104566106be366004614868565b611f89565b6104896106d13660046147a5565b611f95565b61045661209d565b6104566106ec3660046149b2565b612148565b6104566106ff366004614898565b61219b565b6104be610712366004614868565b612254565b6104896107253660046147a5565b61227f565b6107326122b1565b60405161046d9190615a21565b61045661232f565b610456612481565b61046061075d366004614a7f565b61251d565b610489610770366004614a7f565b612552565b6107886107833660046147a5565b61258a565b60405161046d929190615a6a565b6107326128bf565b6104566107ac366004614a7f565b612953565b61067561299d565b6104896107c736600461492b565b6129ac565b610489612a6c565b61049e612a77565b6104566107ea3660046147a5565b612ad2565b610456612b25565b6104ff610805366004614a7f565b612b9e565b610456610818366004614be8565b612c14565b61048961082b3660046147a5565b612c40565b61048961083e3660046147a5565b612c75565b6104be610851366004614868565b612caa565b610456610864366004614898565b612cf4565b610456612d41565b61045661087f3660046147a5565b612d8a565b610456610892366004614868565b612db4565b6104896108a53660046148ca565b612e38565b6104896108b8366004614868565b612ef6565b610675612f7d565b6104566108d3366004614a7f565b612f8c565b610489612f94565b6104896108ee3660046147e1565b61300e565b610456610901366004614868565b613042565b610460613090565b61046061309f565b610489610924366004614add565b6130ae565b61093161316a565b60085460405163dacb2d0160e01b815260009161010090046001600160a01b03169063dacb2d019061096590600401615dca565b60206040518083038186803b15801561097d57600080fd5b505afa158015610991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b591908101906147c3565b60085460405163dacb2d0160e01b81529192506000916101009091046001600160a01b03169063dacb2d01906109ed90600401615d42565b60206040518083038186803b158015610a0557600080fd5b505afa158015610a19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3d91908101906147c3565b9050816001600160a01b0316816001600160a01b03161415610a7a5760405162461bcd60e51b8152600401610a7190615dba565b60405180910390fd5b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610aac918791016157d9565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610afc9190810190614a9d565b90508015610b1157610b0f838383613194565b505b505050565b60085461010090046001600160a01b031681565b6000610b34613370565b6001600160a01b03166305b3c1c9836040518263ffffffff1660e01b8152600401610b5f91906157d9565b60206040518083038186803b158015610b7757600080fd5b505afa158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610baf9190810190614a9d565b90505b919050565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c3d5780601f10610c1257610100808354040283529160200191610c3d565b820191906000526020600020905b815481529060010190602001808311610c2057829003601f168201915b505050505081565b6000610c4f613384565b60035460048054604051633691826360e21b81526001600160a01b03938416939091169163da46098c91610c89918591899189910161593f565b600060405180830381600087803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b50505050610cc68185856133c3565b60019150505b92915050565b6000808584610ce18282613443565b610ce9613384565b610cf16134a4565b6001600160a01b0316634f8633d2600360009054906101000a90046001600160a01b0316600360009054906101000a90046001600160a01b03168b8b8b600360009054906101000a90046001600160a01b03166001600360009054906101000a90046001600160a01b03168e6040518a63ffffffff1660e01b8152600401610d81999897969594939291906158ef565b6040805180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd29190810190614c54565b93509350505094509492505050565b6000806000610dee613370565b6001600160a01b0316631137aedf856040518263ffffffff1660e01b8152600401610e1991906157d9565b60606040518083038186803b158015610e3157600080fd5b505afa158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e699190810190614c84565b9250925092509193909250565b6000610e806134bb565b6000610e8a61350f565b6001600160a01b03161415610eb15760405162461bcd60e51b8152600401610a7190615ce5565b6000610ebb613530565b90506000610ec761350f565b90506000826001600160a01b031663cc5c095c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3c9190810190614a9d565b905060008111610f5e5760405162461bcd60e51b8152600401610a7190615d8d565b610f6a6000308361354c565b604051637e7961d760e01b81526000906001600160a01b03851690637e7961d790610f99908590600401615a40565b602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610feb9190810190614a9d565b90506000610fff838363ffffffff61358f16565b600480546040516370a0823160e01b81529293506001600160a01b03169163b46310f691879161109b91869186916370a082319161103f918791016157d9565b60206040518083038186803b15801561105757600080fd5b505afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061108f9190810190614a9d565b9063ffffffff6135b716565b6040518363ffffffff1660e01b81526004016110b89291906159b7565b600060405180830381600087803b1580156110d257600080fd5b505af11580156110e6573d6000803e3d6000fd5b505050506110f530858361354c565b604051630b32e9c760e31b81526001600160a01b038516906359974e3890611121908490600401615a40565b602060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111739190810190614a61565b50600480546040516370a0823160e01b81526001600160a01b039091169163b46310f69133916111b391879186916370a082319161103f918791016157e7565b6040518363ffffffff1660e01b81526004016111d09291906157f5565b600060405180830381600087803b1580156111ea57600080fd5b505af11580156111fe573d6000803e3d6000fd5b5050505061120d30338461354c565b600754611220908463ffffffff6135b716565b6007555060019450505050505b90565b61123861316a565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22906112839083906157d9565b60405180910390a150565b6000611298613370565b6001600160a01b03166316b2213f836040518263ffffffff1660e01b8152600401610b5f91906157d9565b60075481565b6040518060400160405280601781526020017f53796e746865746978204e6574776f726b20546f6b656e00000000000000000081525081565b60008061130d6134a4565b6003546040516301670a7b60e21b81526001600160a01b039283169263059c29ec926113409291169087906004016159b7565b60206040518083038186803b15801561135857600080fd5b505afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113909190810190614a9d565b1192915050565b60006113a16135dc565b6113a9613631565b6113b38483613671565b506003546113cc906001600160a01b0316858585613942565b90505b9392505050565b6000806113e16139ee565b6001600160a01b031663204b676a846040518263ffffffff1660e01b815260040161140c91906157d9565b60206040518083038186803b15801561142457600080fd5b505afa158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061145c9190810190614a9d565b90506000611468614670565b60005b8381101561159e5761147b6139ee565b6001600160a01b031663ae58254987836040518363ffffffff1660e01b81526004016114a89291906159b7565b60206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114f89190810190614a9d565b92506115026139ee565b6001600160a01b03166345626bd687856040518363ffffffff1660e01b815260040161152f9291906159b7565b604080518083038186803b15801561154657600080fd5b505afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157e9190810190614c06565b602081015190925015611596579350610bb292505050565b60010161146b565b5060405162461bcd60e51b8152600401610a7190615c58565b6115bf6134bb565b6115c7613384565b6115cf613370565b60035460405163b06e8c6560e01b81526001600160a01b039283169263b06e8c65926116029291169085906004016159b7565b600060405180830381600087803b15801561161c57600080fd5b505af1158015611630573d6000803e3d6000fd5b505050505b50565b604051806040016040528060038152602001620a69cb60eb1b81525081565b600060606116636128bf565b905060005b815181101561176a57600082828151811061167f57fe5b602090810291909101810151600081815260099092526040918290205460085492516321f8a72160e01b81529193506001600160a01b0390811692610100900416906321f8a721906116d5908590600401615a40565b60206040518083038186803b1580156116ed57600080fd5b505afa158015611701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061172591908101906147c3565b6001600160a01b031614158061175057506000818152600960205260409020546001600160a01b0316155b15611761576000935050505061122d565b50600101611668565b50600191505090565b61177b6134bb565b611783613384565b61178b613370565b60035460405163159fa0d560e11b81526001600160a01b0392831692632b3f41aa9261160292869290911690600401615810565b6117c7613a0a565b6002546040516001600160a01b039091169063907dff97906117f190869086908690602001615ae4565b604051602081830303815290604052600260405161180e90615761565b6040519081900381206001600160e01b031960e086901b16825261183d9392918a906000908190600401615b5e565b600060405180830381600087803b15801561185757600080fd5b505af115801561186b573d6000803e3d6000fd5b5050505050505050565b601281565b611882613a0a565b6002546040516001600160a01b039091169063907dff97906118b09088908890889088908890602001615a98565b60405160208183030381529060405260026040516118cd9061574b565b60405180910390206118de8b613a42565b6000806040518763ffffffff1660e01b815260040161190296959493929190615b5e565b600060405180830381600087803b15801561191c57600080fd5b505af1158015611930573d6000803e3d6000fd5b50505050505050505050565b6000858461194a8282613443565b611952613384565b61195a6134a4565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d29261199c9291169081908d908d908d9084906000908f908f906004016158ef565b6040805180830381600087803b1580156119b557600080fd5b505af11580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119ed9190810190614c54565b5098975050505050505050565b60085460ff1681565b611a0b6134bb565b611a13613384565b611a1b613370565b60035460405163fd864ccf60e01b81526001600160a01b039283169263fd864ccf9261160292869290911690600401615810565b6000611a59613370565b6001600160a01b03166332608039836040518263ffffffff1660e01b8152600401611a849190615a40565b60206040518083038186803b158015611a9c57600080fd5b505afa158015611ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610baf9190810190614bca565b6000611ade613370565b6001600160a01b0316637b1001b78360016040518363ffffffff1660e01b8152600401610b5f929190615a5c565b60008584611b1a8282613443565b611b22613384565b611b2a6134a4565b60035460405162674ed160e71b81526001600160a01b03928316926333a7688092611b66929116908c908c908c9084908d908d906004016159c5565b602060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bb89190810190614a9d565b98975050505050505050565b6000611bce613370565b6001600160a01b0316634e99bda96040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0657600080fd5b505afa158015611c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c3e9190810190614a61565b905090565b6000611c4d613631565b611c55613384565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a72190611c9a906b131959d858de53585c9ad95d60a21b90600401615a40565b60206040518083038186803b158015611cb257600080fd5b505afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cea91908101906147c3565b6001600160a01b031614611d105760405162461bcd60e51b8152600401610a7190615d15565b6003546001600160a01b0316611d24613a4e565b6001600160a01b031663c00007b0826040518263ffffffff1660e01b8152600401611d4f91906157d9565b600060405180830381600087803b158015611d6957600080fd5b505af1158015611d7d573d6000803e3d6000fd5b50505050600080611d8c613370565b6001600160a01b03166372c658168460016040518363ffffffff1660e01b8152600401611dba92919061599c565b606060405180830381600087803b158015611dd457600080fd5b505af1158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e0c9190810190614c84565b509150915060008111611e315760405162461bcd60e51b8152600401610a7190615d70565b611e3d83838386613a6d565b6000611e5184611e4b613a4e565b85613ae9565b905080611e705760405162461bcd60e51b8152600401610a7190615d05565b611e78613a4e565b6001600160a01b0316633c6b16ab846040518263ffffffff1660e01b8152600401611ea39190615a40565b600060405180830381600087803b158015611ebd57600080fd5b505af1158015611ed1573d6000803e3d6000fd5b5092965050505050505090565b6001546001600160a01b031681565b60008584611efb8282613443565b611f03613384565b611f0b6134a4565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d29261199c9291169081908d908d908d9032906000908f908f90600401615869565b6000611f57613631565b611f5f613384565b600354610baf9083906000906001600160a01b0316613af6565b680a6f2dce8d0cae8d2f60bb1b81565b611f91613ef8565b5050565b6000611f9f613370565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938793909116916370a0823191611fda918591016157d9565b60206040518083038186803b158015611ff257600080fd5b505afa158015612006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061202a9190810190614a9d565b6040518363ffffffff1660e01b81526004016120479291906159b7565b604080518083038186803b15801561205e57600080fd5b505afa158015612072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120969190810190614c24565b5092915050565b6120a561316a565b6004546000906001600160a01b03166370a082316120c1613f10565b6040518263ffffffff1660e01b81526004016120dd91906157d9565b60206040518083038186803b1580156120f557600080fd5b505afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061212d9190810190614a9d565b9050611f9161213a613f10565b6121426139ee565b83613194565b612150613a0a565b6002546040516001600160a01b039091169063907dff979061217e9088908890889088908890602001615a98565b60405160208183030381529060405260026040516118cd9061578c565b6121a3613a0a565b6002546040516001600160a01b039091169063907dff97906121cb9085908590602001615a6a565b60405160208183030381529060405260026040516121e8906157a2565b60405180910390206121f988613a42565b6000806040518763ffffffff1660e01b815260040161221d96959493929190615b5e565b600060405180830381600087803b15801561223757600080fd5b505af115801561224b573d6000803e3d6000fd5b50505050505050565b600061225e613631565b612266613384565b6003546113cf90849084906001600160a01b0316613af6565b600480546040516370a0823160e01b81526000926001600160a01b03909216916370a0823191610b5f918691016157d9565b60606122bb613370565b6001600160a01b03166372cb051f6040518163ffffffff1660e01b815260040160006040518083038186803b1580156122f357600080fd5b505afa158015612307573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c3e9190810190614a2c565b60606123396128bf565b905060005b8151811015611f9157600082828151811061235557fe5b602002602001015190506000600860019054906101000a90046001600160a01b03166001600160a01b031663dacb2d01838460405160200161239791906157c3565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016123c3929190615a78565b60206040518083038186803b1580156123db57600080fd5b505afa1580156123ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061241391908101906147c3565b6000838152600960205260409081902080546001600160a01b0319166001600160a01b038416179055519091507f88a93678a3692f6789d9546fc621bf7234b101ddb7d4fe479455112831b8aa689061246f9084908490615a4e565b60405180910390a1505060010161233e565b6001546001600160a01b031633146124ab5760405162461bcd60e51b8152600401610a7190615c1b565b6000546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c926124ee926001600160a01b0391821692911690615810565b60405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000612527613370565b6001600160a01b031663835e119c836040518263ffffffff1660e01b8152600401611a849190615a40565b600061255c613370565b6001600160a01b0316637b1001b78360006040518363ffffffff1660e01b8152600401610b5f929190615a5c565b600080612595613631565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a721906125e49075446562744d69677261746f724f6e457468657265756d60501b90600401615a40565b60206040518083038186803b1580156125fc57600080fd5b505afa158015612610573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061263491908101906147c3565b9050336001600160a01b03821614806126f057506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061268b906b131959d858de53585c9ad95d60a21b90600401615a40565b60206040518083038186803b1580156126a357600080fd5b505afa1580156126b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126db91908101906147c3565b6001600160a01b0316336001600160a01b0316145b61270c5760405162461bcd60e51b8152600401610a7190615d25565b600480546040516370a0823160e01b81526001600160a01b03909116916370a082319161273b918891016157d9565b60206040518083038186803b15801561275357600080fd5b505afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061278b9190810190614a9d565b915081156127c15760006127a0853385613ae9565b9050806127bf5760405162461bcd60e51b8152600401610a7190615ca5565b505b6127c96139ee565b6001600160a01b031663326a3cfb856040518263ffffffff1660e01b81526004016127f491906157d9565b60206040518083038186803b15801561280c57600080fd5b505afa158015612820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128449190810190614a9d565b925082156128b9576128546139ee565b6001600160a01b031663de065f6785338660006040518563ffffffff1660e01b8152600401612886949392919061582b565b600060405180830381600087803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b505050505b50915091565b6060806128ca613f2a565b6040805160028082526060808301845293945090916020830190803883390190505090506b526577617264457363726f7760a01b8160008151811061290b57fe5b6020026020010181815250506d537570706c795363686564756c6560901b8160018151811061293657fe5b60200260200101818152505061294c8282614073565b9250505090565b61295b6134bb565b612963613384565b61296b613370565b6003546040516285c0d160e31b81526001600160a01b039283169263042e0688926116029291169085906004016159b7565b6000546001600160a01b031681565b600085846129ba8282613443565b6129c2613384565b6129ca6134a4565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612a0d928e92909116908d908d908d9085906000908f908f906004016158ef565b6040805180830381600087803b158015612a2657600080fd5b505af1158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a5e9190810190614c54565b509998505050505050505050565b631cd554d160e21b81565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c3d5780601f10610c1257610100808354040283529160200191610c3d565b612ada61316a565b600280546001600160a01b0319166001600160a01b0383161790556040517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e906112839083906157e7565b612b2d6134bb565b612b35613384565b612b3d613370565b6003546040516324beb82560e11b81526001600160a01b039283169263497d704a92612b6e929116906004016157d9565b600060405180830381600087803b158015612b8857600080fd5b505af1158015610b0f573d6000803e3d6000fd5b565b6000806000612bab613384565b612bb36134a4565b6003546040516306c5a00b60e21b81526001600160a01b0392831692631b16802c92612be69291169088906004016159b7565b606060405180830381600087803b158015612c0057600080fd5b505af1158015610e45573d6000803e3d6000fd5b612c1c614128565b600480546001600160a01b0319166001600160a01b03831617905561163581614196565b6000612c4a613370565b6001600160a01b031663a311c7c2836040518263ffffffff1660e01b8152600401610b5f91906157d9565b6000612c7f613370565b6001600160a01b031663a5fdc5de836040518263ffffffff1660e01b8152600401610b5f91906157d9565b6000612cb46135dc565b612cbc613631565b600354612cd2906001600160a01b031683613671565b50600354612cea906001600160a01b03168484613ae9565b5060019392505050565b612cfc613a0a565b6002546040516001600160a01b039091169063907dff9790612d249085908590602001615a6a565b60405160208183030381529060405260026040516121e890615756565b612d496134bb565b612d51613384565b612d59613370565b60035460405163644bb89960e11b81526001600160a01b039283169263c897713292612b6e929116906004016157d9565b612d92614208565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b612dbc6134bb565b612dc4613384565b612dcc613370565b600354604051632694552d60e21b81526001600160a01b0392831692639a5154b492612e0292879290911690869060040161593f565b600060405180830381600087803b158015612e1c57600080fd5b505af1158015612e30573d6000803e3d6000fd5b505050505050565b60008382612e468282613443565b612e4e613384565b612e566134a4565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d292612e99928c92909116908b908b908b908590600090829082906004016158ef565b6040805180830381600087803b158015612eb257600080fd5b505af1158015612ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612eea9190810190614c54565b50979650505050505050565b6000612f00613370565b6001600160a01b031663d37c4d8b84846040518363ffffffff1660e01b8152600401612f2d9291906159b7565b60206040518083038186803b158015612f4557600080fd5b505afa158015612f59573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113cf9190810190614a9d565b6003546001600160a01b031681565b611635613ef8565b6000612f9e613370565b6001600160a01b031663dbf633406040518163ffffffff1660e01b815260040160206040518083038186803b158015612fd657600080fd5b505afa158015612fea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c3e9190810190614a9d565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163dd62ed3e91612f2d918791879101615810565b61304a6134bb565b613052613384565b61305a613370565b60035460405163227635b160e11b81526001600160a01b03928316926344ec6b6292612e0292879290911690869060040161593f565b6004546001600160a01b031681565b6002546001600160a01b031681565b600083826130bc8282613443565b6130c4613384565b6130cc6134a4565b6003546040516327c319e960e11b81526001600160a01b0392831692634f8633d29261310e9291169081908b908b908b908490600090829082906004016158ef565b6040805180830381600087803b15801561312757600080fd5b505af115801561313b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061315f9190810190614c54565b509695505050505050565b6000546001600160a01b03163314612b9c5760405162461bcd60e51b8152600401610a7190615cf5565b60006001600160a01b038316158015906131b757506001600160a01b0383163014155b80156131d157506002546001600160a01b03848116911614155b6131ed5760405162461bcd60e51b8152600401610a7190615bfe565b600480546040516370a0823160e01b81526001600160a01b039091169163b46310f691879161328891879186916370a082319161322c918791016157d9565b60206040518083038186803b15801561324457600080fd5b505afa158015613258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061327c9190810190614a9d565b9063ffffffff61358f16565b6040518363ffffffff1660e01b81526004016132a59291906159b7565b600060405180830381600087803b1580156132bf57600080fd5b505af11580156132d3573d6000803e3d6000fd5b5050600480546040516370a0823160e01b81526001600160a01b03909116935063b46310f69250869161331691879186916370a082319161103f918791016157d9565b6040518363ffffffff1660e01b81526004016133339291906159b7565b600060405180830381600087803b15801561334d57600080fd5b505af1158015613361573d6000803e3d6000fd5b50505050612cea84848461354c565b6000611c3e6524b9b9bab2b960d11b614232565b6002546001600160a01b031633148015906133aa57506003546001600160a01b03163314155b15612b9c57600380546001600160a01b03191633179055565b6002546040516001600160a01b039091169063907dff97906133e9908490602001615a40565b604051602081830303815290604052600360405161340690615797565b604051809103902061341788613a42565b61342088613a42565b60006040518763ffffffff1660e01b815260040161221d96959493929190615b98565b61344b61428f565b6001600160a01b0316631ce00ba283836040518363ffffffff1660e01b8152600401613478929190615a6a565b60006040518083038186803b15801561349057600080fd5b505afa158015612e30573d6000803e3d6000fd5b6000611c3e6822bc31b430b733b2b960b91b614232565b6134c361428f565b6001600160a01b0316637c3125416040518163ffffffff1660e01b815260040160006040518083038186803b1580156134fb57600080fd5b505afa158015610b0f573d6000803e3d6000fd5b6000611c3e722932bbb0b93239a234b9ba3934b13aba34b7b760691b614232565b6000611c3e6d537570706c795363686564756c6560901b614232565b6002546040516001600160a01b039091169063907dff9790613572908490602001615a40565b6040516020818303038152906040526003604051613406906157ce565b6000828211156135b15760405162461bcd60e51b8152600401610a7190615c95565b50900390565b6000828201838110156113cf5760405162461bcd60e51b8152600401610a7190615c68565b6002546001600160a01b03163314156135f457612b9c565b6135fd336142a9565b1561361957600380546001600160a01b03191633179055612b9c565b60405162461bcd60e51b8152600401610a7190615d9d565b61363961428f565b6001600160a01b031663086dabd16040518163ffffffff1660e01b815260040160006040518083038186803b1580156134fb57600080fd5b6008546040516321f8a72160e01b815260009182916101009091046001600160a01b0316906321f8a721906136b9906b131959d858de53585c9ad95d60a21b90600401615a40565b60206040518083038186803b1580156136d157600080fd5b505afa1580156136e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061370991908101906147c3565b6003549091506001600160a01b03161580159061373357506003546001600160a01b038281169116145b8061374f5750806001600160a01b0316846001600160a01b0316145b1561375e576001915050610ccc565b6000613768613370565b6001600160a01b031663d37c4d8b86631cd554d160e21b6040518363ffffffff1660e01b815260040161379c9291906159b7565b60206040518083038186803b1580156137b457600080fd5b505afa1580156137c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137ec9190810190614a9d565b1115610cc6576000806137fd613370565b600480546040516370a0823160e01b81526001600160a01b0393841693636bed0415938b93909116916370a0823191613838918591016157d9565b60206040518083038186803b15801561385057600080fd5b505afa158015613864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138889190810190614a9d565b6040518363ffffffff1660e01b81526004016138a59291906159b7565b604080518083038186803b1580156138bc57600080fd5b505afa1580156138d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138f49190810190614c24565b91509150818511156139185760405162461bcd60e51b8152600401610a7190615cc5565b80156139365760405162461bcd60e51b8152600401610a7190615cd5565b50600195945050505050565b60048054604051636eb1769f60e11b81526000926001600160a01b039092169163da46098c9187918991613988918891879163dd62ed3e9161322c918891889101615810565b6040518463ffffffff1660e01b81526004016139a69392919061593f565b600060405180830381600087803b1580156139c057600080fd5b505af11580156139d4573d6000803e3d6000fd5b505050506139e3848484613194565b90505b949350505050565b6000611c3e6d2932bbb0b93222b9b1b937bbab1960911b614232565b613a126134a4565b6001600160a01b0316336001600160a01b031614612b9c5760405162461bcd60e51b8152600401610a7190615c48565b6001600160a01b031690565b6000611c3e704c697175696461746f725265776172647360781b614232565b6002546040516001600160a01b039091169063907dff9790613a9790869086908690602001615e03565b6040516020818303038152906040526002604051613ab4906157b8565b6040518091039020613ac589613a42565b6000806040518763ffffffff1660e01b815260040161183d96959493929190615b5e565b60006113cc848484613194565b6000613b00613a4e565b6001600160a01b031663c00007b0856040518263ffffffff1660e01b8152600401613b2b91906157d9565b600060405180830381600087803b158015613b4557600080fd5b505af1158015613b59573d6000803e3d6000fd5b505050506000806000613b6a613370565b6001600160a01b03166372c658168860006040518363ffffffff1660e01b8152600401613b9892919061599c565b606060405180830381600087803b158015613bb257600080fd5b505af1158015613bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613bea9190810190614c84565b919450925090508015613c6357613bff6139ee565b6001600160a01b031663de065f678889848a6040518563ffffffff1660e01b8152600401613c309493929190615967565b600060405180830381600087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050505b613c6f87848488613a6d565b6000613c79614658565b6001600160a01b0316638074b3726040518163ffffffff1660e01b815260040160206040518083038186803b158015613cb157600080fd5b505afa158015613cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613ce99190810190614a9d565b90506000613cf5614658565b6001600160a01b03166331e4e0306040518163ffffffff1660e01b815260040160206040518083038186803b158015613d2d57600080fd5b505afa158015613d41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613d659190810190614a9d565b90506000613d71614658565b6001600160a01b0316635616c9578b6040518263ffffffff1660e01b8152600401613d9c91906157d9565b60206040518083038186803b158015613db457600080fd5b505afa158015613dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dec91908101906147c3565b90506000613dfb8b8386613ae9565b905080613e1a5760405162461bcd60e51b8152600401610a7190615c78565b6000613e278c8b86613ae9565b905080613e465760405162461bcd60e51b8152600401610a7190615d60565b8715613ee6576000613e608d613e5a613a4e565b8b613ae9565b905080613e7f5760405162461bcd60e51b8152600401610a7190615d05565b613e87613a4e565b6001600160a01b0316633c6b16ab8a6040518263ffffffff1660e01b8152600401613eb29190615a40565b600060405180830381600087803b158015613ecc57600080fd5b505af1158015613ee0573d6000803e3d6000fd5b50505050505b5060019b9a5050505050505050505050565b60405162461bcd60e51b8152600401610a7190615cb5565b6000611c3e6b526577617264457363726f7760a01b614232565b60408051600780825261010082019092526060916020820160e0803883390190505090506b53797374656d53746174757360a01b81600081518110613f6b57fe5b6020026020010181815250506822bc31b430b733b2b960b91b81600181518110613f9157fe5b6020026020010181815250506524b9b9bab2b960d11b81600281518110613fb457fe5b602002602001018181525050722932bbb0b93239a234b9ba3934b13aba34b7b760691b81600381518110613fe457fe5b602002602001018181525050704c697175696461746f725265776172647360781b8160048151811061401257fe5b602002602001018181525050692634b8bab4b230ba37b960b11b8160058151811061403957fe5b6020026020010181815250506d2932bbb0b93222b9b1b937bbab1960911b8160068151811061406457fe5b60200260200101818152505090565b606081518351016040519080825280602002602001820160405280156140a3578160200160208202803883390190505b50905060005b83518110156140e5578381815181106140be57fe5b60200260200101518282815181106140d257fe5b60209081029190910101526001016140a9565b5060005b8251811015612096578281815181106140fe57fe5b602002602001015182828651018151811061411557fe5b60209081029190910101526001016140e9565b6002546001600160a01b0316331480159061414e57506003546001600160a01b03163314155b1561416657600380546001600160a01b031916331790555b6000546003546001600160a01b03908116911614612b9c5760405162461bcd60e51b8152600401610a7190615c38565b6002546040516001600160a01b039091169063907dff97906141bc9084906020016157d9565b60405160208183030381529060405260016040516141d9906157ad565b6040519081900381206001600160e01b031960e086901b16825261160293929160009081908190600401615aff565b6002546001600160a01b03163314612b9c5760405162461bcd60e51b8152600401610a7190615d9d565b60008181526009602090815260408083205490516001600160a01b0390911691821515916142629186910161576c565b604051602081830303815290604052906120965760405162461bcd60e51b8152600401610a719190615bed565b6000611c3e6b53797374656d53746174757360a01b614232565b6008546040516321f8a72160e01b815260009161010090046001600160a01b0316906321f8a721906142dd90600401615dad565b60206040518083038186803b1580156142f557600080fd5b505afa158015614309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061432d91908101906147c3565b6001600160a01b0316826001600160a01b031614806143de57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061437990600401615d35565b60206040518083038186803b15801561439157600080fd5b505afa1580156143a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506143c991908101906147c3565b6001600160a01b0316826001600160a01b0316145b8061447b57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061441690600401615c0e565b60206040518083038186803b15801561442e57600080fd5b505afa158015614442573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061446691908101906147c3565b6001600160a01b0316826001600160a01b0316145b8061451857506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906144b390600401615c88565b60206040518083038186803b1580156144cb57600080fd5b505afa1580156144df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061450391908101906147c3565b6001600160a01b0316826001600160a01b0316145b806145b557506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a7219061455090600401615c2b565b60206040518083038186803b15801561456857600080fd5b505afa15801561457c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145a091908101906147c3565b6001600160a01b0316826001600160a01b0316145b80610baf57506008546040516321f8a72160e01b81526101009091046001600160a01b0316906321f8a721906145ed90600401615d80565b60206040518083038186803b15801561460557600080fd5b505afa158015614619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061463d91908101906147c3565b6001600160a01b0316826001600160a01b0316149050919050565b6000611c3e692634b8bab4b230ba37b960b11b614232565b604080518082019091526000808252602082015290565b8035610ccc81615f1c565b8051610ccc81615f1c565b600082601f8301126146ae57600080fd5b81516146c16146bc82615e60565b615e39565b915081818352602084019350602081019050838560208402820111156146e657600080fd5b60005b8381101561471257816146fc8882614732565b84525060209283019291909101906001016146e9565b5050505092915050565b8051610ccc81615f30565b8035610ccc81615f39565b8051610ccc81615f39565b8051610ccc81615f42565b8035610ccc81615f42565b60006040828403121561476557600080fd5b61476f6040615e39565b9050600061477d848461479a565b825250602061478e84848301614732565b60208301525092915050565b8051610ccc81615f4b565b6000602082840312156147b757600080fd5b60006139e68484614687565b6000602082840312156147d557600080fd5b60006139e68484614692565b600080604083850312156147f457600080fd5b60006148008585614687565b925050602061481185828601614687565b9150509250929050565b60008060006060848603121561483057600080fd5b600061483c8686614687565b935050602061484d86828701614687565b925050604061485e86828701614727565b9150509250925092565b6000806040838503121561487b57600080fd5b60006148878585614687565b925050602061481185828601614727565b6000806000606084860312156148ad57600080fd5b60006148b98686614687565b935050602061484d86828701614727565b600080600080608085870312156148e057600080fd5b60006148ec8787614687565b94505060206148fd87828801614727565b935050604061490e87828801614727565b925050606061491f87828801614727565b91505092959194509250565b60008060008060008060c0878903121561494457600080fd5b60006149508989614687565b965050602061496189828a01614727565b955050604061497289828a01614727565b945050606061498389828a01614727565b935050608061499489828a01614687565b92505060a06149a589828a01614727565b9150509295509295509295565b60008060008060008060c087890312156149cb57600080fd5b60006149d78989614687565b96505060206149e889828a01614727565b95505060406149f989828a01614727565b9450506060614a0a89828a01614727565b9350506080614a1b89828a01614727565b92505060a06149a589828a01614687565b600060208284031215614a3e57600080fd5b815167ffffffffffffffff811115614a5557600080fd5b6139e68482850161469d565b600060208284031215614a7357600080fd5b60006139e6848461471c565b600060208284031215614a9157600080fd5b60006139e68484614727565b600060208284031215614aaf57600080fd5b60006139e68484614732565b60008060008060808587031215614ad157600080fd5b60006148ec8787614727565b600080600060608486031215614af257600080fd5b60006148b98686614727565b600080600080600060a08688031215614b1657600080fd5b6000614b228888614727565b9550506020614b3388828901614727565b9450506040614b4488828901614727565b9350506060614b5588828901614687565b9250506080614b6688828901614727565b9150509295509295909350565b600080600080600060a08688031215614b8b57600080fd5b6000614b978888614727565b9550506020614ba888828901614727565b9450506040614bb988828901614727565b9350506060614b5588828901614727565b600060208284031215614bdc57600080fd5b60006139e6848461473d565b600060208284031215614bfa57600080fd5b60006139e68484614748565b600060408284031215614c1857600080fd5b60006139e68484614753565b60008060408385031215614c3757600080fd5b6000614c438585614732565b92505060206148118582860161471c565b60008060408385031215614c6757600080fd5b6000614c738585614732565b92505060206148118582860161473d565b600080600060608486031215614c9957600080fd5b6000614ca58686614732565b9350506020614cb686828701614732565b925050604061485e86828701614732565b6000614cd38383614d55565b505060200190565b614ce481615ec2565b82525050565b614ce481615e94565b6000614cfe82615e87565b614d088185615e8b565b9350614d1383615e81565b8060005b83811015614d41578151614d2b8882614cc7565b9750614d3683615e81565b925050600101614d17565b509495945050505050565b614ce481615e9f565b614ce48161122d565b614ce4614d6a8261122d565b61122d565b6000614d7a82615e87565b614d848185615e8b565b9350614d94818560208601615ee6565b614d9d81615f12565b9093019392505050565b614ce481615ea4565b614ce481615ecd565b614ce481615edb565b6000614dcf601f83615e8b565b7f43616e6e6f74207472616e7366657220746f2074686973206164647265737300815260200192915050565b75446562744d69677261746f724f6e4f7074696d69736d60501b9052565b6000614e26603583615e8b565b7f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7581527402063616e20616363657074206f776e65727368697605c1b602082015260400192915050565b6e53796e746865746978457363726f7760881b9052565b6000614e94601383615e8b565b7227bbb732b91037b7363c90333ab731ba34b7b760691b815260200192915050565b6000614ec3601e83615e8b565b7f4f6e6c792045786368616e6765722063616e20696e766f6b6520746869730000815260200192915050565b6000614efc604483610bb2565b7f41746f6d696353796e746845786368616e676528616464726573732c6279746581527f7333322c75696e743235362c627974657333322c75696e743235362c616464726020820152636573732960e01b604082015260440192915050565b6000614f68601483615e8b565b73616c6c20656e747269657320617265207a65726f60601b815260200192915050565b6000614f98601b83615e8b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000614fd1602483615e8b565b7f466c616720726577617264207472616e7366657220646964206e6f742073756381526318d9595960e21b602082015260400192915050565b6b526577617264457363726f7760a01b9052565b600061502b601883615e8b565b7f4e657720657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000615064602883610bb2565b7f45786368616e67655265636c61696d28616464726573732c627974657333322c81526775696e743235362960c01b602082015260280192915050565b60006150ae601e83615e8b565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b60006150e7601383615e8b565b721cdb9e081d1c985b9cd9995c8819985a5b1959606a1b815260200192915050565b6000615116601b83615e8b565b7f43616e6e6f742062652072756e206f6e2074686973206c617965720000000000815260200192915050565b600061514f603183610bb2565b7f45786368616e6765547261636b696e6728627974657333322c627974657333328152702c75696e743235362c75696e743235362960781b602082015260310192915050565b60006151a2601183610bb2565b70026b4b9b9b4b7339030b2323932b9b99d1607d1b815260110192915050565b60006151cf603e83610bb2565b7f53796e746845786368616e676528616464726573732c627974657333322c756981527f6e743235362c627974657333322c75696e743235362c616464726573732900006020820152603e0192915050565b600061522e602683615e8b565b7f43616e6e6f74207472616e73666572207374616b6564206f7220657363726f778152650cac840a69cb60d31b602082015260400192915050565b6000615276601e83615e8b565b7f412073796e7468206f7220534e58207261746520697320696e76616c69640000815260200192915050565b60006152af601b83615e8b565b7f52657761726473446973747269627574696f6e206e6f74207365740000000000815260200192915050565b60006152e8602f83615e8b565b7f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726681526e37b936903a3434b99030b1ba34b7b760891b602082015260400192915050565b6000615339602483615e8b565b7f5472616e7366657220746f204c697175696461746f72526577617264732066618152631a5b195960e21b602082015260400192915050565b600061537f602183610bb2565b7f417070726f76616c28616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b60006153c2601783615e8b565b7f4d757374206c6971756964617465207573696e67205633000000000000000000815260200192915050565b60006153fb602783610bb2565b7f45786368616e676552656261746528616464726573732c627974657333322c75815266696e743235362960c81b602082015260270192915050565b6000615444602483615e8b565b7f4f6e6c79204c3120446562744d69677261746f72206f72204c65676163794d618152631c9ad95d60e21b602082015260400192915050565b600061548a601a83610bb2565b7f546f6b656e5374617465557064617465642861646472657373290000000000008152601a0192915050565b60006154c3603283610bb2565b7f4163636f756e744c69717569646174656428616464726573732c75696e743235815271362c75696e743235362c616464726573732960701b602082015260320192915050565b6d2932bbb0b93222b9b1b937bbab1960911b9052565b600061552d601983610bb2565b7f5265736f6c766572206d697373696e67207461726765743a2000000000000000815260190192915050565b6000615566602983615e8b565b7f4c697175696461746520726577617264207472616e7366657220646964206e6f8152681d081cdd58d8d9595960ba1b602082015260400192915050565b60006155b1601583615e8b565b7463616e6e6f742073656c66206c697175696461746560581b815260200192915050565b6411195c1bdd60da1b9052565b60006155ef601583615e8b565b744e6f20737570706c79206973206d696e7461626c6560581b815260200192915050565b6000615620601883615e8b565b7f4f6c6420657363726f77206164647265737320756e7365740000000000000000815260200192915050565b6000615659602183610bb2565b7f5472616e7366657228616464726573732c616464726573732c75696e743235368152602960f81b602082015260210192915050565b600061569c601783615e8b565b7f4f6e6c79207468652070726f78792063616e2063616c6c000000000000000000815260200192915050565b7f53796e746865746978427269646765546f4f7074696d69736d000000000000009052565b60006156fa601e83615e8b565b7f63616e6e6f74206d69677261746520746f2073616d6520616464726573730000815260200192915050565b732932bbb0b93222b9b1b937bbab19233937bd32b760611b9052565b614ce481615ebc565b6000610ccc82614eef565b6000610ccc82615057565b6000610ccc82615142565b600061577782615195565b91506157838284614d5e565b50602001919050565b6000610ccc826151c2565b6000610ccc82615372565b6000610ccc826153ee565b6000610ccc8261547d565b6000610ccc826154b6565b600061577782615520565b6000610ccc8261564c565b60208101610ccc8284614cea565b60208101610ccc8284614cdb565b604081016158038285614cdb565b6113cf6020830184614d55565b6040810161581e8285614cea565b6113cf6020830184614cea565b608081016158398287614cea565b6158466020830186614cdb565b6158536040830185614d55565b6158606060830184614db9565b95945050505050565b6101208101615878828c614cea565b615885602083018b614cea565b615892604083018a614d55565b61589f6060830189614d55565b6158ac6080830188614d55565b6158b960a0830187614cdb565b6158c660c0830186614d4c565b6158d360e0830185614cea565b6158e1610100830184614d55565b9a9950505050505050505050565b61012081016158fe828c614cea565b61590b602083018b614cea565b615918604083018a614d55565b6159256060830189614d55565b6159326080830188614d55565b6158b960a0830187614cea565b6060810161594d8286614cea565b61595a6020830185614cea565b6139e66040830184614d55565b608081016159758287614cea565b6159826020830186614cea565b61598f6040830185614d55565b6158606060830184614d55565b604081016159aa8285614cea565b6113cf6020830184614d4c565b604081016158038285614cea565b60e081016159d3828a614cea565b6159e06020830189614d55565b6159ed6040830188614d55565b6159fa6060830187614d55565b615a076080830186614cea565b615a1460a0830185614d55565b611bb860c0830184614d55565b602080825281016113cf8184614cf3565b60208101610ccc8284614d4c565b60208101610ccc8284614d55565b6040810161581e8285614d55565b604081016159aa8285614d55565b604081016158038285614d55565b60408101615a868285614d55565b81810360208301526113cc8184614d6f565b60a08101615aa68288614d55565b615ab36020830187614d55565b615ac06040830186614d55565b615acd6060830185614d55565b615ada6080830184614cea565b9695505050505050565b60608101615af28286614d55565b61595a6020830185614d55565b60c08082528101615b108189614d6f565b9050615b1f6020830188614db9565b615b2c6040830187614d55565b615b396060830186614db0565b615b466080830185614db0565b615b5360a0830184614db0565b979650505050505050565b60c08082528101615b6f8189614d6f565b9050615b7e6020830188614db9565b615b8b6040830187614d55565b615b396060830186614d55565b60c08082528101615ba98189614d6f565b9050615bb86020830188614db9565b615bc56040830187614d55565b615bd26060830186614d55565b615b466080830185614d55565b60208101610ccc8284614da7565b602080825281016113cf8184614d6f565b60208082528101610baf81614dc2565b60208101610bb282614dfb565b60208082528101610baf81614e19565b60208101610bb282614e70565b60208082528101610baf81614e87565b60208082528101610baf81614eb6565b60208082528101610baf81614f5b565b60208082528101610baf81614f8b565b60208082528101610baf81614fc4565b60208101610bb28261500a565b60208082528101610baf816150a1565b60208082528101610baf816150da565b60208082528101610baf81615109565b60208082528101610baf81615221565b60208082528101610baf81615269565b60208082528101610baf816152a2565b60208082528101610baf816152db565b60208082528101610baf8161532c565b60208082528101610baf816153b5565b60208082528101610baf81615437565b60208101610bb28261550a565b60408101615d4f8261550a565b8181036020830152610baf8161501e565b60208082528101610baf81615559565b60208082528101610baf816155a4565b60208101610bb2826155d5565b60208082528101610baf816155e2565b60208082528101610baf8161568f565b60208101610bb2826156c8565b60208082528101610baf816156ed565b60408101615dd782615726565b8181036020830152610baf81615613565b60408101615df68285614d55565b6113cf6020830184614da7565b60608101615e118286614d55565b615e1e6020830185614d55565b6139e66040830184614cea565b60208101610ccc8284615742565b60405181810167ffffffffffffffff81118282101715615e5857600080fd5b604052919050565b600067ffffffffffffffff821115615e7757600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b6000610baf82613a42565b151590565b6000610baf82615e94565b67ffffffffffffffff1690565b60ff1690565b6000610baf82615ea4565b6000610baf614d6a8361122d565b6000610baf8261122d565b60005b83811015615f01578181015183820152602001615ee9565b83811115610b0f5750506000910152565b601f01601f191690565b615f2581615e94565b811461163557600080fd5b615f2581615e9f565b615f258161122d565b615f2581615ea4565b615f2581615eaf56fea365627a7a723158204825395a7bccc95316825fe426192a6c5fd210c860e25765e28157068fc582e16c6578706572696d656e74616cf564736f6c63430005100040", "abi": [ { "inputs": [ @@ -10930,10 +10930,10 @@ } ], "source": { - "keccak256": "0xa4adacf15426be1f1af675a149af5c8d6deec9f8d3ee1dab54b105d3c25c55f3", + "keccak256": "0xf5af266ffe444334cd8903b556e23be15b0644f532a083013f03af8d92d9dbfd", "urls": [ - "bzz-raw://fe48502943b1b2166fb1ab2b75e7c36b4deae9fe1c7e89da0da96a30c0fdceea", - "dweb:/ipfs/QmciyuHMCb5cKyoUHqcMp2AHsYgYKFzQgqzZRGEUJT6o2q" + "bzz-raw://a03c26a0b3d5e0f21651bdecfbc8818149a57fe794cb485f98b6582e9a76de03", + "dweb:/ipfs/QmQGexPhwTdg5szkXEQE5qxmhvorpd2jqVCtqbkzQa9Zbv" ] }, "metadata": { @@ -10955,10 +10955,10 @@ }, "sources": { "Synthetix.sol": { - "keccak256": "0xa4adacf15426be1f1af675a149af5c8d6deec9f8d3ee1dab54b105d3c25c55f3", + "keccak256": "0xf5af266ffe444334cd8903b556e23be15b0644f532a083013f03af8d92d9dbfd", "urls": [ - "bzz-raw://fe48502943b1b2166fb1ab2b75e7c36b4deae9fe1c7e89da0da96a30c0fdceea", - "dweb:/ipfs/QmciyuHMCb5cKyoUHqcMp2AHsYgYKFzQgqzZRGEUJT6o2q" + "bzz-raw://a03c26a0b3d5e0f21651bdecfbc8818149a57fe794cb485f98b6582e9a76de03", + "dweb:/ipfs/QmQGexPhwTdg5szkXEQE5qxmhvorpd2jqVCtqbkzQa9Zbv" ] } }, diff --git a/publish/deployed/mainnet/versions.json b/publish/deployed/mainnet/versions.json index 6b1e81b7e..190705dfe 100644 --- a/publish/deployed/mainnet/versions.json +++ b/publish/deployed/mainnet/versions.json @@ -4778,8 +4778,9 @@ "contracts": { "Synthetix": { "address": "0xd711709eFc452152B7ad11DbD01ed4B69c9421B3", - "status": "current", - "keccak256": "0xa4adacf15426be1f1af675a149af5c8d6deec9f8d3ee1dab54b105d3c25c55f3" + "status": "replaced", + "keccak256": "0xa4adacf15426be1f1af675a149af5c8d6deec9f8d3ee1dab54b105d3c25c55f3", + "replaced_in": "v2.101.3" }, "RewardEscrowV2": { "address": "0xFAd53Cc9480634563E8ec71E8e693Ffd07981d38", @@ -4812,5 +4813,20 @@ "keccak256": "0xc9560e9672c3dff5c5bea2a78274b3e808bd6cdf338cc4091df5a59c58990f6e" } } + }, + "v2.101.3": { + "tag": "v2.101.3", + "fulltag": "v2.101.3", + "release": "Acrab", + "network": "mainnet", + "date": "2024-08-26T10:37:17-04:00", + "commit": "b888832c963a9fbfe92d50ada2a2452d161fe5c6", + "contracts": { + "Synthetix": { + "address": "0xc5f0b4194455e0C175ab68C501400e46C7203504", + "status": "current", + "keccak256": "0xf5af266ffe444334cd8903b556e23be15b0644f532a083013f03af8d92d9dbfd" + } + } } } diff --git a/publish/deployed/sepolia-ovm/perpsv2-markets.json b/publish/deployed/sepolia-ovm/perpsv2-markets.json index a741ea34a..e90a76c6e 100644 --- a/publish/deployed/sepolia-ovm/perpsv2-markets.json +++ b/publish/deployed/sepolia-ovm/perpsv2-markets.json @@ -118,7 +118,7 @@ "takerFee": "0.3", "takerFeeDelayedOrder": "0.3", "makerFeeDelayedOrder": "0.3", - "makerFeeOffchainDelayedOrder": "0.0002", + "makerFeeOffchainDelayedOrder": "0.000001", "takerFeeOffchainDelayedOrder": "0.0008", "nextPriceConfirmWindow": "2", "delayedOrderConfirmWindow": "120", @@ -129,13 +129,13 @@ "maxLeverage": "27.5", "maxMarketValue": "460000", "maxFundingVelocity": "36", - "skewScale": "2812500", + "skewScale": "2100000", "offchainPriceDivergence": "0.10", "liquidationPremiumMultiplier": "1.5625", "offchainMarketKey": "ocSOLPERP", "liquidationBufferRatio": "0.0100", - "maxPD": "0.002", - "maxLiquidationDelta": "0.001", + "maxPD": "0.001602", + "maxLiquidationDelta": "0.000801", "paused": false, "offchainPaused": false }, @@ -351,7 +351,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "400000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "10000000", "offchainPriceDivergence": "0.10", @@ -1417,7 +1417,7 @@ "maxLeverage": "27.5", "maxMarketValue": "362300", "maxFundingVelocity": "36", - "skewScale": "3250000", + "skewScale": "9750000", "offchainPriceDivergence": "0.10", "liquidationPremiumMultiplier": "3", "offchainMarketKey": "ocWLDPERP", @@ -1555,7 +1555,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "263200", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "3750000", "offchainPriceDivergence": "0.10", @@ -1752,7 +1752,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "400000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "10687500", "offchainPriceDivergence": "0.10", @@ -2201,7 +2201,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "900000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "8500000", "offchainPriceDivergence": "0.10", @@ -2259,7 +2259,7 @@ "maxLeverage": "27.5", "maxMarketValue": "2000000", "maxFundingVelocity": "36", - "skewScale": "14437500", + "skewScale": "35000000", "offchainPriceDivergence": "0.10", "liquidationPremiumMultiplier": "3", "offchainMarketKey": "ocPYTHPERP", @@ -2425,7 +2425,7 @@ "offchainDelayedOrderMinAge": "2", "offchainDelayedOrderMaxAge": "30", "maxLeverage": "27.5", - "maxMarketValue": "40000", + "maxMarketValue": "0", "maxFundingVelocity": "36", "skewScale": "750000", "offchainPriceDivergence": "0.10", diff --git a/test/contracts/Liquidator.js b/test/contracts/Liquidator.js index 61d831e62..3818d3d0e 100644 --- a/test/contracts/Liquidator.js +++ b/test/contracts/Liquidator.js @@ -318,6 +318,9 @@ contract('Liquidator', accounts => { 'Must liquidate using V3' ); }); + it('when liquidateSelf() is invoked, it reverts with must liquidate using V3', async () => { + await assert.revert(synthetix.liquidateSelf({ from: alice }), 'Must liquidate using V3'); + }); }); describe('protected methods', () => { describe('only internal contracts can call', () => {