@venusprotocol/venus-protocol 6.1.0-dev.2 → 6.1.0-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +1 -1
  2. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +1 -1
  3. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +1 -1
  4. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +1 -1
  5. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +1 -1
  6. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +1 -1
  7. package/artifacts/@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +1 -1
  8. package/artifacts/build-info/{b4b4e4d94768784823fa2f0ca3867d2b.json → eeb502cfa65684cfcd3f593c290d1e44.json} +1 -1
  9. package/artifacts/contracts/Admin/VBNBAdmin.sol/VBNBAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/IProtocolShareReserve.dbg.json +1 -1
  11. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/IWBNB.dbg.json +1 -1
  12. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VBNBAdminStorage.dbg.json +1 -1
  13. package/artifacts/contracts/Admin/VBNBAdminStorage.sol/VTokenInterface.dbg.json +1 -1
  14. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/IComptroller.dbg.json +1 -1
  15. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/IPriceOracle.dbg.json +1 -1
  16. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/IVToken.dbg.json +1 -1
  17. package/artifacts/contracts/DelegateBorrowers/SwapDebtDelegate.sol/SwapDebtDelegate.dbg.json +1 -1
  18. package/artifacts/contracts/Liquidator/BUSDLiquidator.sol/BUSDLiquidator.dbg.json +1 -1
  19. package/artifacts/contracts/Liquidator/Interfaces.sol/IComptroller.dbg.json +1 -1
  20. package/artifacts/contracts/Liquidator/Interfaces.sol/ILiquidator.dbg.json +1 -1
  21. package/artifacts/contracts/Liquidator/Interfaces.sol/IVAIController.dbg.json +1 -1
  22. package/artifacts/contracts/Liquidator/Interfaces.sol/IVBNB.dbg.json +1 -1
  23. package/artifacts/contracts/Liquidator/Interfaces.sol/IVBep20.dbg.json +1 -1
  24. package/artifacts/contracts/Liquidator/Interfaces.sol/IVToken.dbg.json +1 -1
  25. package/artifacts/contracts/Liquidator/Liquidator.sol/Liquidator.dbg.json +1 -1
  26. package/artifacts/contracts/PegStability/IVAI.sol/IVAI.dbg.json +1 -1
  27. package/artifacts/contracts/PegStability/PegStability.sol/PegStability.dbg.json +1 -1
  28. package/artifacts/contracts/Swap/IRouterHelper.sol/IRouterHelper.dbg.json +1 -1
  29. package/artifacts/contracts/Swap/RouterHelper.sol/RouterHelper.dbg.json +1 -1
  30. package/artifacts/contracts/Swap/SwapRouter.sol/SwapRouter.dbg.json +1 -1
  31. package/artifacts/contracts/Swap/interfaces/IPancakePair.sol/IPancakePair.dbg.json +1 -1
  32. package/artifacts/contracts/Swap/interfaces/IPancakeSwapV2Factory.sol/IPancakeSwapV2Factory.dbg.json +1 -1
  33. package/artifacts/contracts/Swap/interfaces/IPancakeSwapV2Router.sol/IPancakeSwapV2Router.dbg.json +1 -1
  34. package/artifacts/contracts/Swap/interfaces/IVBNB.sol/IVBNB.dbg.json +1 -1
  35. package/artifacts/contracts/Swap/interfaces/IVtoken.sol/IVToken.dbg.json +1 -1
  36. package/artifacts/contracts/Swap/interfaces/IWBNB.sol/IWBNB.dbg.json +1 -1
  37. package/artifacts/contracts/Swap/interfaces/InterfaceComptroller.sol/InterfaceComptroller.dbg.json +1 -1
  38. package/artifacts/contracts/Swap/lib/PancakeLibrary.sol/PancakeLibrary.dbg.json +1 -1
  39. package/artifacts/contracts/Swap/lib/TransferHelper.sol/TransferHelper.dbg.json +1 -1
  40. package/artifacts/contracts/Tokens/Prime/Interfaces/IPrime.sol/IPrime.dbg.json +1 -1
  41. package/artifacts/contracts/Tokens/Prime/Interfaces/IPrimeLiquidityProvider.sol/IPrimeLiquidityProvider.dbg.json +1 -1
  42. package/artifacts/contracts/Tokens/Prime/Interfaces/IVToken.sol/IVToken.dbg.json +1 -1
  43. package/artifacts/contracts/Tokens/Prime/Interfaces/IXVSVault.sol/IXVSVault.dbg.json +1 -1
  44. package/artifacts/contracts/Tokens/Prime/Interfaces/InterfaceComptroller.sol/InterfaceComptroller.dbg.json +1 -1
  45. package/artifacts/contracts/Tokens/Prime/Prime.sol/Prime.dbg.json +1 -1
  46. package/artifacts/contracts/Tokens/Prime/Prime.sol/Prime.json +11 -11
  47. package/artifacts/contracts/Tokens/Prime/PrimeLiquidityProvider.sol/PrimeLiquidityProvider.dbg.json +1 -1
  48. package/artifacts/contracts/Tokens/Prime/PrimeStorage.sol/PrimeStorageV1.dbg.json +1 -1
  49. package/artifacts/contracts/Tokens/Prime/libs/FixedMath.sol/FixedMath.dbg.json +1 -1
  50. package/artifacts/contracts/Tokens/Prime/libs/FixedMath0x.sol/FixedMath0x.dbg.json +1 -1
  51. package/artifacts/contracts/Tokens/Prime/libs/Scores.sol/Scores.dbg.json +1 -1
  52. package/artifacts/contracts/test/AccessControlManagerMock.sol/AccessControlManagerMock.dbg.json +1 -1
  53. package/artifacts/contracts/test/LiquidatorHarness.sol/LiquidatorHarness.dbg.json +1 -1
  54. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IComptroller.dbg.json +1 -1
  55. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IIncomeDestination.dbg.json +1 -1
  56. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IMockProtocolShareReserve.dbg.json +1 -1
  57. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IPoolRegistry.dbg.json +1 -1
  58. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IPrime.dbg.json +1 -1
  59. package/artifacts/contracts/test/MockProtocolShareReserve.sol/IVToken.dbg.json +1 -1
  60. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MaxLoopsLimitHelper.dbg.json +1 -1
  61. package/artifacts/contracts/test/MockProtocolShareReserve.sol/MockProtocolShareReserve.dbg.json +1 -1
  62. package/artifacts/contracts/test/PrimeScenario.sol/PrimeScenario.dbg.json +1 -1
  63. package/artifacts/contracts/test/PrimeScenario.sol/PrimeScenario.json +9 -9
  64. package/contracts/Tokens/Prime/Prime.sol +14 -16
  65. package/deploy/007-deploy-xvs.ts +21 -0
  66. package/deploy/008-deploy-vaults.ts +53 -0
  67. package/deploy/009-configure-vaults.ts +60 -0
  68. package/deployments/bscmainnet.json +15808 -1
  69. package/deployments/bsctestnet.json +15189 -1
  70. package/deployments/sepolia/XVSStore.json +374 -0
  71. package/deployments/sepolia/XVSVault.json +2373 -0
  72. package/deployments/sepolia/XVSVaultProxy.json +352 -0
  73. package/deployments/sepolia/solcInputs/b0e08c65414d4fb3a80b2146b3c121f2.json +345 -0
  74. package/deployments/sepolia.json +2403 -0
  75. package/dist/deploy/007-deploy-xvs.d.ts +3 -0
  76. package/dist/deploy/007-deploy-xvs.js +16 -0
  77. package/dist/deploy/008-deploy-vaults.d.ts +3 -0
  78. package/dist/deploy/008-deploy-vaults.js +41 -0
  79. package/dist/deploy/009-configure-vaults.d.ts +3 -0
  80. package/dist/deploy/009-configure-vaults.js +41 -0
  81. package/dist/deployments/bscmainnet.json +15808 -1
  82. package/dist/deployments/bsctestnet.json +15189 -1
  83. package/dist/hardhat.config.js +21 -0
  84. package/dist/typechain/contracts/Tokens/Prime/Prime.d.ts +17 -17
  85. package/dist/typechain/contracts/test/PrimeScenario.d.ts +17 -17
  86. package/dist/typechain/factories/contracts/Tokens/Prime/Prime__factory.d.ts +12 -12
  87. package/dist/typechain/factories/contracts/Tokens/Prime/Prime__factory.js +14 -14
  88. package/dist/typechain/factories/contracts/test/PrimeScenario__factory.d.ts +8 -8
  89. package/dist/typechain/factories/contracts/test/PrimeScenario__factory.js +8 -8
  90. package/package.json +2 -2
@@ -588,12 +588,12 @@
588
588
  },
589
589
  {
590
590
  "inputs": [],
591
- "name": "STAKING_PERIOD",
591
+ "name": "NATIVE_MARKET",
592
592
  "outputs": [
593
593
  {
594
- "internalType": "uint256",
594
+ "internalType": "address",
595
595
  "name": "",
596
- "type": "uint256"
596
+ "type": "address"
597
597
  }
598
598
  ],
599
599
  "stateMutability": "view",
@@ -601,12 +601,12 @@
601
601
  },
602
602
  {
603
603
  "inputs": [],
604
- "name": "VBNB",
604
+ "name": "STAKING_PERIOD",
605
605
  "outputs": [
606
606
  {
607
- "internalType": "address",
607
+ "internalType": "uint256",
608
608
  "name": "",
609
- "type": "address"
609
+ "type": "uint256"
610
610
  }
611
611
  ],
612
612
  "stateMutability": "view",
@@ -614,7 +614,7 @@
614
614
  },
615
615
  {
616
616
  "inputs": [],
617
- "name": "WBNB",
617
+ "name": "WRAPPED_NATIVE_TOKEN",
618
618
  "outputs": [
619
619
  {
620
620
  "internalType": "address",
@@ -1622,8 +1622,8 @@
1622
1622
  "type": "function"
1623
1623
  }
1624
1624
  ],
1625
- "bytecode": "0x6101406040523480156200001257600080fd5b50604051620059ee380380620059ee8339810160408190526200003591620001d0565b8585858585856001600160a01b038616620000635760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0385166200008b5760405163e6c4247b60e01b815260040160405180910390fd5b83600003620000ad576040516302723dfb60e21b815260040160405180910390fd5b6001600160a01b0380871660a052851660c052608084905261012083905260e0829052610100819052620000e0620000f2565b5050505050505050505050506200022d565b600054610100900460ff16156200015f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620001b1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b0381168114620001cb57600080fd5b919050565b60008060008060008060c08789031215620001ea57600080fd5b620001f587620001b3565b95506200020560208801620001b3565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160a05160c05160e051610100516101205161572b620002c3600039600081816103c40152818161115e01528181611e1d01528181611e480152611e700152600081816109df01528181613101015261312a01526000818161054901526128a40152600081816104ac015261303d01526000818161063b01526130770152600081816108540152613d56015261572b6000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639565d3d2116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063ba437c6811610192578063c3db3c3611610161578063c3db3c36146107fb578063c4ae316814610805578063c86d1a781461080d578063ce8536131461082157600080fd5b8063ba437c68146107c2578063bc5dc4c3146107d5578063bd212c0e146107e8578063be26317e146107f257600080fd5b8063b0772d0b116101ce578063b0772d0b1461071e578063b4a0bdf314610733578063b7f2d25814610744578063b9eb69f61461076c57600080fd5b80639565d3d2146106db5780639f6506ce1461070a578063a15753dc1461071457600080fd5b80635fe3b567116102e4578063856c3aa4116102775780638da5cb5b116102465780638da5cb5b146106255780638dd95002146106365780638e8f294b1461065d5780639198e515146106c857600080fd5b8063856c3aa4146105e157806388bead73146105eb57806388d742c2146105ff57806389afcb441461061257600080fd5b80637dafcd89116102b35780637dafcd891461057b5780637dc0d1d01461058e5780637ef82070146105a257806380d45a2d146105ce57600080fd5b80635fe3b567146105305780636426b4a714610544578063715018a61461056b57806379ba50971461057357600080fd5b806324e6baf21161035c5780634e71d92d1161032b5780634e71d92d146104eb57806355d36c98146104f3578063594a67ee146105065780635c975abb1461051957600080fd5b806324e6baf2146104945780633421fc52146104a757806337f23cd3146104ce578063487b0dfb146104e157600080fd5b80631b9ce575116103985780631b9ce575146104215780631bffac891461044d5780631cb9a02a1461046e578063207add911461048157600080fd5b80630104db1b146103bf578063021544bd146103f95780630e32cb861461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614d1c565b610a01565b005b61040c61041c366004614dc2565b610c53565b61013754610435906001600160a01b031681565b6040516001600160a01b0390911681526020016103f0565b6103e661045b366004614dc2565b6101406020526000908152604090205481565b6103e661047c366004614ddf565b610c67565b61040c61048f366004614ddf565b610c98565b61040c6104a2366004614e4d565b610d53565b6104357f000000000000000000000000000000000000000000000000000000000000000081565b61040c6104dc366004614dc2565b610f1f565b6103e66101395481565b61040c61112b565b61040c610501366004614e8f565b6111ba565b61040c610514366004614ec4565b611285565b60c95460ff165b60405190151581526020016103f0565b61013f54610435906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c6113fd565b61040c611411565b61040c610589366004614f3e565b611488565b61014254610435906001600160a01b031681565b610136546105b6906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105dc366004614f93565b611612565b6103e66101315481565b61013854610435906001600160a01b031681565b6103e661060d366004614dc2565b611659565b61040c610620366004614dc2565b611675565b6033546001600160a01b0316610435565b6104357f000000000000000000000000000000000000000000000000000000000000000081565b61069e61066b366004614dc2565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106d6366004614dc2565b6116ac565b6105206106e9366004614fac565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b610726611870565b6040516103f09190614fdc565b6097546001600160a01b0316610435565b610757610752366004615029565b6118d3565b604080519283526020830191909152016103f0565b6107a761077a36600461507a565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107d036600461507a565b611a30565b61040c6107e33660046150a8565b611a44565b6103e661013c5481565b6103e660fb5481565b6103e661013d5481565b61040c611c7f565b61014154610435906001600160a01b031681565b610136546105b690600160801b90046001600160801b031681565b61040c61084a36600461507a565b611cc8565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e661088436600461507a565b611ce0565b6103e661012e5481565b6103e66101305481565b61040c6108ab3660046150ee565b611cf5565b6065546001600160a01b0316610435565b61040c6108cf366004614dc2565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614dc2565b611df9565b610932610913366004614dc2565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610435610957366004614dc2565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614dc2565b6101326020526000908152604090205481565b61040c6109a2366004614dc2565b611ea1565b6109ba6109b5366004614dc2565b611f12565b6040516103f09190615121565b6107576109d536600461507a565b612054565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b600054610100900460ff1615808015610a215750600054600160ff909116105b80610a3b5750303b158015610a3b575060005460ff166001145b610aa35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610ac6576000805461ff0019166101001790555b6001600160a01b038a16610aed5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038916610b145760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038316610b3b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038416610b625760405163e6c4247b60e01b815260040160405180910390fd5b610b6c8787612234565b6001600160801b03868116600160801b02908816176101365561013880546001600160a01b03808c166001600160a01b0319928316179092556101398a905561013780548d8416908316179055600061013b556101418054878416908316179055610142805492861692909116919091179055610be88561227a565b610bf06122b2565b610bf9826122e1565b610c01612383565b8015610c47576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b610c5b6123dd565b610c6481612437565b50565b61013654600090610c8f90849084906001600160801b0380821691600160801b9004166124f5565b90505b92915050565b610cd66040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e7432353629000000000000008152506125af565b61012e54821080610ce9575061012f5481105b15610d075760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610d4191815260200190565b60405180910390a46101305561013155565b61013d54600003610d775760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610d9b5760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610f1a576000838383818110610dba57610dba615186565b9050602002016020810190610dcf9190614dc2565b6001600160a01b038116600090815261012d602052604090205490915060ff16610e0c57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610e455750600101610d9e565b610135805460005b81811015610e9d576000838281548110610e6957610e69615186565b6000918252602090912001546001600160a01b03169050610e8a8582612649565b610e948582612725565b50600101610e4d565b5061013d60008154610eae906151b2565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610d9e565b505050565b6000610f2a82612802565b90506000610f37826128a0565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610f91575082155b15610ff3576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b4833981519152910160405180910390a2806020015115610fea57610fe5856128d9565b611124565b610fe585612931565b8215801561100057508051155b801561100b57508115155b15611052576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b483398151915291015b60405180910390a2611124565b8115801561105d5750825b801561106857508051155b156110aa576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b48339815191529101611045565b805180156110b55750825b15611124576110c3856128d9565b6001600160a01b038516600090815261013260205260408120549003611124576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b4833981519152910160405180910390a25b5050505050565b33600090815261013260205260408120549081900361115c5760405162c4e3d160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061118782426151c9565b10156111a65760405163beb98cab60e01b815260040160405180910390fd5b6111b1600033612b05565b610c6433612c16565b6111db6040518060600160405280602a815260200161568a602a91396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1661121957604051630ff2e4a960e31b815260040160405180910390fd5b611222846116ac565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a48281556001810182905561127f612d13565b50505050565b6112c36040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d298152506125af565b8281146112e35760405163251f56a160e21b815260040160405180910390fd5b60005b83811015611124574283838381811061130157611301615186565b9050602002013511156113275760405163b7d0949760e01b815260040160405180910390fd5b82828281811061133957611339615186565b90506020020135610132600087878581811061135757611357615186565b905060200201602081019061136c9190614dc2565b6001600160a01b0316815260208101919091526040016000205584848281811061139857611398615186565b90506020020160208101906113ad9190614dc2565b6001600160a01b03166000805160206156b48339815191528484848181106113d7576113d7615186565b905060200201356040516113ed91815260200190565b60405180910390a26001016112e6565b6114056123dd565b61140f6000612d47565b565b60655433906001600160a01b0316811461147f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a9a565b610c6481612d47565b6114be60405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b8152506125af565b82156115d35760005b8181101561127f57600061012d60008585858181106114e8576114e8615186565b90506020020160208101906114fd9190614dc2565b6001600160a01b031681526020810191909152604001600020805490915060ff16801561153157508054610100900460ff16155b1561156a5761156584848481811061154b5761154b615186565b90506020020160208101906115609190614dc2565b612d60565b6115ca565b61159b600185858581811061158157611581615186565b90506020020160208101906115969190614dc2565b612b05565b6115ca8484848181106115b0576115b0615186565b90506020020160208101906115c59190614dc2565b612c16565b506001016114c7565b60005b8181101561127f576115f5600084848481811061158157611581615186565b61160a8383838181106115b0576115b0615186565b6001016115d6565b6116506040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506125af565b610c64816122e1565b6000611663612e10565b61166d8233612e56565b90505b919050565b6116a36040518060400160405280600d81526020016c6275726e28616464726573732960981b8152506125af565b610c6481612931565b6001600160a01b038116600090815261013360205260409020600481015460ff166116ea57604051630ff2e4a960e31b815260040160405180910390fd5b60006116f583613039565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b15801561174157600080fd5b505af1158015611755573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa1580156117a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c691906151e0565b6001600160a01b03841660009081526101406020526040812054919250906117ee90836151c9565b90508060008190036118035750505050505050565b6001600160a01b03851660009081526101406020526040812084905560038701541561184d576003870154611840670de0b6b3a7640000846151f9565b61184a919061522e565b90505b808760020160008282546118619190615242565b90915550505050505050505050565b60606101358054806020026020016040519081016040528092919081815260200182805480156118c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118ab575b5050505050905090565b6001600160a01b038086166000818152610134602090815260408083209489168352938152838220600101549282526101339052918220600301548291829161191c91906151c9565b90506000611929856130fd565b9050600080600061193c848b8b8f613152565b925092509250600061194d8d613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae919061525a565b60ff1690506119be8160126151c9565b6119c990600a615361565b6119d390856151f9565b610136549094506000906119fe90879087906001600160801b0380821691600160801b9004166124f5565b9050611a0a8188615242565b9650611a1b8e8c8e8787868d61341c565b909f909e509c50505050505050505050505050565b6000611a3a612e10565b610c8f8383612e56565b611a656040518060600160405280602281526020016156d4602291396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611aa457604051630313b28560e01b815260040160405180910390fd5b604051638e8f294b60e01b81526001600160a01b03858116600483015260009190871690638e8f294b90602401602060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b12919061536d565b905080611b3257604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b6586613039565b6001600160a01b03808216600090815261013e60205260409020549192501615611ba25760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611c13612d13565b61013554611c2090613508565b856001600160a01b0316876001600160a01b03167f1322eaea77217179bf4ef6084dc2f48c897e0d5a6b8365213804360e4d8ba9a28787604051611c6e929190918252602082015260400190565b60405180910390a350505050505050565b611cad6040518060400160405280600d81526020016c746f67676c655061757365282960981b8152506125af565b60c95460ff1615611cc05761140f613539565b61140f612383565b611cd28282612649565b611cdc8282612725565b5050565b6000611ceb836116ac565b610c8f8383613572565b611d336040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e7431323829000000008152506125af565b611d3d8282612234565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611df057611de86101358281548110611dce57611dce615186565b6000918252602090912001546001600160a01b03166116ac565b600101611daf565b50610f1a612d13565b6001600160a01b03811660009081526101326020526040812054808203611e4257507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611e97577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611ea96123dd565b606580546001600160a01b0383166001600160a01b03199091168117909155611eda6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611f3457611f3461538a565b604051908082528060200260200182016040528015611f7f57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611f525790505b50925060005b8181101561204c576000838281548110611fa157611fa1615186565b60009182526020822001546001600160a01b03169150611fc18288611ce0565b6001600160a01b03808416600081815261013460209081526040808320948d168352938152908390205483516060810190945291835292935091810161200685613039565b6001600160a01b0316815260200161201e8385615242565b81525087858151811061203357612033615186565b6020026020010181905250836001019350505050611f85565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d91906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d91906151e0565b90506000670de0b6b3a76400006121b483856151f9565b6121be919061522e565b6001600160a01b03808b16600081815261013460209081526040808320948e16835293815283822060010154928252610133905291822060030154929350919061220f61220a8c612802565b6130fd565b9050600080612220838a888d613152565b9250925050611a1b8e878b85858a8a61341c565b806001600160801b0316826001600160801b031610158061225c57506001600160801b038216155b15611cdc57604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff166122a15760405162461bcd60e51b8152600401610a9a906153a0565b6122a9613609565b610c6481613638565b600054610100900460ff166122d95760405162461bcd60e51b8152600401610a9a906153a0565b61140f61365f565b60fb54811161233d5760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b6064820152608401610a9a565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa91015b60405180910390a15050565b61238b612e10565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123c03390565b6040516001600160a01b03909116815260200160405180910390a1565b6033546001600160a01b0316331461140f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a9a565b6001600160a01b03811661249b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401610a9a565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101612377565b6000841580612502575083155b1561250f575060006125a7565b83850361251d5750836125a7565b838510600081612536576125318688613692565b612540565b6125408787613692565b9050600061257b612550866136fa565b612559886136fa565b61256285613764565b61256c91906153eb565b6125769190615470565b61376f565b905082156125975761258d878261377a565b93505050506125a7565b6125a187826137ac565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906125e290339086906004016154f6565b602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612623919061536d565b905080611cdc57333083604051634a3fa29360e01b8152600401610a9a9392919061551a565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061268f57506001600160a01b038216600090815261012d602052604090205460ff16155b15612698575050565b6126a1816116ac565b6126ab8183613572565b6001600160a01b03808316600090815261013460209081526040808320938716835292905290812080549091906126e3908490615242565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff16158061276c57506001600160a01b038316600090815261012d602052604090205460ff16155b1561277657505050565b600061278283856137de565b6001600160a01b0380851660009081526101346020908152604080832093891683529290522060010154600384015491925082916127c091906151c9565b6127ca9190615242565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f9190615546565b925050915080826125a791906151c9565b60007f000000000000000000000000000000000000000000000000000000000000000082106128d157506001919050565b506000919050565b610135805460005b8181101561127f5760008382815481106128fd576128fd615186565b6000918252602090912001546001600160a01b0316905061291e8582612649565b6129288582612725565b506001016128e1565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261298e57604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b81811015612a675760008382815481106129b2576129b2615186565b6000918252602090912001546001600160a01b031690506129d38682612649565b6001600160a01b03808216600081815261013460209081526040808320948b1683529381528382206001015492825261013390529190912060030154612a1991906151c9565b6001600160a01b039182166000908152610133602090815260408083206003019390935561013481528282209389168252929092528120600180820183905560029091019190915501612996565b50826020015115612a8b5761012e60008154612a82906151b2565b90915550612aa0565b61012f60008154612a9b906151b2565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff19169055612acb84613b70565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff1615612b405760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff19909216919091176001178255612b775761012e60008154612b6e90615574565b90915550612b8c565b61012f60008154612b8790615574565b909155505b6101315461012e541180612ba557506101305461012f54115b15612bc35760405163e55fb50960e01b815260040160405180910390fd5b612bcc82613be4565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612c09911515815260200190565b60405180910390a2505050565b610135805460005b8181101561127f576000838281548110612c3a57612c3a615186565b6000918252602090912001546001600160a01b03169050612c5a816116ac565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612c9f82876137de565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612ce9908290615242565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612c1e565b61013b8054906000612d2483615574565b919050555061012f5461012e54612d3b9190615242565b61013c81905561013d55565b606580546001600160a01b0319169055610c6481613c22565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612d9890615574565b9091555061012f8054600090612dad906151b2565b909155506101315461012e541115612dd85760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60c95460ff161561140f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a9a565b600080612e638484611ce0565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612e979082615242565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612ee485613039565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906151e0565b831115612fce576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b505050505b612fe26001600160a01b0382168685613c74565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba8560405161302791815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361309b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166d919061558d565b60007f000000000000000000000000000000000000000000000000000000000000000082111561314e57507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d0919061558d565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa158015613221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324591906151e0565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a764000090819061327c908d6151f9565b613286919061522e565b61329090846151f9565b61329a919061522e565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a76400009081906132ce908e6151f9565b6132d8919061522e565b6132e290856151f9565b6132ec919061522e565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa15801561333d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336191906151e0565b90506000670de0b6b3a76400006133788c846151f9565b613382919061522e565b90506000670de0b6b3a76400006133998e856151f9565b6133a3919061522e565b90508382106133d357816000036133bb5760006133d0565b816133c6858e6151f9565b6133d0919061522e565b9b505b84811061340157806000036133e95760006133fe565b806133f4868f6151f9565b6133fe919061522e565b9c505b61340b8d8d615242565b9e9b9d505050505050505050505050565b60008082600003613432575060009050806134fc565b60008361343e8b613cc6565b61344890876151f9565b613452919061522e565b905060006134608789615242565b905080600003613478576000809350935050506134fc565b612710600080836134898c876151f9565b613493919061522e565b9150836134a08b876151f9565b6134aa919061522e565b90508c156134cc578c6134bd84846151f9565b6134c7919061522e565b6134cf565b60005b96508b156134f1578b6134e284836151f9565b6134ec919061522e565b6134f4565b60005b955050505050505b97509795505050505050565b60fb54811115610c645760fb5460405163792bfb1b60e11b8152600481019190915260248101829052604401610a9a565b613541613d81565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336123c0565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135da91906151c9565b6020830151909150670de0b6b3a76400006135f582846151f9565b6135ff919061522e565b9695505050505050565b600054610100900460ff166136305760405162461bcd60e51b8152600401610a9a906153a0565b61140f613dca565b600054610100900460ff16610c5b5760405162461bcd60e51b8152600401610a9a906153a0565b600054610100900460ff166136865760405162461bcd60e51b8152600401610a9a906153a0565b60c9805460ff19169055565b600061369d836136fa565b6136a6836136fa565b12156136cf576040516360c1ae3960e01b81526004810184905260248101839052604401610a9a565b6136d8826136fa565b6001607f1b6136e6856136fa565b6136f091906153eb565b610c8f9190615470565b60006001600160ff1b0382111561314e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610a9a565b600061166d82613dfa565b600061166d826143e7565b60008082121561379d57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136e6856136fa565b6000808212156137cf57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136e6856136fa565b6000806137ed61220a84612802565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa15801561383c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386091906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c691906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015613912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393691906151e0565b90506000670de0b6b3a764000061394d83856151f9565b613957919061522e565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d3919061558d565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b158015613a7d57600080fd5b505af1158015613a91573d6000803e3d6000fd5b505050506000613aa38887858e613152565b505090506000613ab28c613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b13919061525a565b60ff169050613b238160126151c9565b613b2e90600a615361565b613b3890836151f9565b61013654909250613b60908a9084906001600160801b0380821691600160801b9004166124f5565b9c9b505050505050505050505050565b61013c5415613b8e5761013c60008154613b89906151b2565b909155505b61013d5415801590613bc8575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610c645761013d60008154613bdd906151b2565b9091555050565b61013c5415610c645761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f1a908490614af8565b6101415460009081906001600160a01b031663a666642b613ce685613039565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4e91906151e0565b9050613d7a817f00000000000000000000000000000000000000000000000000000000000000006151f9565b9392505050565b60c95460ff1661140f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a9a565b600054610100900460ff16613df15760405162461bcd60e51b8152600401610a9a906153a0565b61140f33612d47565b60006001607f1b821315613e2457604051633ce23a3d60e11b815260048101839052602401610a9a565b60008213613e48576040516330ecaa3d60e21b815260048101839052602401610a9a565b6001607f1b8203613e5b57506000919050565b640733048c5a8213613e755761166d6101ff607c1b6155aa565b60008060006a01c8464f761647600000008513613ec357613e9a600160841b856155c6565b93506a01c8464f76164760000000613eb66001607f1b876153eb565b613ec09190615470565b94505b6cf1aaddd7742e900000000000008513613f1057613ee5600160831b856155c6565b93506cf1aaddd7742e90000000000000613f036001607f1b876153eb565b613f0d9190615470565b94505b6615fc21041027af603f1b8513613f5757613f2f600160821b856155c6565b93506615fc21041027af603f1b613f4a6001607f1b876153eb565b613f549190615470565b94505b660960aadc109e7b60461b8513613f9e57613f76600160811b856155c6565b9350660960aadc109e7b60461b613f916001607f1b876153eb565b613f9b9190615470565b94505b660454aaa8efe073604a1b8513613fe557613fbd600160801b856155c6565b9350660454aaa8efe073604a1b613fd86001607f1b876153eb565b613fe29190615470565b94505b6602f16ac6c59de7604c1b851361402c576140046001607f1b856155c6565b93506602f16ac6c59de7604c1b61401f6001607f1b876153eb565b6140299190615470565b94505b6609b4597e37cb05604b1b85136140735761404b6001607e1b856155c6565b93506609b4597e37cb05604b1b6140666001607f1b876153eb565b6140709190615470565b94505b6618ebef9eac820b604a1b85136140ba576140926001607d1b856155c6565b93506618ebef9eac820b604a1b6140ad6001607f1b876153eb565b6140b79190615470565b94505b6f70f5a893b608861e1f58934f97aea57d851361410d576140df6001607c1b856155c6565b93506f70f5a893b608861e1f58934f97aea57d6141006001607f1b876153eb565b61410a9190615470565b94505b61411b6001607f1b866155c6565b92508291506001607f1b61412f83806153eb565b6141399190615470565b9050600160801b61414a84826155c6565b61415490846153eb565b61415e9190615470565b6141689085615605565b93506001607f1b61417982846153eb565b6141839190615470565b9150600160811b6141a4846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6155c6565b6141ae90846153eb565b6141b89190615470565b6141c29085615605565b93506001607f1b6141d382846153eb565b6141dd9190615470565b9150600360801b6141fe846f999999999999999999999999999999996155c6565b61420890846153eb565b6142129190615470565b61421c9085615605565b93506001607f1b61422d82846153eb565b6142379190615470565b9150600160821b614258846f924924924924924924924924924924926155c6565b61426290846153eb565b61426c9190615470565b6142769085615605565b93506001607f1b61428782846153eb565b6142919190615470565b9150600560801b6142b2846f8e38e38e38e38e38e38e38e38e38e38e6155c6565b6142bc90846153eb565b6142c69190615470565b6142d09085615605565b93506001607f1b6142e182846153eb565b6142eb9190615470565b9150600360811b61430c846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b6155c6565b61431690846153eb565b6143209190615470565b61432a9085615605565b93506001607f1b61433b82846153eb565b6143459190615470565b9150600760801b614366846f89d89d89d89d89d89d89d89d89d89d896155c6565b61437090846153eb565b61437a9190615470565b6143849085615605565b93506001607f1b61439582846153eb565b61439f9190615470565b9150600160831b6143c0846f888888888888888888888888888888886155c6565b6143ca90846153eb565b6143d49190615470565b6143de9085615605565b95945050505050565b60006143f76101ff607c1b6155aa565b82121561440657506000919050565b8160000361441957506001607f1b919050565b600082131561443e57604051631086170d60e01b815260048101839052602401610a9a565b60008061444f6001607c1b85615646565b91508190506001607f1b61446382806153eb565b61446d9190615470565b9050614481816710e1b3be415a00006153eb565b61448b9084615605565b92506001607f1b61449c83836153eb565b6144a69190615470565b90506144ba816705a0913f6b1e00006153eb565b6144c49084615605565b92506001607f1b6144d583836153eb565b6144df9190615470565b90506144f381670168244fdac780006153eb565b6144fd9084615605565b92506001607f1b61450e83836153eb565b6145189190615470565b905061452b81664807432bc180006153eb565b6145359084615605565b92506001607f1b61454683836153eb565b6145509190615470565b905061456381660c0135dca040006153eb565b61456d9084615605565b92506001607f1b61457e83836153eb565b6145889190615470565b905061459b816601b707b1cdc0006153eb565b6145a59084615605565b92506001607f1b6145b683836153eb565b6145c09190615470565b90506145d2816536e0f639b8006153eb565b6145dc9084615605565b92506001607f1b6145ed83836153eb565b6145f79190615470565b905061460981650618fee9f8006153eb565b6146139084615605565b92506001607f1b61462483836153eb565b61462e9190615470565b905061463f81649c197dcc006153eb565b6146499084615605565b92506001607f1b61465a83836153eb565b6146649190615470565b905061467581640e30dce4006153eb565b61467f9084615605565b92506001607f1b61469083836153eb565b61469a9190615470565b90506146ab8164012ebd13006153eb565b6146b59084615605565b92506001607f1b6146c683836153eb565b6146d09190615470565b90506146e0816317499f006153eb565b6146ea9084615605565b92506001607f1b6146fb83836153eb565b6147059190615470565b9050614715816301a9d4806153eb565b61471f9084615605565b92506001607f1b61473083836153eb565b61473a9190615470565b905061474981621c63806153eb565b6147539084615605565b92506001607f1b61476483836153eb565b61476e9190615470565b905061477d816201c6386153eb565b6147879084615605565b92506001607f1b61479883836153eb565b6147a29190615470565b90506147b081611ab86153eb565b6147ba9084615605565b92506001607f1b6147cb83836153eb565b6147d59190615470565b90506147e38161017c6153eb565b6147ed9084615605565b92506001607f1b6147fe83836153eb565b6148089190615470565b90506148158160146153eb565b61481f9084615605565b92506001607f1b61483083836153eb565b61483a9190615470565b90506148478160016153eb565b6148519084615605565b92506001607f1b8261486b6721c3677c82b4000086615470565b6148759190615605565b61487f9190615605565b925061488a846155aa565b9350600160841b8416156148d0577243cbaf42a000812488fc5c220ad7b97bf6e99e6148c36cf1aaddd7742e56d32fb9f99744856153eb565b6148cd9190615470565b92505b600160831b841615614915577105d27a9f51c31b7c2f8038212a05747799916149086e0afe10820813d65dfe6a33c07f738f856153eb565b6149129190615470565b92505b600160821b84161561495a57701b4c902e273a58678d6d3bfdb93db96d0261494d6f02582ab704279e8efd15e0265855c47a856153eb565b6149579190615470565b92505b600160811b84161561499f577003b1cc971a9bb5b9867477440d6d1577506149926f1152aaa3bf81cb9fdb76eae12d029571856153eb565b61499c9190615470565b92505b600160801b8416156149e45770015bf0a8b1457695355fb8ac404e7a79e36149d76f2f16ac6c59de6f8d5d6f63c1482a7c86856153eb565b6149e19190615470565b92505b6001607f1b841615614a28576fd3094c70f034de4b96ff7d5b6f99fcd8614a1b6f4da2cbf1be5827f9eb3ad1aa9866ebb3856153eb565b614a259190615470565b92505b6001607e1b841615614a6c576fa45af1e1f40c333b3de1db4dd55f29a7614a5f6f63afbe7ab2082ba1a0ae5e4eb1b479dc856153eb565b614a699190615470565b92505b6001607d1b841615614ab0576f910b022db7ae67ce76b441c27035c6a1614aa36f70f5a893b608861e1f58934f97aea57d856153eb565b614aad9190615470565b92505b6001607c1b841615614af1576f88415abbe9a76bead8d00cf112e4d4a8614ae76f783eafef1c0a8f3978c7f81824d62ebf856153eb565b6125a79190615470565b5050919050565b6000614b4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bcd9092919063ffffffff16565b9050805160001480614b6e575080806020019051810190614b6e919061536d565b610f1a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a9a565b60606125a7848460008585600080866001600160a01b03168587604051614bf4919061565a565b60006040518083038185875af1925050503d8060008114614c31576040519150601f19603f3d011682016040523d82523d6000602084013e614c36565b606091505b5091509150614c4787838387614c52565b979650505050505050565b60608315614cc1578251600003614cba576001600160a01b0385163b614cba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a9a565b50816125a7565b6125a78383815115614cd65781518083602001fd5b8060405162461bcd60e51b8152600401610a9a9190615676565b6001600160a01b0381168114610c6457600080fd5b80356001600160801b038116811461167057600080fd5b60008060008060008060008060006101208a8c031215614d3b57600080fd5b8935614d4681614cf0565b985060208a0135614d5681614cf0565b975060408a01359650614d6b60608b01614d05565b9550614d7960808b01614d05565b945060a08a0135614d8981614cf0565b935060c08a0135614d9981614cf0565b925060e08a0135614da981614cf0565b809250506101008a013590509295985092959850929598565b600060208284031215614dd457600080fd5b8135613d7a81614cf0565b60008060408385031215614df257600080fd5b50508035926020909101359150565b60008083601f840112614e1357600080fd5b50813567ffffffffffffffff811115614e2b57600080fd5b6020830191508360208260051b8501011115614e4657600080fd5b9250929050565b60008060208385031215614e6057600080fd5b823567ffffffffffffffff811115614e7757600080fd5b614e8385828601614e01565b90969095509350505050565b600080600060608486031215614ea457600080fd5b8335614eaf81614cf0565b95602085013595506040909401359392505050565b60008060008060408587031215614eda57600080fd5b843567ffffffffffffffff80821115614ef257600080fd5b614efe88838901614e01565b90965094506020870135915080821115614f1757600080fd5b50614f2487828801614e01565b95989497509550505050565b8015158114610c6457600080fd5b600080600060408486031215614f5357600080fd5b8335614f5e81614f30565b9250602084013567ffffffffffffffff811115614f7a57600080fd5b614f8686828701614e01565b9497909650939450505050565b600060208284031215614fa557600080fd5b5035919050565b60008060408385031215614fbf57600080fd5b823591506020830135614fd181614cf0565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561501d5783516001600160a01b031683529284019291840191600101614ff8565b50909695505050505050565b600080600080600060a0868803121561504157600080fd5b853561504c81614cf0565b9450602086013561505c81614cf0565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561508d57600080fd5b823561509881614cf0565b91506020830135614fd181614cf0565b600080600080608085870312156150be57600080fd5b84356150c981614cf0565b935060208501356150d981614cf0565b93969395505050506040820135916060013590565b6000806040838503121561510157600080fd5b61510a83614d05565b915061511860208401614d05565b90509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561517957815180516001600160a01b039081168652878201511687860152850151858501526060909301929085019060010161513e565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816151c1576151c161519c565b506000190190565b6000828210156151db576151db61519c565b500390565b6000602082840312156151f257600080fd5b5051919050565b60008160001904831182151516156152135761521361519c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261523d5761523d615218565b500490565b600082198211156152555761525561519c565b500190565b60006020828403121561526c57600080fd5b815160ff81168114613d7a57600080fd5b600181815b808511156152b857816000190482111561529e5761529e61519c565b808516156152ab57918102915b93841c9390800290615282565b509250929050565b6000826152cf57506001610c92565b816152dc57506000610c92565b81600181146152f257600281146152fc57615318565b6001915050610c92565b60ff84111561530d5761530d61519c565b50506001821b610c92565b5060208310610133831016604e8410600b841016171561533b575081810a610c92565b615345838361527d565b80600019048211156153595761535961519c565b029392505050565b6000610c8f83836152c0565b60006020828403121561537f57600080fd5b8151613d7a81614f30565b634e487b7160e01b600052604160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160ff1b03818413828413808216868404861116156154115761541161519c565b600160ff1b60008712828116878305891216156154305761543061519c565b6000871292508782058712848416161561544c5761544c61519c565b878505871281841616156154625761546261519c565b505050929093029392505050565b60008261547f5761547f615218565b600160ff1b8214600019841416156154995761549961519c565b500590565b60005b838110156154b95781810151838201526020016154a1565b8381111561127f5750506000910152565b600081518084526154e281602086016020860161549e565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906125a7908301846154ca565b6001600160a01b038481168252831660208201526060604082018190526000906143de908301846154ca565b60008060006060848603121561555b57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016155865761558661519c565b5060010190565b60006020828403121561559f57600080fd5b8151613d7a81614cf0565b6000600160ff1b82016155bf576155bf61519c565b5060000390565b60008083128015600160ff1b8501841216156155e4576155e461519c565b6001600160ff1b03840183138116156155ff576155ff61519c565b50500390565b600080821280156001600160ff1b03849003851316156156275761562761519c565b600160ff1b83900384128116156156405761564061519c565b50500190565b60008261565557615655615218565b500790565b6000825161566c81846020870161549e565b9190910192915050565b602081526000610c8f60208301846154ca56fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e743235362909d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc6164644d61726b657428616464726573732c75696e743235362c75696e7432353629a2646970667358221220ed110145977e130d483d7dc8589f1413b6b7ec345f60460a7276ad6e885bdb7a64736f6c634300080d0033",
1626
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639565d3d2116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063ba437c6811610192578063c3db3c3611610161578063c3db3c36146107fb578063c4ae316814610805578063c86d1a781461080d578063ce8536131461082157600080fd5b8063ba437c68146107c2578063bc5dc4c3146107d5578063bd212c0e146107e8578063be26317e146107f257600080fd5b8063b0772d0b116101ce578063b0772d0b1461071e578063b4a0bdf314610733578063b7f2d25814610744578063b9eb69f61461076c57600080fd5b80639565d3d2146106db5780639f6506ce1461070a578063a15753dc1461071457600080fd5b80635fe3b567116102e4578063856c3aa4116102775780638da5cb5b116102465780638da5cb5b146106255780638dd95002146106365780638e8f294b1461065d5780639198e515146106c857600080fd5b8063856c3aa4146105e157806388bead73146105eb57806388d742c2146105ff57806389afcb441461061257600080fd5b80637dafcd89116102b35780637dafcd891461057b5780637dc0d1d01461058e5780637ef82070146105a257806380d45a2d146105ce57600080fd5b80635fe3b567146105305780636426b4a714610544578063715018a61461056b57806379ba50971461057357600080fd5b806324e6baf21161035c5780634e71d92d1161032b5780634e71d92d146104eb57806355d36c98146104f3578063594a67ee146105065780635c975abb1461051957600080fd5b806324e6baf2146104945780633421fc52146104a757806337f23cd3146104ce578063487b0dfb146104e157600080fd5b80631b9ce575116103985780631b9ce575146104215780631bffac891461044d5780631cb9a02a1461046e578063207add911461048157600080fd5b80630104db1b146103bf578063021544bd146103f95780630e32cb861461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614d1c565b610a01565b005b61040c61041c366004614dc2565b610c53565b61013754610435906001600160a01b031681565b6040516001600160a01b0390911681526020016103f0565b6103e661045b366004614dc2565b6101406020526000908152604090205481565b6103e661047c366004614ddf565b610c67565b61040c61048f366004614ddf565b610c98565b61040c6104a2366004614e4d565b610d53565b6104357f000000000000000000000000000000000000000000000000000000000000000081565b61040c6104dc366004614dc2565b610f1f565b6103e66101395481565b61040c61112b565b61040c610501366004614e8f565b6111ba565b61040c610514366004614ec4565b611285565b60c95460ff165b60405190151581526020016103f0565b61013f54610435906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c6113fd565b61040c611411565b61040c610589366004614f3e565b611488565b61014254610435906001600160a01b031681565b610136546105b6906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105dc366004614f93565b611612565b6103e66101315481565b61013854610435906001600160a01b031681565b6103e661060d366004614dc2565b611659565b61040c610620366004614dc2565b611675565b6033546001600160a01b0316610435565b6104357f000000000000000000000000000000000000000000000000000000000000000081565b61069e61066b366004614dc2565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106d6366004614dc2565b6116ac565b6105206106e9366004614fac565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b610726611870565b6040516103f09190614fdc565b6097546001600160a01b0316610435565b610757610752366004615029565b6118d3565b604080519283526020830191909152016103f0565b6107a761077a36600461507a565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107d036600461507a565b611a30565b61040c6107e33660046150a8565b611a44565b6103e661013c5481565b6103e660fb5481565b6103e661013d5481565b61040c611c7f565b61014154610435906001600160a01b031681565b610136546105b690600160801b90046001600160801b031681565b61040c61084a36600461507a565b611cc8565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e661088436600461507a565b611ce0565b6103e661012e5481565b6103e66101305481565b61040c6108ab3660046150ee565b611cf5565b6065546001600160a01b0316610435565b61040c6108cf366004614dc2565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614dc2565b611df9565b610932610913366004614dc2565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610435610957366004614dc2565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614dc2565b6101326020526000908152604090205481565b61040c6109a2366004614dc2565b611ea1565b6109ba6109b5366004614dc2565b611f12565b6040516103f09190615121565b6107576109d536600461507a565b612054565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b600054610100900460ff1615808015610a215750600054600160ff909116105b80610a3b5750303b158015610a3b575060005460ff166001145b610aa35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610ac6576000805461ff0019166101001790555b6001600160a01b038a16610aed5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038916610b145760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038316610b3b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038416610b625760405163e6c4247b60e01b815260040160405180910390fd5b610b6c8787612234565b6001600160801b03868116600160801b02908816176101365561013880546001600160a01b03808c166001600160a01b0319928316179092556101398a905561013780548d8416908316179055600061013b556101418054878416908316179055610142805492861692909116919091179055610be88561227a565b610bf06122b2565b610bf9826122e1565b610c01612383565b8015610c47576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b610c5b6123dd565b610c6481612437565b50565b61013654600090610c8f90849084906001600160801b0380821691600160801b9004166124f5565b90505b92915050565b610cd66040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e7432353629000000000000008152506125af565b61012e54821080610ce9575061012f5481105b15610d075760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610d4191815260200190565b60405180910390a46101305561013155565b61013d54600003610d775760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610d9b5760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610f1a576000838383818110610dba57610dba615186565b9050602002016020810190610dcf9190614dc2565b6001600160a01b038116600090815261012d602052604090205490915060ff16610e0c57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610e455750600101610d9e565b610135805460005b81811015610e9d576000838281548110610e6957610e69615186565b6000918252602090912001546001600160a01b03169050610e8a8582612649565b610e948582612725565b50600101610e4d565b5061013d60008154610eae906151b2565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610d9e565b505050565b6000610f2a82612802565b90506000610f37826128a0565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610f91575082155b15610ff3576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b4833981519152910160405180910390a2806020015115610fea57610fe5856128d9565b611124565b610fe585612931565b8215801561100057508051155b801561100b57508115155b15611052576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b483398151915291015b60405180910390a2611124565b8115801561105d5750825b801561106857508051155b156110aa576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b48339815191529101611045565b805180156110b55750825b15611124576110c3856128d9565b6001600160a01b038516600090815261013260205260408120549003611124576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b4833981519152910160405180910390a25b5050505050565b33600090815261013260205260408120549081900361115c5760405162c4e3d160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061118782426151c9565b10156111a65760405163beb98cab60e01b815260040160405180910390fd5b6111b1600033612b05565b610c6433612c16565b6111db6040518060600160405280602a815260200161568a602a91396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1661121957604051630ff2e4a960e31b815260040160405180910390fd5b611222846116ac565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a48281556001810182905561127f612d13565b50505050565b6112c36040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d298152506125af565b8281146112e35760405163251f56a160e21b815260040160405180910390fd5b60005b83811015611124574283838381811061130157611301615186565b9050602002013511156113275760405163b7d0949760e01b815260040160405180910390fd5b82828281811061133957611339615186565b90506020020135610132600087878581811061135757611357615186565b905060200201602081019061136c9190614dc2565b6001600160a01b0316815260208101919091526040016000205584848281811061139857611398615186565b90506020020160208101906113ad9190614dc2565b6001600160a01b03166000805160206156b48339815191528484848181106113d7576113d7615186565b905060200201356040516113ed91815260200190565b60405180910390a26001016112e6565b6114056123dd565b61140f6000612d47565b565b60655433906001600160a01b0316811461147f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a9a565b610c6481612d47565b6114be60405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b8152506125af565b82156115d35760005b8181101561127f57600061012d60008585858181106114e8576114e8615186565b90506020020160208101906114fd9190614dc2565b6001600160a01b031681526020810191909152604001600020805490915060ff16801561153157508054610100900460ff16155b1561156a5761156584848481811061154b5761154b615186565b90506020020160208101906115609190614dc2565b612d60565b6115ca565b61159b600185858581811061158157611581615186565b90506020020160208101906115969190614dc2565b612b05565b6115ca8484848181106115b0576115b0615186565b90506020020160208101906115c59190614dc2565b612c16565b506001016114c7565b60005b8181101561127f576115f5600084848481811061158157611581615186565b61160a8383838181106115b0576115b0615186565b6001016115d6565b6116506040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506125af565b610c64816122e1565b6000611663612e10565b61166d8233612e56565b90505b919050565b6116a36040518060400160405280600d81526020016c6275726e28616464726573732960981b8152506125af565b610c6481612931565b6001600160a01b038116600090815261013360205260409020600481015460ff166116ea57604051630ff2e4a960e31b815260040160405180910390fd5b60006116f583613039565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b15801561174157600080fd5b505af1158015611755573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa1580156117a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c691906151e0565b6001600160a01b03841660009081526101406020526040812054919250906117ee90836151c9565b90508060008190036118035750505050505050565b6001600160a01b03851660009081526101406020526040812084905560038701541561184d576003870154611840670de0b6b3a7640000846151f9565b61184a919061522e565b90505b808760020160008282546118619190615242565b90915550505050505050505050565b60606101358054806020026020016040519081016040528092919081815260200182805480156118c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118ab575b5050505050905090565b6001600160a01b038086166000818152610134602090815260408083209489168352938152838220600101549282526101339052918220600301548291829161191c91906151c9565b90506000611929856130fd565b9050600080600061193c848b8b8f613152565b925092509250600061194d8d613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae919061525a565b60ff1690506119be8160126151c9565b6119c990600a615361565b6119d390856151f9565b610136549094506000906119fe90879087906001600160801b0380821691600160801b9004166124f5565b9050611a0a8188615242565b9650611a1b8e8c8e8787868d61341c565b909f909e509c50505050505050505050505050565b6000611a3a612e10565b610c8f8383612e56565b611a656040518060600160405280602281526020016156d4602291396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611aa457604051630313b28560e01b815260040160405180910390fd5b604051638e8f294b60e01b81526001600160a01b03858116600483015260009190871690638e8f294b90602401602060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b12919061536d565b905080611b3257604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b6586613039565b6001600160a01b03808216600090815261013e60205260409020549192501615611ba25760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611c13612d13565b61013554611c2090613508565b856001600160a01b0316876001600160a01b03167f1322eaea77217179bf4ef6084dc2f48c897e0d5a6b8365213804360e4d8ba9a28787604051611c6e929190918252602082015260400190565b60405180910390a350505050505050565b611cad6040518060400160405280600d81526020016c746f67676c655061757365282960981b8152506125af565b60c95460ff1615611cc05761140f613539565b61140f612383565b611cd28282612649565b611cdc8282612725565b5050565b6000611ceb836116ac565b610c8f8383613572565b611d336040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e7431323829000000008152506125af565b611d3d8282612234565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611df057611de86101358281548110611dce57611dce615186565b6000918252602090912001546001600160a01b03166116ac565b600101611daf565b50610f1a612d13565b6001600160a01b03811660009081526101326020526040812054808203611e4257507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611e97577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611ea96123dd565b606580546001600160a01b0383166001600160a01b03199091168117909155611eda6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611f3457611f3461538a565b604051908082528060200260200182016040528015611f7f57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611f525790505b50925060005b8181101561204c576000838281548110611fa157611fa1615186565b60009182526020822001546001600160a01b03169150611fc18288611ce0565b6001600160a01b03808416600081815261013460209081526040808320948d168352938152908390205483516060810190945291835292935091810161200685613039565b6001600160a01b0316815260200161201e8385615242565b81525087858151811061203357612033615186565b6020026020010181905250836001019350505050611f85565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d91906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d91906151e0565b90506000670de0b6b3a76400006121b483856151f9565b6121be919061522e565b6001600160a01b03808b16600081815261013460209081526040808320948e16835293815283822060010154928252610133905291822060030154929350919061220f61220a8c612802565b6130fd565b9050600080612220838a888d613152565b9250925050611a1b8e878b85858a8a61341c565b806001600160801b0316826001600160801b031610158061225c57506001600160801b038216155b15611cdc57604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff166122a15760405162461bcd60e51b8152600401610a9a906153a0565b6122a9613609565b610c6481613638565b600054610100900460ff166122d95760405162461bcd60e51b8152600401610a9a906153a0565b61140f61365f565b60fb54811161233d5760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b6064820152608401610a9a565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa91015b60405180910390a15050565b61238b612e10565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123c03390565b6040516001600160a01b03909116815260200160405180910390a1565b6033546001600160a01b0316331461140f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a9a565b6001600160a01b03811661249b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401610a9a565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101612377565b6000841580612502575083155b1561250f575060006125a7565b83850361251d5750836125a7565b838510600081612536576125318688613692565b612540565b6125408787613692565b9050600061257b612550866136fa565b612559886136fa565b61256285613764565b61256c91906153eb565b6125769190615470565b61376f565b905082156125975761258d878261377a565b93505050506125a7565b6125a187826137ac565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906125e290339086906004016154f6565b602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612623919061536d565b905080611cdc57333083604051634a3fa29360e01b8152600401610a9a9392919061551a565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061268f57506001600160a01b038216600090815261012d602052604090205460ff16155b15612698575050565b6126a1816116ac565b6126ab8183613572565b6001600160a01b03808316600090815261013460209081526040808320938716835292905290812080549091906126e3908490615242565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff16158061276c57506001600160a01b038316600090815261012d602052604090205460ff16155b1561277657505050565b600061278283856137de565b6001600160a01b0380851660009081526101346020908152604080832093891683529290522060010154600384015491925082916127c091906151c9565b6127ca9190615242565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f9190615546565b925050915080826125a791906151c9565b60007f000000000000000000000000000000000000000000000000000000000000000082106128d157506001919050565b506000919050565b610135805460005b8181101561127f5760008382815481106128fd576128fd615186565b6000918252602090912001546001600160a01b0316905061291e8582612649565b6129288582612725565b506001016128e1565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261298e57604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b81811015612a675760008382815481106129b2576129b2615186565b6000918252602090912001546001600160a01b031690506129d38682612649565b6001600160a01b03808216600081815261013460209081526040808320948b1683529381528382206001015492825261013390529190912060030154612a1991906151c9565b6001600160a01b039182166000908152610133602090815260408083206003019390935561013481528282209389168252929092528120600180820183905560029091019190915501612996565b50826020015115612a8b5761012e60008154612a82906151b2565b90915550612aa0565b61012f60008154612a9b906151b2565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff19169055612acb84613b70565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff1615612b405760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff19909216919091176001178255612b775761012e60008154612b6e90615574565b90915550612b8c565b61012f60008154612b8790615574565b909155505b6101315461012e541180612ba557506101305461012f54115b15612bc35760405163e55fb50960e01b815260040160405180910390fd5b612bcc82613be4565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612c09911515815260200190565b60405180910390a2505050565b610135805460005b8181101561127f576000838281548110612c3a57612c3a615186565b6000918252602090912001546001600160a01b03169050612c5a816116ac565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612c9f82876137de565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612ce9908290615242565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612c1e565b61013b8054906000612d2483615574565b919050555061012f5461012e54612d3b9190615242565b61013c81905561013d55565b606580546001600160a01b0319169055610c6481613c22565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612d9890615574565b9091555061012f8054600090612dad906151b2565b909155506101315461012e541115612dd85760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60c95460ff161561140f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a9a565b600080612e638484611ce0565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612e979082615242565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612ee485613039565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906151e0565b831115612fce576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b505050505b612fe26001600160a01b0382168685613c74565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba8560405161302791815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361309b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166d919061558d565b60007f000000000000000000000000000000000000000000000000000000000000000082111561314e57507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d0919061558d565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa158015613221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324591906151e0565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a764000090819061327c908d6151f9565b613286919061522e565b61329090846151f9565b61329a919061522e565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a76400009081906132ce908e6151f9565b6132d8919061522e565b6132e290856151f9565b6132ec919061522e565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa15801561333d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336191906151e0565b90506000670de0b6b3a76400006133788c846151f9565b613382919061522e565b90506000670de0b6b3a76400006133998e856151f9565b6133a3919061522e565b90508382106133d357816000036133bb5760006133d0565b816133c6858e6151f9565b6133d0919061522e565b9b505b84811061340157806000036133e95760006133fe565b806133f4868f6151f9565b6133fe919061522e565b9c505b61340b8d8d615242565b9e9b9d505050505050505050505050565b60008082600003613432575060009050806134fc565b60008361343e8b613cc6565b61344890876151f9565b613452919061522e565b905060006134608789615242565b905080600003613478576000809350935050506134fc565b612710600080836134898c876151f9565b613493919061522e565b9150836134a08b876151f9565b6134aa919061522e565b90508c156134cc578c6134bd84846151f9565b6134c7919061522e565b6134cf565b60005b96508b156134f1578b6134e284836151f9565b6134ec919061522e565b6134f4565b60005b955050505050505b97509795505050505050565b60fb54811115610c645760fb5460405163792bfb1b60e11b8152600481019190915260248101829052604401610a9a565b613541613d81565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336123c0565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135da91906151c9565b6020830151909150670de0b6b3a76400006135f582846151f9565b6135ff919061522e565b9695505050505050565b600054610100900460ff166136305760405162461bcd60e51b8152600401610a9a906153a0565b61140f613dca565b600054610100900460ff16610c5b5760405162461bcd60e51b8152600401610a9a906153a0565b600054610100900460ff166136865760405162461bcd60e51b8152600401610a9a906153a0565b60c9805460ff19169055565b600061369d836136fa565b6136a6836136fa565b12156136cf576040516360c1ae3960e01b81526004810184905260248101839052604401610a9a565b6136d8826136fa565b6001607f1b6136e6856136fa565b6136f091906153eb565b610c8f9190615470565b60006001600160ff1b0382111561314e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610a9a565b600061166d82613dfa565b600061166d826143e7565b60008082121561379d57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136e6856136fa565b6000808212156137cf57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136e6856136fa565b6000806137ed61220a84612802565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa15801561383c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386091906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c691906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015613912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393691906151e0565b90506000670de0b6b3a764000061394d83856151f9565b613957919061522e565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d3919061558d565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b158015613a7d57600080fd5b505af1158015613a91573d6000803e3d6000fd5b505050506000613aa38887858e613152565b505090506000613ab28c613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b13919061525a565b60ff169050613b238160126151c9565b613b2e90600a615361565b613b3890836151f9565b61013654909250613b60908a9084906001600160801b0380821691600160801b9004166124f5565b9c9b505050505050505050505050565b61013c5415613b8e5761013c60008154613b89906151b2565b909155505b61013d5415801590613bc8575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610c645761013d60008154613bdd906151b2565b9091555050565b61013c5415610c645761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f1a908490614af8565b6101415460009081906001600160a01b031663a666642b613ce685613039565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4e91906151e0565b9050613d7a817f00000000000000000000000000000000000000000000000000000000000000006151f9565b9392505050565b60c95460ff1661140f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a9a565b600054610100900460ff16613df15760405162461bcd60e51b8152600401610a9a906153a0565b61140f33612d47565b60006001607f1b821315613e2457604051633ce23a3d60e11b815260048101839052602401610a9a565b60008213613e48576040516330ecaa3d60e21b815260048101839052602401610a9a565b6001607f1b8203613e5b57506000919050565b640733048c5a8213613e755761166d6101ff607c1b6155aa565b60008060006a01c8464f761647600000008513613ec357613e9a600160841b856155c6565b93506a01c8464f76164760000000613eb66001607f1b876153eb565b613ec09190615470565b94505b6cf1aaddd7742e900000000000008513613f1057613ee5600160831b856155c6565b93506cf1aaddd7742e90000000000000613f036001607f1b876153eb565b613f0d9190615470565b94505b6615fc21041027af603f1b8513613f5757613f2f600160821b856155c6565b93506615fc21041027af603f1b613f4a6001607f1b876153eb565b613f549190615470565b94505b660960aadc109e7b60461b8513613f9e57613f76600160811b856155c6565b9350660960aadc109e7b60461b613f916001607f1b876153eb565b613f9b9190615470565b94505b660454aaa8efe073604a1b8513613fe557613fbd600160801b856155c6565b9350660454aaa8efe073604a1b613fd86001607f1b876153eb565b613fe29190615470565b94505b6602f16ac6c59de7604c1b851361402c576140046001607f1b856155c6565b93506602f16ac6c59de7604c1b61401f6001607f1b876153eb565b6140299190615470565b94505b6609b4597e37cb05604b1b85136140735761404b6001607e1b856155c6565b93506609b4597e37cb05604b1b6140666001607f1b876153eb565b6140709190615470565b94505b6618ebef9eac820b604a1b85136140ba576140926001607d1b856155c6565b93506618ebef9eac820b604a1b6140ad6001607f1b876153eb565b6140b79190615470565b94505b6f70f5a893b608861e1f58934f97aea57d851361410d576140df6001607c1b856155c6565b93506f70f5a893b608861e1f58934f97aea57d6141006001607f1b876153eb565b61410a9190615470565b94505b61411b6001607f1b866155c6565b92508291506001607f1b61412f83806153eb565b6141399190615470565b9050600160801b61414a84826155c6565b61415490846153eb565b61415e9190615470565b6141689085615605565b93506001607f1b61417982846153eb565b6141839190615470565b9150600160811b6141a4846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6155c6565b6141ae90846153eb565b6141b89190615470565b6141c29085615605565b93506001607f1b6141d382846153eb565b6141dd9190615470565b9150600360801b6141fe846f999999999999999999999999999999996155c6565b61420890846153eb565b6142129190615470565b61421c9085615605565b93506001607f1b61422d82846153eb565b6142379190615470565b9150600160821b614258846f924924924924924924924924924924926155c6565b61426290846153eb565b61426c9190615470565b6142769085615605565b93506001607f1b61428782846153eb565b6142919190615470565b9150600560801b6142b2846f8e38e38e38e38e38e38e38e38e38e38e6155c6565b6142bc90846153eb565b6142c69190615470565b6142d09085615605565b93506001607f1b6142e182846153eb565b6142eb9190615470565b9150600360811b61430c846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b6155c6565b61431690846153eb565b6143209190615470565b61432a9085615605565b93506001607f1b61433b82846153eb565b6143459190615470565b9150600760801b614366846f89d89d89d89d89d89d89d89d89d89d896155c6565b61437090846153eb565b61437a9190615470565b6143849085615605565b93506001607f1b61439582846153eb565b61439f9190615470565b9150600160831b6143c0846f888888888888888888888888888888886155c6565b6143ca90846153eb565b6143d49190615470565b6143de9085615605565b95945050505050565b60006143f76101ff607c1b6155aa565b82121561440657506000919050565b8160000361441957506001607f1b919050565b600082131561443e57604051631086170d60e01b815260048101839052602401610a9a565b60008061444f6001607c1b85615646565b91508190506001607f1b61446382806153eb565b61446d9190615470565b9050614481816710e1b3be415a00006153eb565b61448b9084615605565b92506001607f1b61449c83836153eb565b6144a69190615470565b90506144ba816705a0913f6b1e00006153eb565b6144c49084615605565b92506001607f1b6144d583836153eb565b6144df9190615470565b90506144f381670168244fdac780006153eb565b6144fd9084615605565b92506001607f1b61450e83836153eb565b6145189190615470565b905061452b81664807432bc180006153eb565b6145359084615605565b92506001607f1b61454683836153eb565b6145509190615470565b905061456381660c0135dca040006153eb565b61456d9084615605565b92506001607f1b61457e83836153eb565b6145889190615470565b905061459b816601b707b1cdc0006153eb565b6145a59084615605565b92506001607f1b6145b683836153eb565b6145c09190615470565b90506145d2816536e0f639b8006153eb565b6145dc9084615605565b92506001607f1b6145ed83836153eb565b6145f79190615470565b905061460981650618fee9f8006153eb565b6146139084615605565b92506001607f1b61462483836153eb565b61462e9190615470565b905061463f81649c197dcc006153eb565b6146499084615605565b92506001607f1b61465a83836153eb565b6146649190615470565b905061467581640e30dce4006153eb565b61467f9084615605565b92506001607f1b61469083836153eb565b61469a9190615470565b90506146ab8164012ebd13006153eb565b6146b59084615605565b92506001607f1b6146c683836153eb565b6146d09190615470565b90506146e0816317499f006153eb565b6146ea9084615605565b92506001607f1b6146fb83836153eb565b6147059190615470565b9050614715816301a9d4806153eb565b61471f9084615605565b92506001607f1b61473083836153eb565b61473a9190615470565b905061474981621c63806153eb565b6147539084615605565b92506001607f1b61476483836153eb565b61476e9190615470565b905061477d816201c6386153eb565b6147879084615605565b92506001607f1b61479883836153eb565b6147a29190615470565b90506147b081611ab86153eb565b6147ba9084615605565b92506001607f1b6147cb83836153eb565b6147d59190615470565b90506147e38161017c6153eb565b6147ed9084615605565b92506001607f1b6147fe83836153eb565b6148089190615470565b90506148158160146153eb565b61481f9084615605565b92506001607f1b61483083836153eb565b61483a9190615470565b90506148478160016153eb565b6148519084615605565b92506001607f1b8261486b6721c3677c82b4000086615470565b6148759190615605565b61487f9190615605565b925061488a846155aa565b9350600160841b8416156148d0577243cbaf42a000812488fc5c220ad7b97bf6e99e6148c36cf1aaddd7742e56d32fb9f99744856153eb565b6148cd9190615470565b92505b600160831b841615614915577105d27a9f51c31b7c2f8038212a05747799916149086e0afe10820813d65dfe6a33c07f738f856153eb565b6149129190615470565b92505b600160821b84161561495a57701b4c902e273a58678d6d3bfdb93db96d0261494d6f02582ab704279e8efd15e0265855c47a856153eb565b6149579190615470565b92505b600160811b84161561499f577003b1cc971a9bb5b9867477440d6d1577506149926f1152aaa3bf81cb9fdb76eae12d029571856153eb565b61499c9190615470565b92505b600160801b8416156149e45770015bf0a8b1457695355fb8ac404e7a79e36149d76f2f16ac6c59de6f8d5d6f63c1482a7c86856153eb565b6149e19190615470565b92505b6001607f1b841615614a28576fd3094c70f034de4b96ff7d5b6f99fcd8614a1b6f4da2cbf1be5827f9eb3ad1aa9866ebb3856153eb565b614a259190615470565b92505b6001607e1b841615614a6c576fa45af1e1f40c333b3de1db4dd55f29a7614a5f6f63afbe7ab2082ba1a0ae5e4eb1b479dc856153eb565b614a699190615470565b92505b6001607d1b841615614ab0576f910b022db7ae67ce76b441c27035c6a1614aa36f70f5a893b608861e1f58934f97aea57d856153eb565b614aad9190615470565b92505b6001607c1b841615614af1576f88415abbe9a76bead8d00cf112e4d4a8614ae76f783eafef1c0a8f3978c7f81824d62ebf856153eb565b6125a79190615470565b5050919050565b6000614b4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bcd9092919063ffffffff16565b9050805160001480614b6e575080806020019051810190614b6e919061536d565b610f1a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a9a565b60606125a7848460008585600080866001600160a01b03168587604051614bf4919061565a565b60006040518083038185875af1925050503d8060008114614c31576040519150601f19603f3d011682016040523d82523d6000602084013e614c36565b606091505b5091509150614c4787838387614c52565b979650505050505050565b60608315614cc1578251600003614cba576001600160a01b0385163b614cba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a9a565b50816125a7565b6125a78383815115614cd65781518083602001fd5b8060405162461bcd60e51b8152600401610a9a9190615676565b6001600160a01b0381168114610c6457600080fd5b80356001600160801b038116811461167057600080fd5b60008060008060008060008060006101208a8c031215614d3b57600080fd5b8935614d4681614cf0565b985060208a0135614d5681614cf0565b975060408a01359650614d6b60608b01614d05565b9550614d7960808b01614d05565b945060a08a0135614d8981614cf0565b935060c08a0135614d9981614cf0565b925060e08a0135614da981614cf0565b809250506101008a013590509295985092959850929598565b600060208284031215614dd457600080fd5b8135613d7a81614cf0565b60008060408385031215614df257600080fd5b50508035926020909101359150565b60008083601f840112614e1357600080fd5b50813567ffffffffffffffff811115614e2b57600080fd5b6020830191508360208260051b8501011115614e4657600080fd5b9250929050565b60008060208385031215614e6057600080fd5b823567ffffffffffffffff811115614e7757600080fd5b614e8385828601614e01565b90969095509350505050565b600080600060608486031215614ea457600080fd5b8335614eaf81614cf0565b95602085013595506040909401359392505050565b60008060008060408587031215614eda57600080fd5b843567ffffffffffffffff80821115614ef257600080fd5b614efe88838901614e01565b90965094506020870135915080821115614f1757600080fd5b50614f2487828801614e01565b95989497509550505050565b8015158114610c6457600080fd5b600080600060408486031215614f5357600080fd5b8335614f5e81614f30565b9250602084013567ffffffffffffffff811115614f7a57600080fd5b614f8686828701614e01565b9497909650939450505050565b600060208284031215614fa557600080fd5b5035919050565b60008060408385031215614fbf57600080fd5b823591506020830135614fd181614cf0565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561501d5783516001600160a01b031683529284019291840191600101614ff8565b50909695505050505050565b600080600080600060a0868803121561504157600080fd5b853561504c81614cf0565b9450602086013561505c81614cf0565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561508d57600080fd5b823561509881614cf0565b91506020830135614fd181614cf0565b600080600080608085870312156150be57600080fd5b84356150c981614cf0565b935060208501356150d981614cf0565b93969395505050506040820135916060013590565b6000806040838503121561510157600080fd5b61510a83614d05565b915061511860208401614d05565b90509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561517957815180516001600160a01b039081168652878201511687860152850151858501526060909301929085019060010161513e565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816151c1576151c161519c565b506000190190565b6000828210156151db576151db61519c565b500390565b6000602082840312156151f257600080fd5b5051919050565b60008160001904831182151516156152135761521361519c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261523d5761523d615218565b500490565b600082198211156152555761525561519c565b500190565b60006020828403121561526c57600080fd5b815160ff81168114613d7a57600080fd5b600181815b808511156152b857816000190482111561529e5761529e61519c565b808516156152ab57918102915b93841c9390800290615282565b509250929050565b6000826152cf57506001610c92565b816152dc57506000610c92565b81600181146152f257600281146152fc57615318565b6001915050610c92565b60ff84111561530d5761530d61519c565b50506001821b610c92565b5060208310610133831016604e8410600b841016171561533b575081810a610c92565b615345838361527d565b80600019048211156153595761535961519c565b029392505050565b6000610c8f83836152c0565b60006020828403121561537f57600080fd5b8151613d7a81614f30565b634e487b7160e01b600052604160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160ff1b03818413828413808216868404861116156154115761541161519c565b600160ff1b60008712828116878305891216156154305761543061519c565b6000871292508782058712848416161561544c5761544c61519c565b878505871281841616156154625761546261519c565b505050929093029392505050565b60008261547f5761547f615218565b600160ff1b8214600019841416156154995761549961519c565b500590565b60005b838110156154b95781810151838201526020016154a1565b8381111561127f5750506000910152565b600081518084526154e281602086016020860161549e565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906125a7908301846154ca565b6001600160a01b038481168252831660208201526060604082018190526000906143de908301846154ca565b60008060006060848603121561555b57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016155865761558661519c565b5060010190565b60006020828403121561559f57600080fd5b8151613d7a81614cf0565b6000600160ff1b82016155bf576155bf61519c565b5060000390565b60008083128015600160ff1b8501841216156155e4576155e461519c565b6001600160ff1b03840183138116156155ff576155ff61519c565b50500390565b600080821280156001600160ff1b03849003851316156156275761562761519c565b600160ff1b83900384128116156156405761564061519c565b50500190565b60008261565557615655615218565b500790565b6000825161566c81846020870161549e565b9190910192915050565b602081526000610c8f60208301846154ca56fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e743235362909d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc6164644d61726b657428616464726573732c75696e743235362c75696e7432353629a2646970667358221220ed110145977e130d483d7dc8589f1413b6b7ec345f60460a7276ad6e885bdb7a64736f6c634300080d0033",
1625
+ "bytecode": "0x6101406040523480156200001257600080fd5b506040516200599e3803806200599e833981016040819052620000359162000180565b858585858585836000036200005d576040516302723dfb60e21b815260040160405180910390fd5b6001600160a01b0380871660a052851660c052608084905261012083905260e082905261010081905262000090620000a2565b505050505050505050505050620001dd565b600054610100900460ff16156200010f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000161576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200017b57600080fd5b919050565b60008060008060008060c087890312156200019a57600080fd5b620001a58762000163565b9550620001b56020880162000163565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160a05160c05160e051610100516101205161572b62000273600039600081816103c40152818161115e01528181611e1d01528181611e480152611e700152600081816109df01528181613101015261312a01526000818161054901526128a40152600081816107ff015261303d01526000818161042601526130770152600081816108540152613d56015261572b6000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639f6506ce116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063bc5dc4c311610192578063c4ae316811610161578063c4ae3168146107de578063c86d1a78146107e6578063cdaa21b7146107fa578063ce8536131461082157600080fd5b8063bc5dc4c3146107ae578063bd212c0e146107c1578063be26317e146107cb578063c3db3c36146107d457600080fd5b8063b4a0bdf3116101ce578063b4a0bdf31461070c578063b7f2d2581461071d578063b9eb69f614610745578063ba437c681461079b57600080fd5b80639f6506ce146106e3578063a15753dc146106ed578063b0772d0b146106f757600080fd5b80635fe3b567116102e4578063856c3aa4116102775780638da5cb5b116102465780638da5cb5b146106255780638e8f294b146106365780639198e515146106a15780639565d3d2146106b457600080fd5b8063856c3aa4146105e157806388bead73146105eb57806388d742c2146105ff57806389afcb441461061257600080fd5b80637dafcd89116102b35780637dafcd891461057b5780637dc0d1d01461058e5780637ef82070146105a257806380d45a2d146105ce57600080fd5b80635fe3b567146105305780636426b4a714610544578063715018a61461056b57806379ba50971461057357600080fd5b8063207add911161035c5780634e71d92d1161032b5780634e71d92d146104eb57806355d36c98146104f3578063594a67ee146105065780635c975abb1461051957600080fd5b8063207add91146104a857806324e6baf2146104bb57806337f23cd3146104ce578063487b0dfb146104e157600080fd5b80631b3f8c5e116103985780631b3f8c5e146104215780631b9ce575146104605780631bffac89146104745780631cb9a02a1461049557600080fd5b80630104db1b146103bf578063021544bd146103f95780630e32cb861461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614d1c565b610a01565b005b61040c61041c366004614dc2565b610c53565b6104487f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103f0565b61013754610448906001600160a01b031681565b6103e6610482366004614dc2565b6101406020526000908152604090205481565b6103e66104a3366004614ddf565b610c67565b61040c6104b6366004614ddf565b610c98565b61040c6104c9366004614e4d565b610d53565b61040c6104dc366004614dc2565b610f1f565b6103e66101395481565b61040c61112b565b61040c610501366004614e8f565b6111ba565b61040c610514366004614ec4565b611285565b60c95460ff165b60405190151581526020016103f0565b61013f54610448906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c6113fd565b61040c611411565b61040c610589366004614f3e565b611488565b61014254610448906001600160a01b031681565b610136546105b6906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105dc366004614f93565b611612565b6103e66101315481565b61013854610448906001600160a01b031681565b6103e661060d366004614dc2565b611659565b61040c610620366004614dc2565b611675565b6033546001600160a01b0316610448565b610677610644366004614dc2565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106af366004614dc2565b6116ac565b6105206106c2366004614fac565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b6106ff611870565b6040516103f09190614fdc565b6097546001600160a01b0316610448565b61073061072b366004615029565b6118d3565b604080519283526020830191909152016103f0565b61078061075336600461507a565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107a936600461507a565b611a30565b61040c6107bc3660046150a8565b611a44565b6103e661013c5481565b6103e660fb5481565b6103e661013d5481565b61040c611c7f565b61014154610448906001600160a01b031681565b6104487f000000000000000000000000000000000000000000000000000000000000000081565b610136546105b690600160801b90046001600160801b031681565b61040c61084a36600461507a565b611cc8565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e661088436600461507a565b611ce0565b6103e661012e5481565b6103e66101305481565b61040c6108ab3660046150ee565b611cf5565b6065546001600160a01b0316610448565b61040c6108cf366004614dc2565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614dc2565b611df9565b610932610913366004614dc2565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610448610957366004614dc2565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614dc2565b6101326020526000908152604090205481565b61040c6109a2366004614dc2565b611ea1565b6109ba6109b5366004614dc2565b611f12565b6040516103f09190615121565b6107306109d536600461507a565b612054565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b600054610100900460ff1615808015610a215750600054600160ff909116105b80610a3b5750303b158015610a3b575060005460ff166001145b610aa35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610ac6576000805461ff0019166101001790555b6001600160a01b038a16610aed5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038916610b145760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038316610b3b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038416610b625760405163e6c4247b60e01b815260040160405180910390fd5b610b6c8787612234565b6001600160801b03868116600160801b02908816176101365561013880546001600160a01b03808c166001600160a01b0319928316179092556101398a905561013780548d8416908316179055600061013b556101418054878416908316179055610142805492861692909116919091179055610be88561227a565b610bf06122b2565b610bf9826122e1565b610c01612383565b8015610c47576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b610c5b6123dd565b610c6481612437565b50565b61013654600090610c8f90849084906001600160801b0380821691600160801b9004166124f5565b90505b92915050565b610cd66040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e7432353629000000000000008152506125af565b61012e54821080610ce9575061012f5481105b15610d075760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610d4191815260200190565b60405180910390a46101305561013155565b61013d54600003610d775760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610d9b5760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610f1a576000838383818110610dba57610dba615186565b9050602002016020810190610dcf9190614dc2565b6001600160a01b038116600090815261012d602052604090205490915060ff16610e0c57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610e455750600101610d9e565b610135805460005b81811015610e9d576000838281548110610e6957610e69615186565b6000918252602090912001546001600160a01b03169050610e8a8582612649565b610e948582612725565b50600101610e4d565b5061013d60008154610eae906151b2565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610d9e565b505050565b6000610f2a82612802565b90506000610f37826128a0565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610f91575082155b15610ff3576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b4833981519152910160405180910390a2806020015115610fea57610fe5856128d9565b611124565b610fe585612931565b8215801561100057508051155b801561100b57508115155b15611052576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b483398151915291015b60405180910390a2611124565b8115801561105d5750825b801561106857508051155b156110aa576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b48339815191529101611045565b805180156110b55750825b15611124576110c3856128d9565b6001600160a01b038516600090815261013260205260408120549003611124576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b4833981519152910160405180910390a25b5050505050565b33600090815261013260205260408120549081900361115c5760405162c4e3d160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061118782426151c9565b10156111a65760405163beb98cab60e01b815260040160405180910390fd5b6111b1600033612b05565b610c6433612c16565b6111db6040518060600160405280602a815260200161568a602a91396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1661121957604051630ff2e4a960e31b815260040160405180910390fd5b611222846116ac565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a48281556001810182905561127f612d13565b50505050565b6112c36040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d298152506125af565b8281146112e35760405163251f56a160e21b815260040160405180910390fd5b60005b83811015611124574283838381811061130157611301615186565b9050602002013511156113275760405163b7d0949760e01b815260040160405180910390fd5b82828281811061133957611339615186565b90506020020135610132600087878581811061135757611357615186565b905060200201602081019061136c9190614dc2565b6001600160a01b0316815260208101919091526040016000205584848281811061139857611398615186565b90506020020160208101906113ad9190614dc2565b6001600160a01b03166000805160206156b48339815191528484848181106113d7576113d7615186565b905060200201356040516113ed91815260200190565b60405180910390a26001016112e6565b6114056123dd565b61140f6000612d47565b565b60655433906001600160a01b0316811461147f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a9a565b610c6481612d47565b6114be60405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b8152506125af565b82156115d35760005b8181101561127f57600061012d60008585858181106114e8576114e8615186565b90506020020160208101906114fd9190614dc2565b6001600160a01b031681526020810191909152604001600020805490915060ff16801561153157508054610100900460ff16155b1561156a5761156584848481811061154b5761154b615186565b90506020020160208101906115609190614dc2565b612d60565b6115ca565b61159b600185858581811061158157611581615186565b90506020020160208101906115969190614dc2565b612b05565b6115ca8484848181106115b0576115b0615186565b90506020020160208101906115c59190614dc2565b612c16565b506001016114c7565b60005b8181101561127f576115f5600084848481811061158157611581615186565b61160a8383838181106115b0576115b0615186565b6001016115d6565b6116506040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506125af565b610c64816122e1565b6000611663612e10565b61166d8233612e56565b90505b919050565b6116a36040518060400160405280600d81526020016c6275726e28616464726573732960981b8152506125af565b610c6481612931565b6001600160a01b038116600090815261013360205260409020600481015460ff166116ea57604051630ff2e4a960e31b815260040160405180910390fd5b60006116f583613039565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b15801561174157600080fd5b505af1158015611755573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa1580156117a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c691906151e0565b6001600160a01b03841660009081526101406020526040812054919250906117ee90836151c9565b90508060008190036118035750505050505050565b6001600160a01b03851660009081526101406020526040812084905560038701541561184d576003870154611840670de0b6b3a7640000846151f9565b61184a919061522e565b90505b808760020160008282546118619190615242565b90915550505050505050505050565b60606101358054806020026020016040519081016040528092919081815260200182805480156118c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118ab575b5050505050905090565b6001600160a01b038086166000818152610134602090815260408083209489168352938152838220600101549282526101339052918220600301548291829161191c91906151c9565b90506000611929856130fd565b9050600080600061193c848b8b8f613152565b925092509250600061194d8d613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae919061525a565b60ff1690506119be8160126151c9565b6119c990600a615361565b6119d390856151f9565b610136549094506000906119fe90879087906001600160801b0380821691600160801b9004166124f5565b9050611a0a8188615242565b9650611a1b8e8c8e8787868d61341c565b909f909e509c50505050505050505050505050565b6000611a3a612e10565b610c8f8383612e56565b611a656040518060600160405280602281526020016156d4602291396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611aa457604051630313b28560e01b815260040160405180910390fd5b604051638e8f294b60e01b81526001600160a01b03858116600483015260009190871690638e8f294b90602401602060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b12919061536d565b905080611b3257604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b6586613039565b6001600160a01b03808216600090815261013e60205260409020549192501615611ba25760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611c13612d13565b61013554611c2090613508565b856001600160a01b0316876001600160a01b03167f1322eaea77217179bf4ef6084dc2f48c897e0d5a6b8365213804360e4d8ba9a28787604051611c6e929190918252602082015260400190565b60405180910390a350505050505050565b611cad6040518060400160405280600d81526020016c746f67676c655061757365282960981b8152506125af565b60c95460ff1615611cc05761140f613539565b61140f612383565b611cd28282612649565b611cdc8282612725565b5050565b6000611ceb836116ac565b610c8f8383613572565b611d336040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e7431323829000000008152506125af565b611d3d8282612234565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611df057611de86101358281548110611dce57611dce615186565b6000918252602090912001546001600160a01b03166116ac565b600101611daf565b50610f1a612d13565b6001600160a01b03811660009081526101326020526040812054808203611e4257507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611e97577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611ea96123dd565b606580546001600160a01b0383166001600160a01b03199091168117909155611eda6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611f3457611f3461538a565b604051908082528060200260200182016040528015611f7f57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611f525790505b50925060005b8181101561204c576000838281548110611fa157611fa1615186565b60009182526020822001546001600160a01b03169150611fc18288611ce0565b6001600160a01b03808416600081815261013460209081526040808320948d168352938152908390205483516060810190945291835292935091810161200685613039565b6001600160a01b0316815260200161201e8385615242565b81525087858151811061203357612033615186565b6020026020010181905250836001019350505050611f85565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d91906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d91906151e0565b90506000670de0b6b3a76400006121b483856151f9565b6121be919061522e565b6001600160a01b03808b16600081815261013460209081526040808320948e16835293815283822060010154928252610133905291822060030154929350919061220f61220a8c612802565b6130fd565b9050600080612220838a888d613152565b9250925050611a1b8e878b85858a8a61341c565b806001600160801b0316826001600160801b031610158061225c57506001600160801b038216155b15611cdc57604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff166122a15760405162461bcd60e51b8152600401610a9a906153a0565b6122a9613609565b610c6481613638565b600054610100900460ff166122d95760405162461bcd60e51b8152600401610a9a906153a0565b61140f61365f565b60fb54811161233d5760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b6064820152608401610a9a565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa91015b60405180910390a15050565b61238b612e10565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123c03390565b6040516001600160a01b03909116815260200160405180910390a1565b6033546001600160a01b0316331461140f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a9a565b6001600160a01b03811661249b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401610a9a565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101612377565b6000841580612502575083155b1561250f575060006125a7565b83850361251d5750836125a7565b838510600081612536576125318688613692565b612540565b6125408787613692565b9050600061257b612550866136fa565b612559886136fa565b61256285613764565b61256c91906153eb565b6125769190615470565b61376f565b905082156125975761258d878261377a565b93505050506125a7565b6125a187826137ac565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906125e290339086906004016154f6565b602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612623919061536d565b905080611cdc57333083604051634a3fa29360e01b8152600401610a9a9392919061551a565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061268f57506001600160a01b038216600090815261012d602052604090205460ff16155b15612698575050565b6126a1816116ac565b6126ab8183613572565b6001600160a01b03808316600090815261013460209081526040808320938716835292905290812080549091906126e3908490615242565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff16158061276c57506001600160a01b038316600090815261012d602052604090205460ff16155b1561277657505050565b600061278283856137de565b6001600160a01b0380851660009081526101346020908152604080832093891683529290522060010154600384015491925082916127c091906151c9565b6127ca9190615242565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f9190615546565b925050915080826125a791906151c9565b60007f000000000000000000000000000000000000000000000000000000000000000082106128d157506001919050565b506000919050565b610135805460005b8181101561127f5760008382815481106128fd576128fd615186565b6000918252602090912001546001600160a01b0316905061291e8582612649565b6129288582612725565b506001016128e1565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261298e57604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b81811015612a675760008382815481106129b2576129b2615186565b6000918252602090912001546001600160a01b031690506129d38682612649565b6001600160a01b03808216600081815261013460209081526040808320948b1683529381528382206001015492825261013390529190912060030154612a1991906151c9565b6001600160a01b039182166000908152610133602090815260408083206003019390935561013481528282209389168252929092528120600180820183905560029091019190915501612996565b50826020015115612a8b5761012e60008154612a82906151b2565b90915550612aa0565b61012f60008154612a9b906151b2565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff19169055612acb84613b70565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff1615612b405760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff19909216919091176001178255612b775761012e60008154612b6e90615574565b90915550612b8c565b61012f60008154612b8790615574565b909155505b6101315461012e541180612ba557506101305461012f54115b15612bc35760405163e55fb50960e01b815260040160405180910390fd5b612bcc82613be4565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612c09911515815260200190565b60405180910390a2505050565b610135805460005b8181101561127f576000838281548110612c3a57612c3a615186565b6000918252602090912001546001600160a01b03169050612c5a816116ac565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612c9f82876137de565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612ce9908290615242565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612c1e565b61013b8054906000612d2483615574565b919050555061012f5461012e54612d3b9190615242565b61013c81905561013d55565b606580546001600160a01b0319169055610c6481613c22565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612d9890615574565b9091555061012f8054600090612dad906151b2565b909155506101315461012e541115612dd85760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60c95460ff161561140f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a9a565b600080612e638484611ce0565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612e979082615242565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612ee485613039565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906151e0565b831115612fce576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b505050505b612fe26001600160a01b0382168685613c74565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba8560405161302791815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361309b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166d919061558d565b60007f000000000000000000000000000000000000000000000000000000000000000082111561314e57507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d0919061558d565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa158015613221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324591906151e0565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a764000090819061327c908d6151f9565b613286919061522e565b61329090846151f9565b61329a919061522e565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a76400009081906132ce908e6151f9565b6132d8919061522e565b6132e290856151f9565b6132ec919061522e565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa15801561333d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336191906151e0565b90506000670de0b6b3a76400006133788c846151f9565b613382919061522e565b90506000670de0b6b3a76400006133998e856151f9565b6133a3919061522e565b90508382106133d357816000036133bb5760006133d0565b816133c6858e6151f9565b6133d0919061522e565b9b505b84811061340157806000036133e95760006133fe565b806133f4868f6151f9565b6133fe919061522e565b9c505b61340b8d8d615242565b9e9b9d505050505050505050505050565b60008082600003613432575060009050806134fc565b60008361343e8b613cc6565b61344890876151f9565b613452919061522e565b905060006134608789615242565b905080600003613478576000809350935050506134fc565b612710600080836134898c876151f9565b613493919061522e565b9150836134a08b876151f9565b6134aa919061522e565b90508c156134cc578c6134bd84846151f9565b6134c7919061522e565b6134cf565b60005b96508b156134f1578b6134e284836151f9565b6134ec919061522e565b6134f4565b60005b955050505050505b97509795505050505050565b60fb54811115610c645760fb5460405163792bfb1b60e11b8152600481019190915260248101829052604401610a9a565b613541613d81565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336123c0565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135da91906151c9565b6020830151909150670de0b6b3a76400006135f582846151f9565b6135ff919061522e565b9695505050505050565b600054610100900460ff166136305760405162461bcd60e51b8152600401610a9a906153a0565b61140f613dca565b600054610100900460ff16610c5b5760405162461bcd60e51b8152600401610a9a906153a0565b600054610100900460ff166136865760405162461bcd60e51b8152600401610a9a906153a0565b60c9805460ff19169055565b600061369d836136fa565b6136a6836136fa565b12156136cf576040516360c1ae3960e01b81526004810184905260248101839052604401610a9a565b6136d8826136fa565b6001607f1b6136e6856136fa565b6136f091906153eb565b610c8f9190615470565b60006001600160ff1b0382111561314e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610a9a565b600061166d82613dfa565b600061166d826143e7565b60008082121561379d57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136e6856136fa565b6000808212156137cf57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136e6856136fa565b6000806137ed61220a84612802565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa15801561383c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386091906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c691906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015613912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393691906151e0565b90506000670de0b6b3a764000061394d83856151f9565b613957919061522e565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d3919061558d565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b158015613a7d57600080fd5b505af1158015613a91573d6000803e3d6000fd5b505050506000613aa38887858e613152565b505090506000613ab28c613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b13919061525a565b60ff169050613b238160126151c9565b613b2e90600a615361565b613b3890836151f9565b61013654909250613b60908a9084906001600160801b0380821691600160801b9004166124f5565b9c9b505050505050505050505050565b61013c5415613b8e5761013c60008154613b89906151b2565b909155505b61013d5415801590613bc8575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610c645761013d60008154613bdd906151b2565b9091555050565b61013c5415610c645761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f1a908490614af8565b6101415460009081906001600160a01b031663a666642b613ce685613039565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4e91906151e0565b9050613d7a817f00000000000000000000000000000000000000000000000000000000000000006151f9565b9392505050565b60c95460ff1661140f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a9a565b600054610100900460ff16613df15760405162461bcd60e51b8152600401610a9a906153a0565b61140f33612d47565b60006001607f1b821315613e2457604051633ce23a3d60e11b815260048101839052602401610a9a565b60008213613e48576040516330ecaa3d60e21b815260048101839052602401610a9a565b6001607f1b8203613e5b57506000919050565b640733048c5a8213613e755761166d6101ff607c1b6155aa565b60008060006a01c8464f761647600000008513613ec357613e9a600160841b856155c6565b93506a01c8464f76164760000000613eb66001607f1b876153eb565b613ec09190615470565b94505b6cf1aaddd7742e900000000000008513613f1057613ee5600160831b856155c6565b93506cf1aaddd7742e90000000000000613f036001607f1b876153eb565b613f0d9190615470565b94505b6615fc21041027af603f1b8513613f5757613f2f600160821b856155c6565b93506615fc21041027af603f1b613f4a6001607f1b876153eb565b613f549190615470565b94505b660960aadc109e7b60461b8513613f9e57613f76600160811b856155c6565b9350660960aadc109e7b60461b613f916001607f1b876153eb565b613f9b9190615470565b94505b660454aaa8efe073604a1b8513613fe557613fbd600160801b856155c6565b9350660454aaa8efe073604a1b613fd86001607f1b876153eb565b613fe29190615470565b94505b6602f16ac6c59de7604c1b851361402c576140046001607f1b856155c6565b93506602f16ac6c59de7604c1b61401f6001607f1b876153eb565b6140299190615470565b94505b6609b4597e37cb05604b1b85136140735761404b6001607e1b856155c6565b93506609b4597e37cb05604b1b6140666001607f1b876153eb565b6140709190615470565b94505b6618ebef9eac820b604a1b85136140ba576140926001607d1b856155c6565b93506618ebef9eac820b604a1b6140ad6001607f1b876153eb565b6140b79190615470565b94505b6f70f5a893b608861e1f58934f97aea57d851361410d576140df6001607c1b856155c6565b93506f70f5a893b608861e1f58934f97aea57d6141006001607f1b876153eb565b61410a9190615470565b94505b61411b6001607f1b866155c6565b92508291506001607f1b61412f83806153eb565b6141399190615470565b9050600160801b61414a84826155c6565b61415490846153eb565b61415e9190615470565b6141689085615605565b93506001607f1b61417982846153eb565b6141839190615470565b9150600160811b6141a4846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6155c6565b6141ae90846153eb565b6141b89190615470565b6141c29085615605565b93506001607f1b6141d382846153eb565b6141dd9190615470565b9150600360801b6141fe846f999999999999999999999999999999996155c6565b61420890846153eb565b6142129190615470565b61421c9085615605565b93506001607f1b61422d82846153eb565b6142379190615470565b9150600160821b614258846f924924924924924924924924924924926155c6565b61426290846153eb565b61426c9190615470565b6142769085615605565b93506001607f1b61428782846153eb565b6142919190615470565b9150600560801b6142b2846f8e38e38e38e38e38e38e38e38e38e38e6155c6565b6142bc90846153eb565b6142c69190615470565b6142d09085615605565b93506001607f1b6142e182846153eb565b6142eb9190615470565b9150600360811b61430c846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b6155c6565b61431690846153eb565b6143209190615470565b61432a9085615605565b93506001607f1b61433b82846153eb565b6143459190615470565b9150600760801b614366846f89d89d89d89d89d89d89d89d89d89d896155c6565b61437090846153eb565b61437a9190615470565b6143849085615605565b93506001607f1b61439582846153eb565b61439f9190615470565b9150600160831b6143c0846f888888888888888888888888888888886155c6565b6143ca90846153eb565b6143d49190615470565b6143de9085615605565b95945050505050565b60006143f76101ff607c1b6155aa565b82121561440657506000919050565b8160000361441957506001607f1b919050565b600082131561443e57604051631086170d60e01b815260048101839052602401610a9a565b60008061444f6001607c1b85615646565b91508190506001607f1b61446382806153eb565b61446d9190615470565b9050614481816710e1b3be415a00006153eb565b61448b9084615605565b92506001607f1b61449c83836153eb565b6144a69190615470565b90506144ba816705a0913f6b1e00006153eb565b6144c49084615605565b92506001607f1b6144d583836153eb565b6144df9190615470565b90506144f381670168244fdac780006153eb565b6144fd9084615605565b92506001607f1b61450e83836153eb565b6145189190615470565b905061452b81664807432bc180006153eb565b6145359084615605565b92506001607f1b61454683836153eb565b6145509190615470565b905061456381660c0135dca040006153eb565b61456d9084615605565b92506001607f1b61457e83836153eb565b6145889190615470565b905061459b816601b707b1cdc0006153eb565b6145a59084615605565b92506001607f1b6145b683836153eb565b6145c09190615470565b90506145d2816536e0f639b8006153eb565b6145dc9084615605565b92506001607f1b6145ed83836153eb565b6145f79190615470565b905061460981650618fee9f8006153eb565b6146139084615605565b92506001607f1b61462483836153eb565b61462e9190615470565b905061463f81649c197dcc006153eb565b6146499084615605565b92506001607f1b61465a83836153eb565b6146649190615470565b905061467581640e30dce4006153eb565b61467f9084615605565b92506001607f1b61469083836153eb565b61469a9190615470565b90506146ab8164012ebd13006153eb565b6146b59084615605565b92506001607f1b6146c683836153eb565b6146d09190615470565b90506146e0816317499f006153eb565b6146ea9084615605565b92506001607f1b6146fb83836153eb565b6147059190615470565b9050614715816301a9d4806153eb565b61471f9084615605565b92506001607f1b61473083836153eb565b61473a9190615470565b905061474981621c63806153eb565b6147539084615605565b92506001607f1b61476483836153eb565b61476e9190615470565b905061477d816201c6386153eb565b6147879084615605565b92506001607f1b61479883836153eb565b6147a29190615470565b90506147b081611ab86153eb565b6147ba9084615605565b92506001607f1b6147cb83836153eb565b6147d59190615470565b90506147e38161017c6153eb565b6147ed9084615605565b92506001607f1b6147fe83836153eb565b6148089190615470565b90506148158160146153eb565b61481f9084615605565b92506001607f1b61483083836153eb565b61483a9190615470565b90506148478160016153eb565b6148519084615605565b92506001607f1b8261486b6721c3677c82b4000086615470565b6148759190615605565b61487f9190615605565b925061488a846155aa565b9350600160841b8416156148d0577243cbaf42a000812488fc5c220ad7b97bf6e99e6148c36cf1aaddd7742e56d32fb9f99744856153eb565b6148cd9190615470565b92505b600160831b841615614915577105d27a9f51c31b7c2f8038212a05747799916149086e0afe10820813d65dfe6a33c07f738f856153eb565b6149129190615470565b92505b600160821b84161561495a57701b4c902e273a58678d6d3bfdb93db96d0261494d6f02582ab704279e8efd15e0265855c47a856153eb565b6149579190615470565b92505b600160811b84161561499f577003b1cc971a9bb5b9867477440d6d1577506149926f1152aaa3bf81cb9fdb76eae12d029571856153eb565b61499c9190615470565b92505b600160801b8416156149e45770015bf0a8b1457695355fb8ac404e7a79e36149d76f2f16ac6c59de6f8d5d6f63c1482a7c86856153eb565b6149e19190615470565b92505b6001607f1b841615614a28576fd3094c70f034de4b96ff7d5b6f99fcd8614a1b6f4da2cbf1be5827f9eb3ad1aa9866ebb3856153eb565b614a259190615470565b92505b6001607e1b841615614a6c576fa45af1e1f40c333b3de1db4dd55f29a7614a5f6f63afbe7ab2082ba1a0ae5e4eb1b479dc856153eb565b614a699190615470565b92505b6001607d1b841615614ab0576f910b022db7ae67ce76b441c27035c6a1614aa36f70f5a893b608861e1f58934f97aea57d856153eb565b614aad9190615470565b92505b6001607c1b841615614af1576f88415abbe9a76bead8d00cf112e4d4a8614ae76f783eafef1c0a8f3978c7f81824d62ebf856153eb565b6125a79190615470565b5050919050565b6000614b4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bcd9092919063ffffffff16565b9050805160001480614b6e575080806020019051810190614b6e919061536d565b610f1a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a9a565b60606125a7848460008585600080866001600160a01b03168587604051614bf4919061565a565b60006040518083038185875af1925050503d8060008114614c31576040519150601f19603f3d011682016040523d82523d6000602084013e614c36565b606091505b5091509150614c4787838387614c52565b979650505050505050565b60608315614cc1578251600003614cba576001600160a01b0385163b614cba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a9a565b50816125a7565b6125a78383815115614cd65781518083602001fd5b8060405162461bcd60e51b8152600401610a9a9190615676565b6001600160a01b0381168114610c6457600080fd5b80356001600160801b038116811461167057600080fd5b60008060008060008060008060006101208a8c031215614d3b57600080fd5b8935614d4681614cf0565b985060208a0135614d5681614cf0565b975060408a01359650614d6b60608b01614d05565b9550614d7960808b01614d05565b945060a08a0135614d8981614cf0565b935060c08a0135614d9981614cf0565b925060e08a0135614da981614cf0565b809250506101008a013590509295985092959850929598565b600060208284031215614dd457600080fd5b8135613d7a81614cf0565b60008060408385031215614df257600080fd5b50508035926020909101359150565b60008083601f840112614e1357600080fd5b50813567ffffffffffffffff811115614e2b57600080fd5b6020830191508360208260051b8501011115614e4657600080fd5b9250929050565b60008060208385031215614e6057600080fd5b823567ffffffffffffffff811115614e7757600080fd5b614e8385828601614e01565b90969095509350505050565b600080600060608486031215614ea457600080fd5b8335614eaf81614cf0565b95602085013595506040909401359392505050565b60008060008060408587031215614eda57600080fd5b843567ffffffffffffffff80821115614ef257600080fd5b614efe88838901614e01565b90965094506020870135915080821115614f1757600080fd5b50614f2487828801614e01565b95989497509550505050565b8015158114610c6457600080fd5b600080600060408486031215614f5357600080fd5b8335614f5e81614f30565b9250602084013567ffffffffffffffff811115614f7a57600080fd5b614f8686828701614e01565b9497909650939450505050565b600060208284031215614fa557600080fd5b5035919050565b60008060408385031215614fbf57600080fd5b823591506020830135614fd181614cf0565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561501d5783516001600160a01b031683529284019291840191600101614ff8565b50909695505050505050565b600080600080600060a0868803121561504157600080fd5b853561504c81614cf0565b9450602086013561505c81614cf0565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561508d57600080fd5b823561509881614cf0565b91506020830135614fd181614cf0565b600080600080608085870312156150be57600080fd5b84356150c981614cf0565b935060208501356150d981614cf0565b93969395505050506040820135916060013590565b6000806040838503121561510157600080fd5b61510a83614d05565b915061511860208401614d05565b90509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561517957815180516001600160a01b039081168652878201511687860152850151858501526060909301929085019060010161513e565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816151c1576151c161519c565b506000190190565b6000828210156151db576151db61519c565b500390565b6000602082840312156151f257600080fd5b5051919050565b60008160001904831182151516156152135761521361519c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261523d5761523d615218565b500490565b600082198211156152555761525561519c565b500190565b60006020828403121561526c57600080fd5b815160ff81168114613d7a57600080fd5b600181815b808511156152b857816000190482111561529e5761529e61519c565b808516156152ab57918102915b93841c9390800290615282565b509250929050565b6000826152cf57506001610c92565b816152dc57506000610c92565b81600181146152f257600281146152fc57615318565b6001915050610c92565b60ff84111561530d5761530d61519c565b50506001821b610c92565b5060208310610133831016604e8410600b841016171561533b575081810a610c92565b615345838361527d565b80600019048211156153595761535961519c565b029392505050565b6000610c8f83836152c0565b60006020828403121561537f57600080fd5b8151613d7a81614f30565b634e487b7160e01b600052604160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160ff1b03818413828413808216868404861116156154115761541161519c565b600160ff1b60008712828116878305891216156154305761543061519c565b6000871292508782058712848416161561544c5761544c61519c565b878505871281841616156154625761546261519c565b505050929093029392505050565b60008261547f5761547f615218565b600160ff1b8214600019841416156154995761549961519c565b500590565b60005b838110156154b95781810151838201526020016154a1565b8381111561127f5750506000910152565b600081518084526154e281602086016020860161549e565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906125a7908301846154ca565b6001600160a01b038481168252831660208201526060604082018190526000906143de908301846154ca565b60008060006060848603121561555b57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016155865761558661519c565b5060010190565b60006020828403121561559f57600080fd5b8151613d7a81614cf0565b6000600160ff1b82016155bf576155bf61519c565b5060000390565b60008083128015600160ff1b8501841216156155e4576155e461519c565b6001600160ff1b03840183138116156155ff576155ff61519c565b50500390565b600080821280156001600160ff1b03849003851316156156275761562761519c565b600160ff1b83900384128116156156405761564061519c565b50500190565b60008261565557615655615218565b500790565b6000825161566c81846020870161549e565b9190910192915050565b602081526000610c8f60208301846154ca56fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e743235362909d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc6164644d61726b657428616464726573732c75696e743235362c75696e7432353629a2646970667358221220fe0204359336ec4dc41cfa631ba11a82f9e9d6bbdc8509b6310343120ae0895864736f6c634300080d0033",
1626
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c80639f6506ce116101f4578063cf329d161161011a578063e4676f37116100ad578063f2fde38b1161007c578063f2fde38b14610994578063f6ed2017146109a7578063fa6d5f18146109c7578063fe1006ad146109da57600080fd5b8063e4676f37146108f2578063e486033914610905578063ee6b13fc14610949578063ef36bbde1461097357600080fd5b8063da6ab4f8116100e9578063da6ab4f814610893578063e18f88221461089d578063e30c3978146108b0578063e335b28c146108c157600080fd5b8063cf329d161461083c578063d37db1d21461084f578063d65bd24114610876578063d88b9d2e1461088957600080fd5b8063bc5dc4c311610192578063c4ae316811610161578063c4ae3168146107de578063c86d1a78146107e6578063cdaa21b7146107fa578063ce8536131461082157600080fd5b8063bc5dc4c3146107ae578063bd212c0e146107c1578063be26317e146107cb578063c3db3c36146107d457600080fd5b8063b4a0bdf3116101ce578063b4a0bdf31461070c578063b7f2d2581461071d578063b9eb69f614610745578063ba437c681461079b57600080fd5b80639f6506ce146106e3578063a15753dc146106ed578063b0772d0b146106f757600080fd5b80635fe3b567116102e4578063856c3aa4116102775780638da5cb5b116102465780638da5cb5b146106255780638e8f294b146106365780639198e515146106a15780639565d3d2146106b457600080fd5b8063856c3aa4146105e157806388bead73146105eb57806388d742c2146105ff57806389afcb441461061257600080fd5b80637dafcd89116102b35780637dafcd891461057b5780637dc0d1d01461058e5780637ef82070146105a257806380d45a2d146105ce57600080fd5b80635fe3b567146105305780636426b4a714610544578063715018a61461056b57806379ba50971461057357600080fd5b8063207add911161035c5780634e71d92d1161032b5780634e71d92d146104eb57806355d36c98146104f3578063594a67ee146105065780635c975abb1461051957600080fd5b8063207add91146104a857806324e6baf2146104bb57806337f23cd3146104ce578063487b0dfb146104e157600080fd5b80631b3f8c5e116103985780631b3f8c5e146104215780631b9ce575146104605780631bffac89146104745780631cb9a02a1461049557600080fd5b80630104db1b146103bf578063021544bd146103f95780630e32cb861461040e575b600080fd5b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61040c610407366004614d1c565b610a01565b005b61040c61041c366004614dc2565b610c53565b6104487f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103f0565b61013754610448906001600160a01b031681565b6103e6610482366004614dc2565b6101406020526000908152604090205481565b6103e66104a3366004614ddf565b610c67565b61040c6104b6366004614ddf565b610c98565b61040c6104c9366004614e4d565b610d53565b61040c6104dc366004614dc2565b610f1f565b6103e66101395481565b61040c61112b565b61040c610501366004614e8f565b6111ba565b61040c610514366004614ec4565b611285565b60c95460ff165b60405190151581526020016103f0565b61013f54610448906001600160a01b031681565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61040c6113fd565b61040c611411565b61040c610589366004614f3e565b611488565b61014254610448906001600160a01b031681565b610136546105b6906001600160801b031681565b6040516001600160801b0390911681526020016103f0565b61040c6105dc366004614f93565b611612565b6103e66101315481565b61013854610448906001600160a01b031681565b6103e661060d366004614dc2565b611659565b61040c610620366004614dc2565b611675565b6033546001600160a01b0316610448565b610677610644366004614dc2565b61013360205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103f0565b61040c6106af366004614dc2565b6116ac565b6105206106c2366004614fac565b61013a60209081526000928352604080842090915290825290205460ff1681565b6103e661012f5481565b6103e661013b5481565b6106ff611870565b6040516103f09190614fdc565b6097546001600160a01b0316610448565b61073061072b366004615029565b6118d3565b604080519283526020830191909152016103f0565b61078061075336600461507a565b61013460209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103f0565b6103e66107a936600461507a565b611a30565b61040c6107bc3660046150a8565b611a44565b6103e661013c5481565b6103e660fb5481565b6103e661013d5481565b61040c611c7f565b61014154610448906001600160a01b031681565b6104487f000000000000000000000000000000000000000000000000000000000000000081565b610136546105b690600160801b90046001600160801b031681565b61040c61084a36600461507a565b611cc8565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103e661088436600461507a565b611ce0565b6103e661012e5481565b6103e66101305481565b61040c6108ab3660046150ee565b611cf5565b6065546001600160a01b0316610448565b61040c6108cf366004614dc2565b61014180546001600160a01b0319166001600160a01b0392909216919091179055565b6103e6610900366004614dc2565b611df9565b610932610913366004614dc2565b61012d6020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016103f0565b610448610957366004614dc2565b61013e602052600090815260409020546001600160a01b031681565b6103e6610981366004614dc2565b6101326020526000908152604090205481565b61040c6109a2366004614dc2565b611ea1565b6109ba6109b5366004614dc2565b611f12565b6040516103f09190615121565b6107306109d536600461507a565b612054565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b600054610100900460ff1615808015610a215750600054600160ff909116105b80610a3b5750303b158015610a3b575060005460ff166001145b610aa35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610ac6576000805461ff0019166101001790555b6001600160a01b038a16610aed5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038916610b145760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038316610b3b5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038416610b625760405163e6c4247b60e01b815260040160405180910390fd5b610b6c8787612234565b6001600160801b03868116600160801b02908816176101365561013880546001600160a01b03808c166001600160a01b0319928316179092556101398a905561013780548d8416908316179055600061013b556101418054878416908316179055610142805492861692909116919091179055610be88561227a565b610bf06122b2565b610bf9826122e1565b610c01612383565b8015610c47576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b610c5b6123dd565b610c6481612437565b50565b61013654600090610c8f90849084906001600160801b0380821691600160801b9004166124f5565b90505b92915050565b610cd66040518060400160405280601981526020017f7365744c696d69742875696e743235362c75696e7432353629000000000000008152506125af565b61012e54821080610ce9575061012f5481105b15610d075760405163e55fb50960e01b815260040160405180910390fd5b8161013054610131547f6c52f3e195bdc534883e903e0612c49261a466aacd492501870b0a0ac0b1835584604051610d4191815260200190565b60405180910390a46101305561013155565b61013d54600003610d775760405163071a45dd60e31b815260040160405180910390fd5b61013b54600003610d9b5760405163071a45dd60e31b815260040160405180910390fd5b60005b81811015610f1a576000838383818110610dba57610dba615186565b9050602002016020810190610dcf9190614dc2565b6001600160a01b038116600090815261012d602052604090205490915060ff16610e0c57604051633aeb927b60e11b815260040160405180910390fd5b61013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff1615610e455750600101610d9e565b610135805460005b81811015610e9d576000838281548110610e6957610e69615186565b6000918252602090912001546001600160a01b03169050610e8a8582612649565b610e948582612725565b50600101610e4d565b5061013d60008154610eae906151b2565b9091555061013b54600090815261013a602090815260408083206001600160a01b0387168085529252808320805460ff19166001908117909155905196019590917fa699df4aa8f89fc1f5408fe78ae114651f18b25ed1601680e4c70c15177d8b1b91a2505050610d9e565b505050565b6000610f2a82612802565b90506000610f37826128a0565b6001600160a01b0384166000908152610132602090815260408083205461012d83529281902081518083019092525460ff808216158015808552610100909304909116151593830193909352939450919290610f91575082155b15610ff3576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b4833981519152910160405180910390a2806020015115610fea57610fe5856128d9565b611124565b610fe585612931565b8215801561100057508051155b801561100b57508115155b15611052576001600160a01b038516600081815261013260209081526040808320839055519182526000805160206156b483398151915291015b60405180910390a2611124565b8115801561105d5750825b801561106857508051155b156110aa576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b48339815191529101611045565b805180156110b55750825b15611124576110c3856128d9565b6001600160a01b038516600090815261013260205260408120549003611124576001600160a01b03851660008181526101326020908152604091829020429081905591519182526000805160206156b4833981519152910160405180910390a25b5050505050565b33600090815261013260205260408120549081900361115c5760405162c4e3d160e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061118782426151c9565b10156111a65760405163beb98cab60e01b815260040160405180910390fd5b6111b1600033612b05565b610c6433612c16565b6111db6040518060600160405280602a815260200161568a602a91396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1661121957604051630ff2e4a960e31b815260040160405180910390fd5b611222846116ac565b6001810154815460408051868152602081018690526001600160a01b038816917f91e78a55b6df3a0eac1c12a64572a8c0faced385bafba688817f5ce6daa33537910160405180910390a48281556001810182905561127f612d13565b50505050565b6112c36040518060400160405280602081526020017f7365745374616b6564417428616464726573735b5d2c75696e743235365b5d298152506125af565b8281146112e35760405163251f56a160e21b815260040160405180910390fd5b60005b83811015611124574283838381811061130157611301615186565b9050602002013511156113275760405163b7d0949760e01b815260040160405180910390fd5b82828281811061133957611339615186565b90506020020135610132600087878581811061135757611357615186565b905060200201602081019061136c9190614dc2565b6001600160a01b0316815260208101919091526040016000205584848281811061139857611398615186565b90506020020160208101906113ad9190614dc2565b6001600160a01b03166000805160206156b48339815191528484848181106113d7576113d7615186565b905060200201356040516113ed91815260200190565b60405180910390a26001016112e6565b6114056123dd565b61140f6000612d47565b565b60655433906001600160a01b0316811461147f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a9a565b610c6481612d47565b6114be60405180604001604052806015815260200174697373756528626f6f6c2c616464726573735b5d2960581b8152506125af565b82156115d35760005b8181101561127f57600061012d60008585858181106114e8576114e8615186565b90506020020160208101906114fd9190614dc2565b6001600160a01b031681526020810191909152604001600020805490915060ff16801561153157508054610100900460ff16155b1561156a5761156584848481811061154b5761154b615186565b90506020020160208101906115609190614dc2565b612d60565b6115ca565b61159b600185858581811061158157611581615186565b90506020020160208101906115969190614dc2565b612b05565b6115ca8484848181106115b0576115b0615186565b90506020020160208101906115c59190614dc2565b612c16565b506001016114c7565b60005b8181101561127f576115f5600084848481811061158157611581615186565b61160a8383838181106115b0576115b0615186565b6001016115d6565b6116506040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506125af565b610c64816122e1565b6000611663612e10565b61166d8233612e56565b90505b919050565b6116a36040518060400160405280600d81526020016c6275726e28616464726573732960981b8152506125af565b610c6481612931565b6001600160a01b038116600090815261013360205260409020600481015460ff166116ea57604051630ff2e4a960e31b815260040160405180910390fd5b60006116f583613039565b61014154604051638aadf79960e01b81526001600160a01b0380841660048301529293509116908190638aadf79990602401600060405180830381600087803b15801561174157600080fd5b505af1158015611755573d6000803e3d6000fd5b505060405163fa7781ff60e01b81526001600160a01b038581166004830152600093508416915063fa7781ff90602401602060405180830381865afa1580156117a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c691906151e0565b6001600160a01b03841660009081526101406020526040812054919250906117ee90836151c9565b90508060008190036118035750505050505050565b6001600160a01b03851660009081526101406020526040812084905560038701541561184d576003870154611840670de0b6b3a7640000846151f9565b61184a919061522e565b90505b808760020160008282546118619190615242565b90915550505050505050505050565b60606101358054806020026020016040519081016040528092919081815260200182805480156118c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118ab575b5050505050905090565b6001600160a01b038086166000818152610134602090815260408083209489168352938152838220600101549282526101339052918220600301548291829161191c91906151c9565b90506000611929856130fd565b9050600080600061193c848b8b8f613152565b925092509250600061194d8d613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae919061525a565b60ff1690506119be8160126151c9565b6119c990600a615361565b6119d390856151f9565b610136549094506000906119fe90879087906001600160801b0380821691600160801b9004166124f5565b9050611a0a8188615242565b9650611a1b8e8c8e8787868d61341c565b909f909e509c50505050505050505050505050565b6000611a3a612e10565b610c8f8383612e56565b611a656040518060600160405280602281526020016156d4602291396125af565b6001600160a01b038316600090815261013360205260409020600481015460ff1615611aa457604051630313b28560e01b815260040160405180910390fd5b604051638e8f294b60e01b81526001600160a01b03858116600483015260009190871690638e8f294b90602401602060405180830381865afa158015611aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b12919061536d565b905080611b3257604051633d21810360e21b815260040160405180910390fd5b60006002830181905584835560018084018590556003840182905560048401805460ff19169091179055611b6586613039565b6001600160a01b03808216600090815261013e60205260409020549192501615611ba25760405163dc0d0aab60e01b815260040160405180910390fd5b6001600160a01b03808216600090815261013e6020526040812080549289166001600160a01b03199384168117909155610135805460018101825592527fdf37d27e88e3bd0b85262482997e409a463f5be0ebb19232abf994dd8474090d9091018054909216179055611c13612d13565b61013554611c2090613508565b856001600160a01b0316876001600160a01b03167f1322eaea77217179bf4ef6084dc2f48c897e0d5a6b8365213804360e4d8ba9a28787604051611c6e929190918252602082015260400190565b60405180910390a350505050505050565b611cad6040518060400160405280600d81526020016c746f67676c655061757365282960981b8152506125af565b60c95460ff1615611cc05761140f613539565b61140f612383565b611cd28282612649565b611cdc8282612725565b5050565b6000611ceb836116ac565b610c8f8383613572565b611d336040518060400160405280601c81526020017f757064617465416c7068612875696e743132382c75696e7431323829000000008152506125af565b611d3d8282612234565b610136546040516001600160801b03838116825284811692600160801b81048216929116907f9122c3fdea272423a0586803b53902139919baf05be731f04724ef8f363d378d9060200160405180910390a46001600160801b03818116600160801b0290831617610136556101355460005b81811015611df057611de86101358281548110611dce57611dce615186565b6000918252602090912001546001600160a01b03166116ac565b600101611daf565b50610f1a612d13565b6001600160a01b03811660009081526101326020526040812054808203611e4257507f000000000000000000000000000000000000000000000000000000000000000092915050565b428190037f0000000000000000000000000000000000000000000000000000000000000000811015611e97577f0000000000000000000000000000000000000000000000000000000000000000039392505050565b5060009392505050565b611ea96123dd565b606580546001600160a01b0383166001600160a01b03199091168117909155611eda6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6101358054606091908067ffffffffffffffff811115611f3457611f3461538a565b604051908082528060200260200182016040528015611f7f57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611f525790505b50925060005b8181101561204c576000838281548110611fa157611fa1615186565b60009182526020822001546001600160a01b03169150611fc18288611ce0565b6001600160a01b03808416600081815261013460209081526040808320948d168352938152908390205483516060810190945291835292935091810161200685613039565b6001600160a01b0316815260200161201e8385615242565b81525087858151811061203357612033615186565b6020026020010181905250836001019350505050611f85565b505050919050565b6040516395dd919360e01b81526001600160a01b0382811660048301526000918291859183918316906395dd919390602401602060405180830381865afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d91906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d91906151e0565b90506000670de0b6b3a76400006121b483856151f9565b6121be919061522e565b6001600160a01b03808b16600081815261013460209081526040808320948e16835293815283822060010154928252610133905291822060030154929350919061220f61220a8c612802565b6130fd565b9050600080612220838a888d613152565b9250925050611a1b8e878b85858a8a61341c565b806001600160801b0316826001600160801b031610158061225c57506001600160801b038216155b15611cdc57604051630381eb6d60e61b815260040160405180910390fd5b600054610100900460ff166122a15760405162461bcd60e51b8152600401610a9a906153a0565b6122a9613609565b610c6481613638565b600054610100900460ff166122d95760405162461bcd60e51b8152600401610a9a906153a0565b61140f61365f565b60fb54811161233d5760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b6064820152608401610a9a565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa91015b60405180910390a15050565b61238b612e10565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123c03390565b6040516001600160a01b03909116815260200160405180910390a1565b6033546001600160a01b0316331461140f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a9a565b6001600160a01b03811661249b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608401610a9a565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101612377565b6000841580612502575083155b1561250f575060006125a7565b83850361251d5750836125a7565b838510600081612536576125318688613692565b612540565b6125408787613692565b9050600061257b612550866136fa565b612559886136fa565b61256285613764565b61256c91906153eb565b6125769190615470565b61376f565b905082156125975761258d878261377a565b93505050506125a7565b6125a187826137ac565b93505050505b949350505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906125e290339086906004016154f6565b602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612623919061536d565b905080611cdc57333083604051634a3fa29360e01b8152600401610a9a9392919061551a565b6001600160a01b0381166000908152610133602052604090206004015460ff16158061268f57506001600160a01b038216600090815261012d602052604090205460ff16155b15612698575050565b6126a1816116ac565b6126ab8183613572565b6001600160a01b03808316600090815261013460209081526040808320938716835292905290812080549091906126e3908490615242565b90915550506001600160a01b03908116600090815261013360209081526040808320600290810154610134845282852096909516845294909152902090910155565b6001600160a01b038116600090815261013360205260409020600481015460ff16158061276c57506001600160a01b038316600090815261012d602052604090205460ff16155b1561277657505050565b600061278283856137de565b6001600160a01b0380851660009081526101346020908152604080832093891683529290522060010154600384015491925082916127c091906151c9565b6127ca9190615242565b6003909201919091556001600160a01b0391821660009081526101346020908152604080832095909416825293909352912060010155565b6101375461013854610139546040516398e1b31b60e01b81526001600160a01b03928316600482015260248101919091528382166044820152600092839283929116906398e1b31b90606401606060405180830381865afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f9190615546565b925050915080826125a791906151c9565b60007f000000000000000000000000000000000000000000000000000000000000000082106128d157506001919050565b506000919050565b610135805460005b8181101561127f5760008382815481106128fd576128fd615186565b6000918252602090912001546001600160a01b0316905061291e8582612649565b6129288582612725565b506001016128e1565b6001600160a01b038116600090815261012d602090815260409182902082518084019093525460ff80821615158085526101009092041615159183019190915261298e57604051633aeb927b60e11b815260040160405180910390fd5b610135805460005b81811015612a675760008382815481106129b2576129b2615186565b6000918252602090912001546001600160a01b031690506129d38682612649565b6001600160a01b03808216600081815261013460209081526040808320948b1683529381528382206001015492825261013390529190912060030154612a1991906151c9565b6001600160a01b039182166000908152610133602090815260408083206003019390935561013481528282209389168252929092528120600180820183905560029091019190915501612996565b50826020015115612a8b5761012e60008154612a82906151b2565b90915550612aa0565b61012f60008154612a9b906151b2565b909155505b6001600160a01b038416600090815261012d60205260409020805461ffff19169055612acb84613b70565b6040516001600160a01b038516907fe22de1457cb61fb61b60176bc4235a9abd19466126b46692bc14fc573f09924990600090a250505050565b6001600160a01b038116600090815261012d60205260409020805460ff1615612b405760405162c4e3d160e01b815260040160405180910390fd5b8054831580156101000261ffff19909216919091176001178255612b775761012e60008154612b6e90615574565b90915550612b8c565b61012f60008154612b8790615574565b909155505b6101315461012e541180612ba557506101305461012f54115b15612bc35760405163e55fb50960e01b815260040160405180910390fd5b612bcc82613be4565b816001600160a01b03167fdd032f28700d4e4b1719b8fa26918a7d68608b4e36def571ce5fe7a3ecd69f4584604051612c09911515815260200190565b60405180910390a2505050565b610135805460005b8181101561127f576000838281548110612c3a57612c3a615186565b6000918252602090912001546001600160a01b03169050612c5a816116ac565b6001600160a01b038082166000908152610133602090815260408083206002908101546101348452828520958b1685529490925282200191909155612c9f82876137de565b6001600160a01b03808416600081815261013460209081526040808320948c1683529381528382206001018590559181526101339091522060030154909150612ce9908290615242565b6001600160a01b039092166000908152610133602052604090206003019190915550600101612c1e565b61013b8054906000612d2483615574565b919050555061012f5461012e54612d3b9190615242565b61013c81905561013d55565b606580546001600160a01b0319169055610c6481613c22565b6001600160a01b038116600090815261012d60205260408120805461ff00191661010017815561012e805491929091612d9890615574565b9091555061012f8054600090612dad906151b2565b909155506101315461012e541115612dd85760405163e55fb50960e01b815260040160405180910390fd5b6040516001600160a01b038316907f5272e69bcef8da96614ac4a5d1e95ca02c35ea627bf7ecf389ec88d8d78b86bb90600090a25050565b60c95460ff161561140f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a9a565b600080612e638484611ce0565b6001600160a01b0380861660009081526101346020908152604080832093881683529290522054909150612e979082615242565b6001600160a01b038581166000908152610133602090815260408083206002908101546101348452828520958a1685529490925282209081019290925590819055909150612ee485613039565b6040516370a0823160e01b815230600482015290915081906001600160a01b038216906370a0823190602401602060405180830381865afa158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906151e0565b831115612fce576001600160a01b03828116600090815261014060205260408082209190915561014154905163192e7a7b60e01b8152838316600482015291169063192e7a7b90602401600060405180830381600087803b158015612fb557600080fd5b505af1158015612fc9573d6000803e3d6000fd5b505050505b612fe26001600160a01b0382168685613c74565b856001600160a01b0316856001600160a01b03167fc7edf5cfe443c04a10a60ff6084c847114348c55b257a01d62700326219adbba8560405161302791815260200190565b60405180910390a35090949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361309b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166d919061558d565b60007f000000000000000000000000000000000000000000000000000000000000000082111561314e57507f0000000000000000000000000000000000000000000000000000000000000000919050565b5090565b60008060008061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d0919061558d565b610142546040516341976e0960e01b81526001600160a01b038084166004830152929350600092909116906341976e0990602401602060405180830381865afa158015613221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324591906151e0565b6001600160a01b0387166000908152610133602052604081206001015491925090670de0b6b3a764000090819061327c908d6151f9565b613286919061522e565b61329090846151f9565b61329a919061522e565b6001600160a01b0388166000908152610133602052604081205491925090670de0b6b3a76400009081906132ce908e6151f9565b6132d8919061522e565b6132e290856151f9565b6132ec919061522e565b6101425460405163fc57d4df60e01b81526001600160a01b038b811660048301529293506000929091169063fc57d4df90602401602060405180830381865afa15801561333d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336191906151e0565b90506000670de0b6b3a76400006133788c846151f9565b613382919061522e565b90506000670de0b6b3a76400006133998e856151f9565b6133a3919061522e565b90508382106133d357816000036133bb5760006133d0565b816133c6858e6151f9565b6133d0919061522e565b9b505b84811061340157806000036133e95760006133fe565b806133f4868f6151f9565b6133fe919061522e565b9c505b61340b8d8d615242565b9e9b9d505050505050505050505050565b60008082600003613432575060009050806134fc565b60008361343e8b613cc6565b61344890876151f9565b613452919061522e565b905060006134608789615242565b905080600003613478576000809350935050506134fc565b612710600080836134898c876151f9565b613493919061522e565b9150836134a08b876151f9565b6134aa919061522e565b90508c156134cc578c6134bd84846151f9565b6134c7919061522e565b6134cf565b60005b96508b156134f1578b6134e284836151f9565b6134ec919061522e565b6134f4565b60005b955050505050505b97509795505050505050565b60fb54811115610c645760fb5460405163792bfb1b60e11b8152600481019190915260248101829052604401610a9a565b613541613d81565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336123c0565b6001600160a01b0380831660008181526101346020908152604080832094861683529381528382208451606081018652815481526001820154818401526002918201548187018190529484526101339092529382209093015490929183916135da91906151c9565b6020830151909150670de0b6b3a76400006135f582846151f9565b6135ff919061522e565b9695505050505050565b600054610100900460ff166136305760405162461bcd60e51b8152600401610a9a906153a0565b61140f613dca565b600054610100900460ff16610c5b5760405162461bcd60e51b8152600401610a9a906153a0565b600054610100900460ff166136865760405162461bcd60e51b8152600401610a9a906153a0565b60c9805460ff19169055565b600061369d836136fa565b6136a6836136fa565b12156136cf576040516360c1ae3960e01b81526004810184905260248101839052604401610a9a565b6136d8826136fa565b6001607f1b6136e6856136fa565b6136f091906153eb565b610c8f9190615470565b60006001600160ff1b0382111561314e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610a9a565b600061166d82613dfa565b600061166d826143e7565b60008082121561379d57604051639603648160e01b815260040160405180910390fd5b6001607f1b826136e6856136fa565b6000808212156137cf57604051639603648160e01b815260040160405180910390fd5b816001607f1b6136e6856136fa565b6000806137ed61220a84612802565b6040516395dd919360e01b81526001600160a01b0385811660048301529192508591600091908316906395dd919390602401602060405180830381865afa15801561383c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061386091906151e0565b90506000826001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c691906151e0565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918516906370a0823190602401602060405180830381865afa158015613912573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393691906151e0565b90506000670de0b6b3a764000061394d83856151f9565b613957919061522e565b9050600061013760009054906101000a90046001600160a01b03166001600160a01b031663358ae0366040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d3919061558d565b6101425460405163b62cad6960e01b81526001600160a01b03808416600483015292935091169063b62cad6990602401600060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b5050610142546040516396e85ced60e01b81526001600160a01b038e8116600483015290911692506396e85ced9150602401600060405180830381600087803b158015613a7d57600080fd5b505af1158015613a91573d6000803e3d6000fd5b505050506000613aa38887858e613152565b505090506000613ab28c613039565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b13919061525a565b60ff169050613b238160126151c9565b613b2e90600a615361565b613b3890836151f9565b61013654909250613b60908a9084906001600160801b0380821691600160801b9004166124f5565b9c9b505050505050505050505050565b61013c5415613b8e5761013c60008154613b89906151b2565b909155505b61013d5415801590613bc8575061013b54600090815261013a602090815260408083206001600160a01b038516845290915290205460ff16155b15610c645761013d60008154613bdd906151b2565b9091555050565b61013c5415610c645761013b54600090815261013a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f1a908490614af8565b6101415460009081906001600160a01b031663a666642b613ce685613039565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015613d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d4e91906151e0565b9050613d7a817f00000000000000000000000000000000000000000000000000000000000000006151f9565b9392505050565b60c95460ff1661140f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a9a565b600054610100900460ff16613df15760405162461bcd60e51b8152600401610a9a906153a0565b61140f33612d47565b60006001607f1b821315613e2457604051633ce23a3d60e11b815260048101839052602401610a9a565b60008213613e48576040516330ecaa3d60e21b815260048101839052602401610a9a565b6001607f1b8203613e5b57506000919050565b640733048c5a8213613e755761166d6101ff607c1b6155aa565b60008060006a01c8464f761647600000008513613ec357613e9a600160841b856155c6565b93506a01c8464f76164760000000613eb66001607f1b876153eb565b613ec09190615470565b94505b6cf1aaddd7742e900000000000008513613f1057613ee5600160831b856155c6565b93506cf1aaddd7742e90000000000000613f036001607f1b876153eb565b613f0d9190615470565b94505b6615fc21041027af603f1b8513613f5757613f2f600160821b856155c6565b93506615fc21041027af603f1b613f4a6001607f1b876153eb565b613f549190615470565b94505b660960aadc109e7b60461b8513613f9e57613f76600160811b856155c6565b9350660960aadc109e7b60461b613f916001607f1b876153eb565b613f9b9190615470565b94505b660454aaa8efe073604a1b8513613fe557613fbd600160801b856155c6565b9350660454aaa8efe073604a1b613fd86001607f1b876153eb565b613fe29190615470565b94505b6602f16ac6c59de7604c1b851361402c576140046001607f1b856155c6565b93506602f16ac6c59de7604c1b61401f6001607f1b876153eb565b6140299190615470565b94505b6609b4597e37cb05604b1b85136140735761404b6001607e1b856155c6565b93506609b4597e37cb05604b1b6140666001607f1b876153eb565b6140709190615470565b94505b6618ebef9eac820b604a1b85136140ba576140926001607d1b856155c6565b93506618ebef9eac820b604a1b6140ad6001607f1b876153eb565b6140b79190615470565b94505b6f70f5a893b608861e1f58934f97aea57d851361410d576140df6001607c1b856155c6565b93506f70f5a893b608861e1f58934f97aea57d6141006001607f1b876153eb565b61410a9190615470565b94505b61411b6001607f1b866155c6565b92508291506001607f1b61412f83806153eb565b6141399190615470565b9050600160801b61414a84826155c6565b61415490846153eb565b61415e9190615470565b6141689085615605565b93506001607f1b61417982846153eb565b6141839190615470565b9150600160811b6141a4846faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa6155c6565b6141ae90846153eb565b6141b89190615470565b6141c29085615605565b93506001607f1b6141d382846153eb565b6141dd9190615470565b9150600360801b6141fe846f999999999999999999999999999999996155c6565b61420890846153eb565b6142129190615470565b61421c9085615605565b93506001607f1b61422d82846153eb565b6142379190615470565b9150600160821b614258846f924924924924924924924924924924926155c6565b61426290846153eb565b61426c9190615470565b6142769085615605565b93506001607f1b61428782846153eb565b6142919190615470565b9150600560801b6142b2846f8e38e38e38e38e38e38e38e38e38e38e6155c6565b6142bc90846153eb565b6142c69190615470565b6142d09085615605565b93506001607f1b6142e182846153eb565b6142eb9190615470565b9150600360811b61430c846f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b6155c6565b61431690846153eb565b6143209190615470565b61432a9085615605565b93506001607f1b61433b82846153eb565b6143459190615470565b9150600760801b614366846f89d89d89d89d89d89d89d89d89d89d896155c6565b61437090846153eb565b61437a9190615470565b6143849085615605565b93506001607f1b61439582846153eb565b61439f9190615470565b9150600160831b6143c0846f888888888888888888888888888888886155c6565b6143ca90846153eb565b6143d49190615470565b6143de9085615605565b95945050505050565b60006143f76101ff607c1b6155aa565b82121561440657506000919050565b8160000361441957506001607f1b919050565b600082131561443e57604051631086170d60e01b815260048101839052602401610a9a565b60008061444f6001607c1b85615646565b91508190506001607f1b61446382806153eb565b61446d9190615470565b9050614481816710e1b3be415a00006153eb565b61448b9084615605565b92506001607f1b61449c83836153eb565b6144a69190615470565b90506144ba816705a0913f6b1e00006153eb565b6144c49084615605565b92506001607f1b6144d583836153eb565b6144df9190615470565b90506144f381670168244fdac780006153eb565b6144fd9084615605565b92506001607f1b61450e83836153eb565b6145189190615470565b905061452b81664807432bc180006153eb565b6145359084615605565b92506001607f1b61454683836153eb565b6145509190615470565b905061456381660c0135dca040006153eb565b61456d9084615605565b92506001607f1b61457e83836153eb565b6145889190615470565b905061459b816601b707b1cdc0006153eb565b6145a59084615605565b92506001607f1b6145b683836153eb565b6145c09190615470565b90506145d2816536e0f639b8006153eb565b6145dc9084615605565b92506001607f1b6145ed83836153eb565b6145f79190615470565b905061460981650618fee9f8006153eb565b6146139084615605565b92506001607f1b61462483836153eb565b61462e9190615470565b905061463f81649c197dcc006153eb565b6146499084615605565b92506001607f1b61465a83836153eb565b6146649190615470565b905061467581640e30dce4006153eb565b61467f9084615605565b92506001607f1b61469083836153eb565b61469a9190615470565b90506146ab8164012ebd13006153eb565b6146b59084615605565b92506001607f1b6146c683836153eb565b6146d09190615470565b90506146e0816317499f006153eb565b6146ea9084615605565b92506001607f1b6146fb83836153eb565b6147059190615470565b9050614715816301a9d4806153eb565b61471f9084615605565b92506001607f1b61473083836153eb565b61473a9190615470565b905061474981621c63806153eb565b6147539084615605565b92506001607f1b61476483836153eb565b61476e9190615470565b905061477d816201c6386153eb565b6147879084615605565b92506001607f1b61479883836153eb565b6147a29190615470565b90506147b081611ab86153eb565b6147ba9084615605565b92506001607f1b6147cb83836153eb565b6147d59190615470565b90506147e38161017c6153eb565b6147ed9084615605565b92506001607f1b6147fe83836153eb565b6148089190615470565b90506148158160146153eb565b61481f9084615605565b92506001607f1b61483083836153eb565b61483a9190615470565b90506148478160016153eb565b6148519084615605565b92506001607f1b8261486b6721c3677c82b4000086615470565b6148759190615605565b61487f9190615605565b925061488a846155aa565b9350600160841b8416156148d0577243cbaf42a000812488fc5c220ad7b97bf6e99e6148c36cf1aaddd7742e56d32fb9f99744856153eb565b6148cd9190615470565b92505b600160831b841615614915577105d27a9f51c31b7c2f8038212a05747799916149086e0afe10820813d65dfe6a33c07f738f856153eb565b6149129190615470565b92505b600160821b84161561495a57701b4c902e273a58678d6d3bfdb93db96d0261494d6f02582ab704279e8efd15e0265855c47a856153eb565b6149579190615470565b92505b600160811b84161561499f577003b1cc971a9bb5b9867477440d6d1577506149926f1152aaa3bf81cb9fdb76eae12d029571856153eb565b61499c9190615470565b92505b600160801b8416156149e45770015bf0a8b1457695355fb8ac404e7a79e36149d76f2f16ac6c59de6f8d5d6f63c1482a7c86856153eb565b6149e19190615470565b92505b6001607f1b841615614a28576fd3094c70f034de4b96ff7d5b6f99fcd8614a1b6f4da2cbf1be5827f9eb3ad1aa9866ebb3856153eb565b614a259190615470565b92505b6001607e1b841615614a6c576fa45af1e1f40c333b3de1db4dd55f29a7614a5f6f63afbe7ab2082ba1a0ae5e4eb1b479dc856153eb565b614a699190615470565b92505b6001607d1b841615614ab0576f910b022db7ae67ce76b441c27035c6a1614aa36f70f5a893b608861e1f58934f97aea57d856153eb565b614aad9190615470565b92505b6001607c1b841615614af1576f88415abbe9a76bead8d00cf112e4d4a8614ae76f783eafef1c0a8f3978c7f81824d62ebf856153eb565b6125a79190615470565b5050919050565b6000614b4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bcd9092919063ffffffff16565b9050805160001480614b6e575080806020019051810190614b6e919061536d565b610f1a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a9a565b60606125a7848460008585600080866001600160a01b03168587604051614bf4919061565a565b60006040518083038185875af1925050503d8060008114614c31576040519150601f19603f3d011682016040523d82523d6000602084013e614c36565b606091505b5091509150614c4787838387614c52565b979650505050505050565b60608315614cc1578251600003614cba576001600160a01b0385163b614cba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a9a565b50816125a7565b6125a78383815115614cd65781518083602001fd5b8060405162461bcd60e51b8152600401610a9a9190615676565b6001600160a01b0381168114610c6457600080fd5b80356001600160801b038116811461167057600080fd5b60008060008060008060008060006101208a8c031215614d3b57600080fd5b8935614d4681614cf0565b985060208a0135614d5681614cf0565b975060408a01359650614d6b60608b01614d05565b9550614d7960808b01614d05565b945060a08a0135614d8981614cf0565b935060c08a0135614d9981614cf0565b925060e08a0135614da981614cf0565b809250506101008a013590509295985092959850929598565b600060208284031215614dd457600080fd5b8135613d7a81614cf0565b60008060408385031215614df257600080fd5b50508035926020909101359150565b60008083601f840112614e1357600080fd5b50813567ffffffffffffffff811115614e2b57600080fd5b6020830191508360208260051b8501011115614e4657600080fd5b9250929050565b60008060208385031215614e6057600080fd5b823567ffffffffffffffff811115614e7757600080fd5b614e8385828601614e01565b90969095509350505050565b600080600060608486031215614ea457600080fd5b8335614eaf81614cf0565b95602085013595506040909401359392505050565b60008060008060408587031215614eda57600080fd5b843567ffffffffffffffff80821115614ef257600080fd5b614efe88838901614e01565b90965094506020870135915080821115614f1757600080fd5b50614f2487828801614e01565b95989497509550505050565b8015158114610c6457600080fd5b600080600060408486031215614f5357600080fd5b8335614f5e81614f30565b9250602084013567ffffffffffffffff811115614f7a57600080fd5b614f8686828701614e01565b9497909650939450505050565b600060208284031215614fa557600080fd5b5035919050565b60008060408385031215614fbf57600080fd5b823591506020830135614fd181614cf0565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561501d5783516001600160a01b031683529284019291840191600101614ff8565b50909695505050505050565b600080600080600060a0868803121561504157600080fd5b853561504c81614cf0565b9450602086013561505c81614cf0565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561508d57600080fd5b823561509881614cf0565b91506020830135614fd181614cf0565b600080600080608085870312156150be57600080fd5b84356150c981614cf0565b935060208501356150d981614cf0565b93969395505050506040820135916060013590565b6000806040838503121561510157600080fd5b61510a83614d05565b915061511860208401614d05565b90509250929050565b602080825282518282018190526000919060409081850190868401855b8281101561517957815180516001600160a01b039081168652878201511687860152850151858501526060909301929085019060010161513e565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816151c1576151c161519c565b506000190190565b6000828210156151db576151db61519c565b500390565b6000602082840312156151f257600080fd5b5051919050565b60008160001904831182151516156152135761521361519c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261523d5761523d615218565b500490565b600082198211156152555761525561519c565b500190565b60006020828403121561526c57600080fd5b815160ff81168114613d7a57600080fd5b600181815b808511156152b857816000190482111561529e5761529e61519c565b808516156152ab57918102915b93841c9390800290615282565b509250929050565b6000826152cf57506001610c92565b816152dc57506000610c92565b81600181146152f257600281146152fc57615318565b6001915050610c92565b60ff84111561530d5761530d61519c565b50506001821b610c92565b5060208310610133831016604e8410600b841016171561533b575081810a610c92565b615345838361527d565b80600019048211156153595761535961519c565b029392505050565b6000610c8f83836152c0565b60006020828403121561537f57600080fd5b8151613d7a81614f30565b634e487b7160e01b600052604160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160ff1b03818413828413808216868404861116156154115761541161519c565b600160ff1b60008712828116878305891216156154305761543061519c565b6000871292508782058712848416161561544c5761544c61519c565b878505871281841616156154625761546261519c565b505050929093029392505050565b60008261547f5761547f615218565b600160ff1b8214600019841416156154995761549961519c565b500590565b60005b838110156154b95781810151838201526020016154a1565b8381111561127f5750506000910152565b600081518084526154e281602086016020860161549e565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906125a7908301846154ca565b6001600160a01b038481168252831660208201526060604082018190526000906143de908301846154ca565b60008060006060848603121561555b57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016155865761558661519c565b5060010190565b60006020828403121561559f57600080fd5b8151613d7a81614cf0565b6000600160ff1b82016155bf576155bf61519c565b5060000390565b60008083128015600160ff1b8501841216156155e4576155e461519c565b6001600160ff1b03840183138116156155ff576155ff61519c565b50500390565b600080821280156001600160ff1b03849003851316156156275761562761519c565b600160ff1b83900384128116156156405761564061519c565b50500190565b60008261565557615655615218565b500790565b6000825161566c81846020870161549e565b9190910192915050565b602081526000610c8f60208301846154ca56fe7570646174654d756c7469706c6965727328616464726573732c75696e743235362c75696e743235362909d2594e8892daceca055f74be758146a8b8b1167444d0b4ccb96e74168198cc6164644d61726b657428616464726573732c75696e743235362c75696e7432353629a2646970667358221220fe0204359336ec4dc41cfa631ba11a82f9e9d6bbdc8509b6310343120ae0895864736f6c634300080d0033",
1627
1627
  "linkReferences": {},
1628
1628
  "deployedLinkReferences": {}
1629
1629
  }
@@ -30,13 +30,13 @@ contract Prime is IPrime, AccessControlledV8, PausableUpgradeable, MaxLoopsLimit
30
30
  /// @custom:oz-upgrades-unsafe-allow state-variable-immutable
31
31
  uint256 public immutable BLOCKS_PER_YEAR;
32
32
 
33
- /// @notice address of WBNB contract
33
+ /// @notice address of wrapped native token contract
34
34
  /// @custom:oz-upgrades-unsafe-allow state-variable-immutable
35
- address public immutable WBNB;
35
+ address public immutable WRAPPED_NATIVE_TOKEN;
36
36
 
37
- /// @notice address of VBNB contract
37
+ /// @notice address of native market contract
38
38
  /// @custom:oz-upgrades-unsafe-allow state-variable-immutable
39
- address public immutable VBNB;
39
+ address public immutable NATIVE_MARKET;
40
40
 
41
41
  /// @notice minimum amount of XVS user needs to stake to become a prime member
42
42
  /// @custom:oz-upgrades-unsafe-allow state-variable-immutable
@@ -145,8 +145,8 @@ contract Prime is IPrime, AccessControlledV8, PausableUpgradeable, MaxLoopsLimit
145
145
 
146
146
  /**
147
147
  * @notice Prime constructor
148
- * @param _wbnb Address of WBNB
149
- * @param _vbnb Address of VBNB
148
+ * @param _wrappedNativeToken Address of wrapped native token
149
+ * @param _nativeMarket Address of native market
150
150
  * @param _blocksPerYear total blocks per year
151
151
  * @param _stakingPeriod total number of seconds for which user needs to stake to claim prime token
152
152
  * @param _minimumStakedXVS minimum amount of XVS user needs to stake to become a prime member (scaled by 1e18)
@@ -156,18 +156,16 @@ contract Prime is IPrime, AccessControlledV8, PausableUpgradeable, MaxLoopsLimit
156
156
  */
157
157
  /// @custom:oz-upgrades-unsafe-allow constructor
158
158
  constructor(
159
- address _wbnb,
160
- address _vbnb,
159
+ address _wrappedNativeToken,
160
+ address _nativeMarket,
161
161
  uint256 _blocksPerYear,
162
162
  uint256 _stakingPeriod,
163
163
  uint256 _minimumStakedXVS,
164
164
  uint256 _maximumXVSCap
165
165
  ) {
166
- if (_wbnb == address(0)) revert InvalidAddress();
167
- if (_vbnb == address(0)) revert InvalidAddress();
168
166
  if (_blocksPerYear == 0) revert InvalidBlocksPerYear();
169
- WBNB = _wbnb;
170
- VBNB = _vbnb;
167
+ WRAPPED_NATIVE_TOKEN = _wrappedNativeToken;
168
+ NATIVE_MARKET = _nativeMarket;
171
169
  BLOCKS_PER_YEAR = _blocksPerYear;
172
170
  STAKING_PERIOD = _stakingPeriod;
173
171
  MINIMUM_STAKED_XVS = _minimumStakedXVS;
@@ -1092,13 +1090,13 @@ contract Prime is IPrime, AccessControlledV8, PausableUpgradeable, MaxLoopsLimit
1092
1090
  }
1093
1091
 
1094
1092
  /**
1095
- * @notice Returns the underlying token associated with the VToken, or WBNB if the market is VBNB
1093
+ * @notice Returns the underlying token associated with the VToken, or wrapped native token if the market is native market
1096
1094
  * @param vToken the market whose underlying token will be returned
1097
- * @return underlying The address of the underlying token associated with the VToken, or the address of the WBNB token if the market is VBNB
1095
+ * @return underlying The address of the underlying token associated with the VToken, or the address of the WRAPPED_NATIVE_TOKEN token if the market is NATIVE_MARKET
1098
1096
  */
1099
1097
  function _getUnderlying(address vToken) internal view returns (address) {
1100
- if (vToken == VBNB) {
1101
- return WBNB;
1098
+ if (vToken == NATIVE_MARKET) {
1099
+ return WRAPPED_NATIVE_TOKEN;
1102
1100
  }
1103
1101
  return IVToken(vToken).underlying();
1104
1102
  }
@@ -0,0 +1,21 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ import { HardhatRuntimeEnvironment } from "hardhat/types";
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { deployments, getNamedAccounts } = hre;
6
+ const { deploy } = deployments;
7
+ const { deployer } = await getNamedAccounts();
8
+
9
+ await deploy("XVS", {
10
+ from: deployer,
11
+ args: [deployer],
12
+ log: true,
13
+ autoMine: true,
14
+ });
15
+ };
16
+
17
+ func.tags = ["xvs"];
18
+
19
+ func.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.live;
20
+
21
+ export default func;
@@ -0,0 +1,53 @@
1
+ import { ethers } from "hardhat";
2
+ import { DeployFunction } from "hardhat-deploy/types";
3
+ import { HardhatRuntimeEnvironment } from "hardhat/types";
4
+
5
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
6
+ const { deployments, getNamedAccounts } = hre;
7
+ const { deploy } = deployments;
8
+ const { deployer } = await getNamedAccounts();
9
+
10
+ const xvsVaultDeployment = await deploy("XVSVault", {
11
+ from: deployer,
12
+ args: [],
13
+ log: true,
14
+ autoMine: true,
15
+ });
16
+
17
+ const xvsVaultAddress = xvsVaultDeployment.address;
18
+
19
+ const xvsVaultProxyDeployment = await deploy("XVSVaultProxy", {
20
+ from: deployer,
21
+ args: [],
22
+ log: true,
23
+ autoMine: true,
24
+ });
25
+
26
+ const xvsVaultProxyAddress = xvsVaultProxyDeployment.address;
27
+
28
+ await deploy("XVSStore", {
29
+ from: deployer,
30
+ args: [],
31
+ log: true,
32
+ autoMine: true,
33
+ });
34
+
35
+ const xvsVault = await ethers.getContract("XVSVault");
36
+ const xvsStore = await ethers.getContract("XVSStore");
37
+ const xvsVaultProxy = await ethers.getContract("XVSVaultProxy");
38
+
39
+ // Become Implementation of XVSVaultProxy
40
+ const tx = await xvsVaultProxy._setPendingImplementation(xvsVaultAddress);
41
+ await tx.wait();
42
+
43
+ await xvsVault._become(xvsVaultProxyAddress);
44
+ await tx.wait();
45
+
46
+ // Set new owner to xvs store
47
+ await xvsStore.setNewOwner(xvsVaultProxyAddress);
48
+ await tx.wait();
49
+ };
50
+
51
+ func.tags = ["xvs-vault"];
52
+
53
+ export default func;