@artblocks/contracts 1.0.0 → 1.0.2

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 (106) hide show
  1. package/.env.example +8 -1
  2. package/README.md +44 -165
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +2 -2
  5. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +2 -2
  6. package/artifacts/contracts/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +2 -2
  7. package/artifacts/contracts/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2229 -0
  8. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV0.sol/MinterDAExpV0.json +2 -2
  9. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV1.sol/MinterDAExpV1.json +2 -2
  10. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  13. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +3 -3
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV0.sol/MinterDALinV0.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV1.sol/MinterDALinV1.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV0.sol/MinterHolderV0.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV0.sol/MinterMerkleV0.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV0.sol/MinterSetPriceV0.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV1.sol/MinterSetPriceV1.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  35. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2 -2
  36. package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +767 -0
  37. package/artifacts/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol/IFilteredMinterSEAV0.json +1032 -0
  38. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +149 -0
  39. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +149 -0
  40. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +130 -0
  41. package/artifacts/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +1066 -0
  42. package/artifacts/contracts/interfaces/0.8.x/IMinterFilterV0.sol/IMinterFilterV0.json +6 -0
  43. package/artifacts/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol/IRandomizerPolyptychV0.json +87 -0
  44. package/artifacts/contracts/interfaces/0.8.x/IRandomizerV2.sol/IRandomizerV2.json +1 -1
  45. package/artifacts/contracts/interfaces/0.8.x/IWETH.sol/IWETH.json +55 -0
  46. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +295 -0
  47. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV0.sol/MinterFilterV0.json +8 -2
  48. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +34 -2
  49. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1127 -0
  50. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV4.sol/MinterDAExpV4.json +15 -2
  51. package/artifacts/contracts/minter-suite/Minters/MinterDALinV4.sol/MinterDALinV4.json +15 -2
  52. package/artifacts/contracts/minter-suite/Minters/MinterHolderV4.sol/MinterHolderV4.json +15 -2
  53. package/artifacts/contracts/minter-suite/Minters/MinterMerkleV5.sol/MinterMerkleV5.json +15 -2
  54. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +792 -0
  55. package/artifacts/contracts/minter-suite/Minters/MinterPolyptychV0.sol/MinterPolyptychV0.json +1268 -0
  56. package/artifacts/contracts/minter-suite/Minters/MinterSEAV0.sol/MinterSEAV0.json +1310 -0
  57. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +15 -2
  58. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV4.sol/MinterSetPriceV4.json +15 -2
  59. package/artifacts/contracts/mock/DeadReceiverBidderMock.sol/DeadReceiverBidderMock.json +33 -0
  60. package/artifacts/contracts/mock/GasLimitReceiverBidderMock.sol/GasLimitReceiverBidderMock.json +46 -0
  61. package/artifacts/contracts/mock/GasLimitReceiverMock.sol/GasLimitReceiverMock.json +28 -0
  62. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  63. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +3 -3
  64. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +51 -0
  65. package/artifacts/contracts/{BasicRandomizer.sol → randomizer/BasicRandomizer.sol}/BasicRandomizer.json +3 -3
  66. package/artifacts/contracts/randomizer/BasicRandomizerBase_v0_0_0.sol/RandomizerBase.json +10 -0
  67. package/artifacts/contracts/randomizer/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +229 -0
  68. package/artifacts/contracts/randomizer/RandomizerV2.sol/BasicRandomizerV2.json +102 -0
  69. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +2 -2
  70. package/contracts/DependencyRegistryV0.sol +74 -113
  71. package/contracts/GenArt721CoreV3.sol +124 -171
  72. package/contracts/GenArt721CoreV3_Engine.sol +136 -198
  73. package/contracts/GenArt721CoreV3_Engine_Flex.sol +2274 -0
  74. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV1.sol +4 -4
  75. package/contracts/explorations/GenArt721CoreV3_Explorations.sol +147 -176
  76. package/contracts/interfaces/0.8.x/IFilteredMinterDAExpSettlementV1.sol +21 -0
  77. package/contracts/interfaces/0.8.x/IFilteredMinterSEAV0.sol +145 -0
  78. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Base.sol +39 -0
  79. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine.sol +0 -3
  80. package/contracts/interfaces/0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +132 -0
  81. package/contracts/interfaces/0.8.x/IMinterFilterV0.sol +6 -0
  82. package/contracts/interfaces/0.8.x/IRandomizerPolyptychV0.sol +31 -0
  83. package/contracts/interfaces/0.8.x/IRandomizerV2.sol +5 -2
  84. package/contracts/interfaces/0.8.x/IWETH.sol +11 -0
  85. package/contracts/libs/integration-refs/weth9/weth9.sol +763 -0
  86. package/contracts/minter-suite/MinterFilter/MinterFilterV1.sol +53 -47
  87. package/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol +1304 -0
  88. package/contracts/minter-suite/Minters/MinterDAExpV4.sol +47 -24
  89. package/contracts/minter-suite/Minters/MinterDALinV4.sol +46 -21
  90. package/contracts/minter-suite/Minters/MinterHolderV4.sol +54 -25
  91. package/contracts/minter-suite/Minters/MinterMerkleV5.sol +47 -20
  92. package/contracts/minter-suite/Minters/MinterPolyptychV0.sol +998 -0
  93. package/contracts/minter-suite/Minters/MinterSEAV0.sol +1224 -0
  94. package/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol +45 -16
  95. package/contracts/minter-suite/Minters/MinterSetPriceV4.sol +40 -13
  96. package/contracts/mock/DeadReceiverBidderMock.sol +23 -0
  97. package/contracts/mock/GasLimitReceiverBidderMock.sol +23 -0
  98. package/contracts/mock/GasLimitReceiverMock.sol +19 -0
  99. package/contracts/mock/RandomizerV2_NoAssignMock.sol +2 -11
  100. package/contracts/mock/ReentrancySEAMock.sol +36 -0
  101. package/contracts/{BasicRandomizer.sol → randomizer/BasicRandomizer.sol} +1 -1
  102. package/contracts/randomizer/BasicRandomizerBase_v0_0_0.sol +23 -0
  103. package/contracts/randomizer/PolyptychRandomizerV0.sol +117 -0
  104. package/contracts/{BasicRandomizerV2.sol → randomizer/RandomizerV2.sol} +7 -15
  105. package/package.json +32 -13
  106. package/artifacts/contracts/BasicRandomizerV2.sol/BasicRandomizerV2.json +0 -102
@@ -1935,8 +1935,8 @@
1935
1935
  "type": "function"
1936
1936
  }
1937
1937
  ],
1938
- "bytecode": "0x60c0604052600e8054600560a11b60ff60a01b199182168117909255600f8054909116909117905560fa60118190556013553480156200003e57600080fd5b5060405162006ab938038062006ab98339810160408190526200006191620007f9565b8888600062000071838262000983565b50600162000080828262000983565b5050506200009d620000976200034360201b60201c565b62000347565b866001600160a01b038116620000e95760405162461bcd60e51b815260206004820152601b602482015260008051602062006a9983398151915260448201526064015b60405180910390fd5b866001600160a01b038116620001315760405162461bcd60e51b815260206004820152601b602482015260008051602062006a998339815191526044820152606401620000e0565b866001600160a01b038116620001795760405162461bcd60e51b815260206004820152601b602482015260008051602062006a998339815191526044820152606401620000e0565b866001600160a01b038116620001c15760405162461bcd60e51b815260206004820152601b602482015260008051602062006a998339815191526044820152606401620000e0565b85151560a0526001600160f81b038716608052620001e28b808c806200037f565b620001ed8962000409565b620001f88862000347565b620002436200021b306001600160a01b03166200049160201b620040cc1760201c565b6040516020016200022d919062000a4f565b60408051601f19818403018152919052620004af565b601580547fff00000000000000000000000000000000000000000000000000000000000000166001600160f81b0389161790556040516c1b995e1d141c9bda9958dd1259609a1b9060008051602062006a7983398151915290600090a260405163f889b3ed60e01b81523060048201526576332e312e3160d01b60248201527f47656e417274373231436f726556335f456e67696e650000000000000000000060448201526001600160a01b0386169063f889b3ed90606401600060405180830381600087803b1580156200031757600080fd5b505af11580156200032c573d6000803e3d6000fd5b505050505050505050505050505050505062000b17565b3390565b6200035d81620004ec60201b620040e21760201c565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600f80546001600160a01b038085166001600160a01b03199283161790925560128054848416908316179055600e805487841690831617905560108054928616929091169190911790556040517f70726f766964657253616c6573416464726573736573000000000000000000009060008051602062006a7983398151915290600090a250505050565b600880546001600160a01b0383166001600160a01b031991821681179092556009805460018101825560009182527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805490921690921790556040517072616e646f6d697a65724164647265737360781b9160008051602062006a7983398151915291a250565b6060620004a96001600160a01b03831660146200053e565b92915050565b6016620004bd828262000983565b506040516d64656661756c744261736555524960901b9060008051602062006a7983398151915290600090a250565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060006200054f83600262000ab7565b6200055c90600262000ad1565b6001600160401b03811115620005765762000576620006fe565b6040519080825280601f01601f191660200182016040528015620005a1576020820181803683370190505b509050600360fc1b81600081518110620005bf57620005bf62000ae7565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620005f157620005f162000ae7565b60200101906001600160f81b031916908160001a90535060006200061784600262000ab7565b6200062490600162000ad1565b90505b6001811115620006a6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106200065c576200065c62000ae7565b1a60f81b82828151811062000675576200067562000ae7565b60200101906001600160f81b031916908160001a90535060049490941c936200069e8162000afd565b905062000627565b508315620006f75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620000e0565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200073157818101518382015260200162000717565b50506000910152565b600082601f8301126200074c57600080fd5b81516001600160401b0380821115620007695762000769620006fe565b604051601f8301601f19908116603f01168101908282118183101715620007945762000794620006fe565b81604052838152866020858801011115620007ae57600080fd5b620007c184602083016020890162000714565b9695505050505050565b80516001600160a01b0381168114620007e357600080fd5b919050565b80518015158114620007e357600080fd5b60008060008060008060008060006101208a8c0312156200081957600080fd5b89516001600160401b03808211156200083157600080fd5b6200083f8d838e016200073a565b9a5060208c01519150808211156200085657600080fd5b50620008658c828d016200073a565b9850506200087660408b01620007cb565b96506200088660608b01620007cb565b95506200089660808b01620007cb565b9450620008a660a08b01620007cb565b60c08b01519094506001600160f81b0381168114620008c457600080fd5b9250620008d460e08b01620007e8565b9150620008e56101008b01620007cb565b90509295985092959850929598565b600181811c908216806200090957607f821691505b6020821081036200092a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200097e57600081815260208120601f850160051c81016020861015620009595750805b601f850160051c820191505b818110156200097a5782815560010162000965565b5050505b505050565b81516001600160401b038111156200099f576200099f620006fe565b620009b781620009b08454620008f4565b8462000930565b602080601f831160018114620009ef5760008415620009d65750858301515b600019600386901b1c1916600185901b1785556200097a565b600085815260208120601f198616915b8281101562000a2057888601518255948401946001909101908401620009ff565b508582101562000a3f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f68747470733a2f2f746f6b656e2e617274626c6f636b732e696f2f000000000081526000825162000a8981601b85016020870162000714565b602f60f81b601b939091019283015250601c01919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620004a957620004a962000aa1565b80820180821115620004a957620004a962000aa1565b634e487b7160e01b600052603260045260246000fd5b60008162000b0f5762000b0f62000aa1565b506000190190565b60805160a051615f1262000b6760003960008181610b4c0152611f59015260008181610c9401528181611d4501528181612483015281816126c901528181613c0801526142e00152615f126000f3fe608060405234801561001057600080fd5b50600436106104145760003560e01c8063715018a611610223578063b75395e01161012c578063b75395e014610a4d578063b7b04fae14610a60578063b88d4fde14610a73578063b971136814610a86578063bb3bafd614610a8e578063bd3d10e714610aaf578063c34a03b514610ac2578063c6c7c5bf14610ad5578063c87b56dd14610ae8578063cc90e72514610afb578063d03c390c14610b0e578063db21a84614610b21578063db2ff86114610b34578063e6032df214610b47578063e935b7b114610b6e578063e985e9c514610b7f578063eb9cd5d414610b92578063ed8abfda14610bb4578063f2fde38b14610bde578063f313d73314610bf1578063f851a44014610c87578063f893c07b14610c8f57600080fd5b8063715018a61461081757806376ee6fab1461081f5780638639415b146108325780638c3c9cdd1461088d5780638da5cb5b146108a05780638dd91a56146108a857806392f00233146108cc57806395d89b41146108df5780639a02e4fa146108e7578063a11ec70a1461091e578063a22cb46514610931578063a3b2cca614610944578063a47d29cb14610957578063abcbb7b414610983578063ac11fa1c1461098b578063acad0124146109ab578063acd4c66f146109be578063ad0305ce146109d0578063ad2cdfc4146109f2578063ae45ad9814610a1f578063b1656ba314610a27578063b168762214610a3a57600080fd5b806328ec8f501161032557806328ec8f501461063c5780632b274166146106695780632b65e67d1461067c5780632b8258c51461068f5780632d9c02051461069857806330ef4c5f146106ab57806336c7c12c146106bd57806337859963146106d057806338c8e468146106e35780633bb225531461070f5780633e48e8481461071857806341814cd31461072b57806342842e0e1461073e57806348337282146107515780634e1d64af146107645780635508fd521461076c57806358b9a5a914610780578063621a1f74146107b85780636352211e146107cb57806369d14faf146107de5780636c907b7f146107f157806370a082311461080457600080fd5b80611e3c146104195780615de51461042e5780630132c6971461045457806301856fd41461046757806301ffc9a71461047a57806304143a5c1461049d57806306fdde03146104a5578063081812fc146104ba578063095ea7b3146104e55780630d170673146104f85780630e79c9281461050b5780630ea5613f1461051e5780630ebeb0ee1461056857806317df5366146105915780631ab6014c146105a45780631b689c0b146105b75780631c05cad7146105ca5780631e9bef46146105dd5780632302cbda146105f0578063230448b11461060357806323b872dd1461061657806325b75d6814610629575b600080fd5b61042c610427366004614fd1565b610cb6565b005b61044161043c366004615008565b610e08565b6040519081526020015b60405180910390f35b61042c61046236600461504a565b6110ac565b61042c610475366004614fd1565b611230565b61048d610488366004615098565b611348565b604051901515815260200161044b565b61042c611373565b6104ad6113fb565b60405161044b9190615105565b6104cd6104c8366004615118565b61148d565b6040516001600160a01b03909116815260200161044b565b61042c6104f3366004615131565b6114b4565b61042c610506366004615208565b6115c9565b61042c610519366004615208565b6116ac565b61053161052c366004615118565b611926565b60408051968752602087019590955292151593850193909352151560608401526080830191909152151560a082015260c00161044b565b6104cd610576366004615118565b6000908152600c60205260409020546001600160a01b031690565b6007546104cd906001600160a01b031681565b600f546104cd906001600160a01b031681565b6104416105c5366004615118565b611989565b61042c6105d836600461524e565b611998565b600a546104cd906001600160a01b031681565b61042c6105fe3660046152aa565b611a7a565b61048d6106113660046152de565b611ad4565b61042c61062436600461531e565b611b80565b61042c610637366004615208565b611bb1565b61044161064a366004615118565b6000908152600c6020526040902060010154600160a01b900460ff1690565b61042c61067736600461535f565b611c97565b61042c61068a36600461537c565b611d42565b61044160135481565b6104ad6106a6366004615118565b612149565b600f54600160a01b900460ff16610441565b6008546104cd906001600160a01b031681565b61042c6106de366004615208565b6121ee565b6104cd6106f1366004615118565b6000908152600c60205260409020600101546001600160a01b031690565b61044160115481565b61042c610726366004615208565b61226f565b6010546104cd906001600160a01b031681565b61042c61074c36600461531e565b612313565b61042c61075f36600461535f565b61232e565b6104ad6123d0565b60155461048d90600160f81b900460ff1681565b6104cd61078e366004614fd1565b6000918252600b60209081526040808420928452600990920190529020546001600160a01b031690565b6104416107c6366004615118565b6123e9565b6104cd6107d9366004615118565b61244b565b61042c6107ec3660046153e3565b612480565b61042c6107ff36600461535f565b6125c7565b61044161081236600461535f565b612626565b61042c6126ac565b61042c61082d36600461537c565b6126c6565b610845610840366004614fd1565b61295c565b604080519889526001600160a01b0397881660208a015288019590955292851660608701526080860191909152831660a085015260c08401521660e08201526101000161044b565b6104ad61089b366004614fd1565b612a65565b6104cd612ac4565b6108bb6108b6366004615118565b612ad8565b60405161044b959493929190615408565b6014546104cd906001600160a01b031681565b6104ad612dcc565b6109116108f5366004615118565b600090815260026020526040902054600160a01b900460a01b90565b60405161044b9190615475565b61042c61092c366004615118565b612ddb565b61042c61093f366004615498565b612e66565b61042c610952366004615208565b612e75565b6104cd610965366004615118565b6000908152600c60205260409020600201546001600160a01b031690565b6104ad612f61565b610441610999366004615118565b600d6020526000908152604090205481565b61042c6109b9366004615208565b612fef565b600e54600160a01b900460ff16610441565b61048d6109de36600461535f565b6014546001600160a01b0390811691161490565b610441610a00366004615118565b6000908152600c6020526040902060020154600160a01b900460ff1690565b6104ad613140565b61042c610a353660046154c6565b613164565b6104cd610a48366004615118565b6132ea565b600e546104cd906001600160a01b031681565b61042c610a6e366004615208565b613362565b61042c610a81366004615515565b61344b565b600954610441565b610aa1610a9c366004615118565b613483565b60405161044b929190615594565b61042c610abd366004614fd1565b613735565b61042c610ad0366004614fd1565b613821565b6012546104cd906001600160a01b031681565b6104ad610af6366004615118565b613921565b61042c610b09366004615618565b613a28565b61042c610b1c366004615118565b613bd6565b61042c610b2f366004614fd1565b613cad565b61042c610b42366004615118565b613d8e565b61048d7f000000000000000000000000000000000000000000000000000000000000000081565b6015546001600160f81b0316610441565b61048d610b8d36600461565e565b613f52565b610ba5610ba0366004615118565b613f80565b60405161044b9392919061568c565b610441610bc2366004615118565b6000908152600c6020526040902054600160a01b900460ff1690565b61042c610bec36600461535f565b61404c565b610c49610bff366004615118565b6000908152600c60205260409020600281015481546001909201546001600160a01b03808316948482169460ff600160a01b95869004811695938516948490048116939091041690565b604080516001600160a01b039788168152958716602087015285019390935293166060830152608082019290925260a081019190915260c00161044b565b6104cd6140c2565b6104417f000000000000000000000000000000000000000000000000000000000000000081565b81610cc081614134565b610ce55760405162461bcd60e51b8152600401610cdc906156c2565b60405180910390fd5b60008381526002602052604090206008546001600160a01b03163314610d475760405162461bcd60e51b815260206004820152601760248201527613db9b1e481c985b991bdb5a5e995c881b585e481cd95d604a1b6044820152606401610cdc565b8054600160a01b900460a01b6001600160a01b03191615610da35760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881a185cda08185b1c9958591e481cd95d60521b6044820152606401610cdc565b82610de45760405162461bcd60e51b8152602060048201526011602482015270139bc81e995c9bc81a185cda081cd95959607a1b6044820152606401610cdc565b805460a09390931c600160a01b026001600160a01b03909316929092179091555050565b6014546000906001600160a01b03163314610e655760405162461bcd60e51b815260206004820152601e60248201527f4d757374206d696e742066726f6d206d696e74657220636f6e747261637400006044820152606401610cdc565b6000838152600b60205260409020805462ffffff808216916001830191630100000090910416808310610eda5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206e6f7420657863656564206d617820696e766f636174696f6e73006044820152606401610cdc565b8354600160881b900460ff1680610f0d57506000878152600c60205260409020600201546001600160a01b038781169116145b610f595760405162461bcd60e51b815260206004820181905260248201527f50726f6a656374206d75737420657869737420616e64206265206163746976656044820152606401610cdc565b8354600160901b900460ff161580610f8d57506000878152600c60205260409020600201546001600160a01b038781169116145b610fd15760405162461bcd60e51b8152602060048201526015602482015274283ab931b430b9b2b99030b932903830bab9b2b21760591b6044820152606401610cdc565b835462ffffff191662ffffff8381169182178655848116620f42408a02019190831690036110025761100288614151565b61100c89826141a9565b600854604051635b140b8d60e11b8152600481018390526001600160a01b039091169063b628171a90602401600060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b50506040518392506001600160a01b038c1691507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688590600090a398975050505050505050565b6000828152600c602052604090206002015482906001600160a01b031633146110e75760405162461bcd60e51b8152600401610cdc906156f3565b6000838152600b60205260409020805462ffffff80821691630100000090048116908516106111645760405162461bcd60e51b8152602060048201526024808201527f6d6178496e766f636174696f6e73206d6179206f6e6c79206265206465637265604482015263185cd95960e21b6064820152608401610cdc565b808462ffffff1610156111ce5760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c79206d617820696e766f636174696f6e73206774652063757272656e7460448201526b20696e766f636174696f6e7360a01b6064820152608401610cdc565b815465ffffff0000001916630100000062ffffff8616021782556040516d6d6178496e766f636174696f6e7360901b908690600080516020615ebd83398151915290600090a3808462ffffff16036112295761122985614151565b5050505050565b8161123a816142db565b6112565760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c6020526040902060020154839062615bf560e21b906001600160a01b031633148061128e575061128e333083611ad4565b6112aa5760405162461bcd60e51b8152600401610cdc90615742565b6000858152600b602052604090819020906112c89086906001614375565b6113115760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b6044820152606401610cdc565b60078101859055604051697363726970745479706560b01b908790600080516020615ebd83398151915290600090a3505050505050565b60006001600160e01b03198216635d9dd7eb60e11b148061136d575061136d826143e8565b92915050565b6301050e9760e21b611386333083611ad4565b6113a25760405162461bcd60e51b8152600401610cdc90615777565b601554600160f81b900460ff16156113f05760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903337b93134b23232b760791b6044820152606401610cdc565b6113f8614438565b50565b60606000805461140a906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611436906157a7565b80156114835780601f1061145857610100808354040283529160200191611483565b820191906000526020600020905b81548152906001019060200180831161146657829003601f168201915b5050505050905090565b600061149882614490565b506000908152600460205260409020546001600160a01b031690565b60006114bf8261244b565b9050806001600160a01b0316836001600160a01b03160361152c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610cdc565b336001600160a01b038216148061154857506115488133613f52565b6115ba5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610cdc565b6115c483836144b5565b505050565b816115d3816142db565b6115ef5760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c60205260409020600201548390630d17067360e01b906001600160a01b03163314806116285750611628333083611ad4565b6116445760405162461bcd60e51b8152600401610cdc90615742565b8380516000036116665760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b602052604090206001016116818682615873565b50604051636e616d6560e01b908790600080516020615ebd83398151915290600090a3505050505050565b816116b6816142db565b6116d25760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c602052604090206002015483906301cf392560e31b906001600160a01b031633148061170b575061170b333083611ad4565b6117275760405162461bcd60e51b8152600401610cdc90615742565b8380516000036117495760405162461bcd60e51b8152600401610cdc906157db565b84518590600b81111561179d5760405162461bcd60e51b815260206004820152601c60248201527b41737065637420726174696f20666f726d617420746f6f206c6f6e6760201b6044820152606401610cdc565b60008060005b838110156118895760008582815181106117bf576117bf61592c565b01602001516001600160f81b0319169050600360fc1b81108015906117f25750603960f81b6001600160f81b0319821611155b15611801576001925050611877565b6001600160f81b03198116601760f91b036118255783611825576001935050611877565b60405162461bcd60e51b815260206004820152602160248201527f496d70726f7065726c7920666f726d61747465642061737065637420726174696044820152606f60f81b6064820152608401610cdc565b8061188181615958565b9150506117a3565b50806118d55760405162461bcd60e51b815260206004820152601b60248201527a41737065637420726174696f20686173206e6f206e756d6265727360281b6044820152606401610cdc565b60008a8152600b602052604090206008016118f08a82615873565b506040516a617370656374526174696f60a81b908b90600080516020615ebd83398151915290600090a350505050505050505050565b6000818152600b60205260408120805462ffffff808216936301000000830490911692600160881b830460ff90811693600160901b810490911692600160481b9091046001600160401b03169161197c886142db565b1591505091939550919395565b600061136d620f424083615987565b631c05cad760e01b6119ab333083611ad4565b6119c75760405162461bcd60e51b8152600401610cdc90615777565b846001600160a01b0381166119ee5760405162461bcd60e51b8152600401610cdc9061599b565b846001600160a01b038116611a155760405162461bcd60e51b8152600401610cdc9061599b565b846001600160a01b038116611a3c5760405162461bcd60e51b8152600401610cdc9061599b565b846001600160a01b038116611a635760405162461bcd60e51b8152600401610cdc9061599b565b611a6f89898989614523565b505050505050505050565b63118165ed60e11b611a8d333083611ad4565b611aa95760405162461bcd60e51b8152600401610cdc90615777565b818051600003611acb5760405162461bcd60e51b8152600401610cdc906157db565b6115c4836145a5565b600080611adf612ac4565b6001600160a01b031614158015611b785750600a546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af1158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7891906159d0565b949350505050565b611b8a33826145df565b611ba65760405162461bcd60e51b8152600401610cdc906159ed565b6115c483838361463d565b81611bbb816142db565b611bd75760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c602052604090206002015483906304b6ebad60e31b906001600160a01b0316331480611c105750611c10333083611ad4565b611c2c5760405162461bcd60e51b8152600401610cdc90615742565b838051600003611c4e5760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b60205260409020600501611c698682615873565b50604051666c6963656e736560c81b908790600080516020615ebd83398151915290600090a3505050505050565b631593a0b360e11b611caa333083611ad4565b611cc65760405162461bcd60e51b8152600401610cdc90615777565b816001600160a01b038116611ced5760405162461bcd60e51b8152600401610cdc9061599b565b600780546001600160a01b0319166001600160a01b03851617905560405178646570656e64656e637952656769737472794164647265737360381b90600080516020615e9d83398151915290600090a2505050565b857f00000000000000000000000000000000000000000000000000000000000000008110158015611d7d57506015546001600160f81b031681105b611d995760405162461bcd60e51b8152600401610cdc90615a3b565b6000878152600c602052604090206002015487906001600160a01b03163314611dd45760405162461bcd60e51b8152600401610cdc906156f3565b866001600160a01b038116611dfb5760405162461bcd60e51b8152600401610cdc9061599b565b6000898152600c6020526040902060648711801590611e1b575060648511155b611e555760405162461bcd60e51b815260206004820152600b60248201526a4d6178206f66203130302560a81b6044820152606401610cdc565b861580611e6a57506001600160a01b03881615155b611eb65760405162461bcd60e51b815260206004820152601d60248201527f5072696d617279207061796565206973207a65726f20616464726573730000006044820152606401610cdc565b841580611ecb57506001600160a01b03861615155b611f175760405162461bcd60e51b815260206004820152601f60248201527f5365636f6e64617279207061796565206973207a65726f2061646472657373006044820152606401610cdc565b897f6ff7d102bb3657a26dcbbcd299d821a066718a7cf76ae7cd98279f18b74da8ac8a8a8a8a8a604051611f4f959493929190615a6e565b60405180910390a27f000000000000000000000000000000000000000000000000000000000000000080611ff557600282015482546001600160a01b039182168c831614916000918116908c161480611faf57506001600160a01b038b16155b60018501549091506000906001600160a01b038b811691161480611fda57506001600160a01b038a16155b9050828015611fe65750815b8015611fef5750805b93505050505b80156120fd576000801b600d60008d815260200190815260200160002081905550898260020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550888260000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550878260020160146101000a81548160ff021916908360ff160217905550868260010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858260010160146101000a81548160ff021916908360ff1602179055508a7fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a261213c565b8989898989604051602001612116959493929190615a6e565b60408051601f19818403018152918152815160209283012060008e8152600d9093529120555b5050505050505050505050565b6000818152600b60205260409020600601805460609190612169906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612195906157a7565b80156121e25780601f106121b7576101008083540402835291602001916121e2565b820191906000526020600020905b8154815290600101906020018083116121c557829003601f168201915b50505050509050919050565b6000828152600c602052604090206002015482906001600160a01b031633146122295760405162461bcd60e51b8152600401610cdc906156f3565b6000838152600b602052604090206004016122448382615873565b50604051667765627369746560c81b908490600080516020615ebd83398151915290600090a3505050565b6000828152600c602052604090206002015482906001600160a01b031633146122aa5760405162461bcd60e51b8152600401610cdc906156f3565b8180516000036122cc5760405162461bcd60e51b8152600401610cdc906157db565b6000848152600b602052604090206006016122e78482615873565b50604051666261736555524960c81b908590600080516020615ebd83398151915290600090a350505050565b6115c48383836040518060200160405280600081525061344b565b632419b94160e11b612341333083611ad4565b61235d5760405162461bcd60e51b8152600401610cdc90615777565b816001600160a01b0381166123845760405162461bcd60e51b8152600401610cdc9061599b565b601480546001600160a01b0319166001600160a01b0385169081179091556040517fad0f299ec81a386c98df0ac27dae11dd020ed1b56963c53a7292e7a3a314539a90600090a2505050565b60606123e46576332e312e3160d01b6147d9565b905090565b600081815260026020526040812054600160a01b900460a01b6001600160a01b03198116820361241c5750600092915050565b8060405160200161242d9190615475565b60405160208183030381529060405280519060200120915050919050565b6000818152600260205260408120546001600160a01b03168061136d5760405162461bcd60e51b8152600401610cdc90615aa1565b817f000000000000000000000000000000000000000000000000000000000000000081101580156124bb57506015546001600160f81b031681105b6124d75760405162461bcd60e51b8152600401610cdc90615a3b565b826369d14faf60e01b6124eb333083611ad4565b8061252a575060006124fb612ac4565b6001600160a01b031614801561252a57506000828152600c60205260409020600201546001600160a01b031633145b6125465760405162461bcd60e51b8152600401610cdc90615ad3565b836001600160a01b03811661256d5760405162461bcd60e51b8152600401610cdc9061599b565b6000868152600c602052604080822060020180546001600160a01b0319166001600160a01b038916179055516c6172746973744164647265737360981b918891600080516020615ebd8339815191529190a3505050505050565b636c907b7f60e01b6125da333083611ad4565b6125f65760405162461bcd60e51b8152600401610cdc90615777565b816001600160a01b03811661261d5760405162461bcd60e51b8152600401610cdc9061599b565b6115c483614844565b60006001600160a01b0382166126905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610cdc565b506001600160a01b031660009081526003602052604090205490565b6126b46148cb565b6126bc614438565b6126c461492a565b565b857f0000000000000000000000000000000000000000000000000000000000000000811015801561270157506015546001600160f81b031681105b61271d5760405162461bcd60e51b8152600401610cdc90615a3b565b866376ee6fab60e01b612731333083611ad4565b8061277057506000612741612ac4565b6001600160a01b031614801561277057506000828152600c60205260409020600201546001600160a01b031633145b61278c5760405162461bcd60e51b8152600401610cdc90615ad3565b876001600160a01b0381166127b35760405162461bcd60e51b8152600401610cdc9061599b565b88888888886040516020016127cc959493929190615a6e565b60408051601f19818403018152918152815160209283012060008d8152600d9093529120541461283b5760405162461bcd60e51b815260206004820152601a602482015279135d5cdd081b585d18da08185c9d1a5cdd081c1c9bdc1bdcd85b60321b6044820152606401610cdc565b6000600c60008c81526020019081526020016000209050898160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550888160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550878160020160146101000a81548160ff021916908360ff160217905550868160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160010160146101000a81548160ff021916908360ff1602179055506000801b600d60008d8152602001908152602001600020819055508a7fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a25050505050505050505050565b6000828152600c60205260408120600e548291829182918291829182918291908a9060649061299590600160a01b900460ff1683615b2b565b61299f9190615987565b99506129ab8a82615b42565b600f549091506064906129c890600160a01b900460ff168d615b2b565b6129d29190615987565b97506129de8882615b42565b60028301549091506064906129fd90600160a01b900460ff1683615b2b565b612a079190615987565b9350612a138482615b42565b600e54600f546001600160a01b039182169b5016975095508515612a425760028201546001600160a01b031694505b8315612a565781546001600160a01b031692505b50509295985092959890939650565b6000828152600b60205260409020805460609190600160301b900462ffffff168310612aa157505060408051602081019091526000815261136d565b6000838152600982016020526040902054611b78906001600160a01b031661493c565b60006123e46006546001600160a01b031690565b60608060608060606000600b60008881526020019081526020016000209050806001018054612b06906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612b32906157a7565b8015612b7f5780601f10612b5457610100808354040283529160200191612b7f565b820191906000526020600020905b815481529060010190602001808311612b6257829003601f168201915b50505050509550806002018054612b95906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612bc1906157a7565b8015612c0e5780601f10612be357610100808354040283529160200191612c0e565b820191906000526020600020905b815481529060010190602001808311612bf157829003601f168201915b50505050509450806003018054612c24906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612c50906157a7565b8015612c9d5780601f10612c7257610100808354040283529160200191612c9d565b820191906000526020600020905b815481529060010190602001808311612c8057829003601f168201915b50505050509350806004018054612cb3906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612cdf906157a7565b8015612d2c5780601f10612d0157610100808354040283529160200191612d2c565b820191906000526020600020905b815481529060010190602001808311612d0f57829003601f168201915b50505050509250806005018054612d42906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612d6e906157a7565b8015612dbb5780601f10612d9057610100808354040283529160200191612dbb565b820191906000526020600020905b815481529060010190602001808311612d9e57829003601f168201915b505050505091505091939590929450565b60606001805461140a906157a7565b6000818152600c602052604090206002015481906001600160a01b03163314612e165760405162461bcd60e51b8152600401610cdc906156f3565b6000828152600b6020526040808220805460ff60901b198116600160901b9182900460ff161590910217905551651c185d5cd95960d21b918491600080516020615ebd8339815191529190a35050565b612e713383836149c7565b5050565b612e7e826142db565b612e9957612e9433306351d9665360e11b611ad4565b612eb7565b6000828152600c60205260409020600201546001600160a01b031633145b612f185760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c7920617274697374207768656e20756e6c6f636b65642c206f776e657260448201526b081dda195b881b1bd8dad95960a21b6064820152608401610cdc565b6000828152600b60205260409020600301612f338282615873565b506040516a3232b9b1b934b83a34b7b760a91b908390600080516020615ebd83398151915290600090a35050565b60168054612f6e906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612f9a906157a7565b8015612fe75780601f10612fbc57610100808354040283529160200191612fe7565b820191906000526020600020905b815481529060010190602001808311612fca57829003601f168201915b505050505081565b81612ff9816142db565b6130155760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c60205260409020600201548390632b2b404960e21b906001600160a01b031633148061304e575061304e333083611ad4565b61306a5760405162461bcd60e51b8152600401610cdc90615742565b83805160000361308c5760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b602052604090206130a386614a91565b8154600160301b9081900462ffffff9081166000908152600985016020526040902080546001600160a01b0319166001600160a01b03949094169390931790925582546130f592919004166001615b55565b815462ffffff91909116600160301b0262ffffff60301b19909116178155604051651cd8dc9a5c1d60d21b908890600080516020615ebd83398151915290600090a350505050505050565b60606123e47547656e417274373231436f726556335f456e67696e6560501b6147d9565b8261316e816142db565b61318a5760405162461bcd60e51b8152600401610cdc90615718565b6000848152600c6020526040902060020154849063b1656ba360e01b906001600160a01b03163314806131c357506131c3333083611ad4565b6131df5760405162461bcd60e51b8152600401610cdc90615742565b8380516000036132015760405162461bcd60e51b8152600401610cdc906157db565b6000878152600b602052604090208054600160301b900462ffffff1687106132635760405162461bcd60e51b81526020600482015260156024820152747363726970744964206f7574206f662072616e676560581b6044820152606401610cdc565b6000878152600982016020526040902054613286906001600160a01b0316614b19565b61328f86614a91565b600088815260098301602052604080822080546001600160a01b0319166001600160a01b0394909416939093179092559051651cd8dc9a5c1d60d21b918a91600080516020615ebd8339815191529190a35050505050505050565b60095460009082106133345760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610cdc565b600982815481106133475761334761592c565b6000918252602090912001546001600160a01b031692915050565b8161336c816142db565b6133885760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c60205260409020600201548390635bd827d760e11b906001600160a01b03163314806133c157506133c1333083611ad4565b6133dd5760405162461bcd60e51b8152600401610cdc90615742565b8380516000036133ff5760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b6020526040902060020161341a8682615873565b50604051696172746973744e616d6560b01b908790600080516020615ebd83398151915290600090a3505050505050565b61345533836145df565b6134715760405162461bcd60e51b8152600401610cdc906159ed565b61347d84848484614bd0565b50505050565b6060808261349081614134565b6134ac5760405162461bcd60e51b8152600401610cdc906156c2565b60408051600480825260a082019092529060208201608080368337505060408051600480825260a0820190925292955090506020820160808036833701905050915060006134f985611989565b6000818152600c6020526040812080546001820154939450909260ff600160a01b9283900481169392909104169082613533836064615b42565b61353d9190615b2b565b9050600061354b8484615b2b565b60115460135491925090600084156135c55760028801548c516001600160a01b03909116908d90839081106135825761358261592c565b6001600160a01b0390921660209283029190910190910152848b826135a681615958565b9350815181106135b8576135b861592c565b6020026020010181815250505b83156136335760018801548c516001600160a01b03909116908d90839081106135f0576135f061592c565b6001600160a01b0390921660209283029190910190910152838b8261361481615958565b9350815181106136265761362661592c565b6020026020010181815250505b821561369f576010548c516001600160a01b03909116908d908390811061365c5761365c61592c565b6001600160a01b0390921660209283029190910190910152828b8261368081615958565b9350815181106136925761369261592c565b6020026020010181815250505b811561370b576012548c516001600160a01b03909116908d90839081106136c8576136c861592c565b6001600160a01b0390921660209283029190910190910152818b826136ec81615958565b9350815181106136fe576136fe61592c565b6020026020010181815250505b80600411156137265780600403808d51038d52808c51038c52505b50505050505050505050915091565b63bd3d10e760e01b613748333083611ad4565b6137645760405162461bcd60e51b8152600401610cdc90615777565b60646137708385615b78565b11156137b95760405162461bcd60e51b81526020600482015260186024820152774d61782073756d206f66204f4e455f48554e44524544202560401b6044820152606401610cdc565b600e805460ff808616600160a01b90810260ff60a01b1993841617909355600f805491861690930291161790556040517970726f76696465725072696d61727950657263656e746167657360301b90600080516020615e9d83398151915290600090a2505050565b6000828152600c602052604090206002015482906001600160a01b0316331461385c5760405162461bcd60e51b8152600401610cdc906156f3565b605f8211156138cc5760405162461bcd60e51b815260206004820152603660248201527f4d6178206f66204152544953545f4d41585f5345434f4e444152595f524f594160448201527513151657d4115490d153951051d1481c195c98d95b9d60521b6064820152608401610cdc565b6000838152600c6020526040808220805460ff60a01b1916600160a01b60ff8716021790555170726f79616c747950657263656e7461676560781b918591600080516020615ebd8339815191529190a3505050565b60608161392d81614134565b6139495760405162461bcd60e51b8152600401610cdc906156c2565b6000600b600061395886611989565b81526020019081526020016000206006018054613974906157a7565b80601f01602080910402602001604051908101604052809291908181526020018280546139a0906157a7565b80156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b50505050509050806139fe85614c03565b604051602001613a0f929190615ba7565b6040516020818303038152906040529250505b50919050565b63cc90e72560e01b613a3b333083611ad4565b613a575760405162461bcd60e51b8152600401610cdc90615777565b828051600003613a795760405162461bcd60e51b8152600401610cdc906157db565b826001600160a01b038116613aa05760405162461bcd60e51b8152600401610cdc9061599b565b601554600160f81b900460ff1615613af35760405162461bcd60e51b81526020600482015260166024820152752732bb90383937b532b1ba39903337b93134b23232b760511b6044820152606401610cdc565b6015546001600160f81b03166000818152600c6020908152604080832060020180546001600160a01b0319166001600160a01b038a16179055600b9091529020600101613b408782615873565b506000818152600b60205260409020805465ffffff00000060ff60901b011916613d09601e1b600160901b01178155600601613b7d601682615bd6565b50613b89816001615ca2565b601580546001600160f81b0319166001600160f81b03929092169190911790556040516618dc99585d195960ca1b908290600080516020615ebd83398151915290600090a3505050505050565b63340f0e4360e21b613be9333083611ad4565b613c055760405162461bcd60e51b8152600401610cdc90615777565b817f00000000000000000000000000000000000000000000000000000000000000008110158015613c4057506015546001600160f81b031681105b613c5c5760405162461bcd60e51b8152600401610cdc90615a3b565b6000838152600b6020526040808220805460ff60881b198116600160881b9182900460ff1615909102179055516561637469766560d01b918591600080516020615ebd8339815191529190a3505050565b636d90d42360e11b613cc0333083611ad4565b613cdc5760405162461bcd60e51b8152600401610cdc90615777565b612710613ce98385615b78565b1115613d4f5760405162461bcd60e51b815260206004820152602f60248201527f4d61782073756d206f66204d41585f50524f56494445525f5345434f4e44415260448201526e595f53414c45535f4250532042505360881b6064820152608401610cdc565b601183905560138290556040517370726f76696465725365636f6e6461727942505360601b90600080516020615e9d83398151915290600090a2505050565b80613d98816142db565b613db45760405162461bcd60e51b8152600401610cdc90615718565b6000828152600c6020526040902060020154829063db2ff86160e01b906001600160a01b0316331480613ded5750613ded333083611ad4565b613e095760405162461bcd60e51b8152600401610cdc90615742565b6000848152600b602052604090208054600160301b900462ffffff16613e715760405162461bcd60e51b815260206004820152601e60248201527f746865726520617265206e6f207363726970747320746f2072656d6f766500006044820152606401610cdc565b8054613ebb906009830190600090613e9790600190600160301b900462ffffff16615cc2565b62ffffff1681526020810191909152604001600020546001600160a01b0316614b19565b80546009820190600090613edd90600190600160301b900462ffffff16615cc2565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b0319169055835462ffffff60301b198116600160301b918290048516600019019094160292909217835551651cd8dc9a5c1d60d21b918791600080516020615ebd8339815191529190a35050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600b60205260408120600781015460609283929091613fa3906147d9565b9350806008018054613fb4906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054613fe0906157a7565b801561402d5780601f106140025761010080835404028352916020019161402d565b820191906000526020600020905b81548152906001019060200180831161401057829003601f168201915b5050935496989297505050600160301b90940462ffffff169392505050565b6140546148cb565b6001600160a01b0381166140b95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cdc565b6113f881614d03565b60006123e4612ac4565b606061136d6001600160a01b0383166014614d2e565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000908152600260205260409020546001600160a01b0316151590565b6000818152600b6020526040808220805467ffffffffffffffff60481b1916600160481b426001600160401b031602179055516818dbdb5c1b195d195960ba1b918391600080516020615ebd8339815191529190a350565b6001600160a01b0382166141ff5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610cdc565b61420881614134565b156142545760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610cdc565b6001600160a01b038216600090815260036020526040812080546001929061427d908490615b78565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000817f0000000000000000000000000000000000000000000000000000000000000000811015801561431857506015546001600160f81b031681105b6143345760405162461bcd60e51b8152600401610cdc90615a3b565b6000838152600b6020526040902054600160481b90046001600160401b03168015808061436c57506224ea0061436a8342615b42565b105b95945050505050565b600080805b60208160ff1610156143d4576000868260ff166020811061439d5761439d61592c565b1a905080158015906143b2575060808160ff16105b156143cb578560ff168160ff16036143cb578260010192505b5060010161437a565b8360ff168260ff1614925050509392505050565b60006001600160e01b031982166380ac58cd60e01b148061441957506001600160e01b03198216635b5e139f60e01b145b8061136d57506301ffc9a760e01b6001600160e01b031983161461136d565b601554600160f81b900460ff166126c457601580546001600160f81b0316600160f81b179055604051733732bba83937b532b1ba39a337b93134b23232b760611b90600080516020615e9d83398151915290600090a2565b61449981614134565b6113f85760405162461bcd60e51b8152600401610cdc90615aa1565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906144ea8261244b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600f80546001600160a01b038085166001600160a01b03199283161790925560128054848416908316179055600e805487841690831617905560108054928616929091169190911790556040517570726f766964657253616c657341646472657373657360501b90600080516020615e9d83398151915290600090a250505050565b60166145b18282615873565b506040516d64656661756c744261736555524960901b90600080516020615e9d83398151915290600090a250565b6000806145eb8361244b565b9050806001600160a01b0316846001600160a01b0316148061461257506146128185613f52565b80611b785750836001600160a01b031661462b8461148d565b6001600160a01b031614949350505050565b826001600160a01b03166146508261244b565b6001600160a01b0316146146b45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610cdc565b6001600160a01b0382166147165760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610cdc565b6147216000826144b5565b6001600160a01b038316600090815260036020526040812080546001929061474a908490615b42565b90915550506001600160a01b0382166000908152600360205260408120805460019290614778908490615b78565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b606060005b828160ff16602081106147f3576147f361592c565b1a60f81b6001600160f81b03191615801590614812575060208160ff16105b15614829578061482181615cde565b9150506147de565b60405191506040820160405280825282602083015250919050565b600880546001600160a01b0383166001600160a01b031991821681179092556009805460018101825560009182527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805490921690921790556040517072616e646f6d697a65724164647265737360781b91600080516020615e9d83398151915291a250565b336148d4612ac4565b6001600160a01b0316146126c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cdc565b6149326148cb565b6126c46000614d03565b6060813b606881108061494d575080155b1561499a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e7472616374417353746f726167653a2052656164204572726f720000006044820152606401610cdc565b604080516028198301601f19168101909152606719820180825290925080606860208501863c5050919050565b816001600160a01b0316836001600160a01b031603614a245760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610cdc565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000803083604051602001614aa7929190615cfd565b60405160208183030381529060405290508051602082016000f091506001600160a01b038216613a225760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f7200006044820152606401610cdc565b6000816001600160a01b0316604051614b3d906001600160f81b0319815260010190565b6000604051808303816000865af19150503d8060008114614b7a576040519150601f19603f3d011682016040523d82523d6000602084013e614b7f565b606091505b5050905080612e715760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374417353746f726167653a2044656c657465204572726f72006044820152606401610cdc565b614bdb84848461463d565b614be784848484614ed0565b61347d5760405162461bcd60e51b8152600401610cdc90615dc5565b606081600003614c2a5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115614c545780614c3e81615958565b9150614c4d9050600a83615987565b9150614c2e565b6000816001600160401b03811115614c6e57614c6e61515d565b6040519080825280601f01601f191660200182016040528015614c98576020820181803683370190505b5090505b8415611b7857614cad600183615b42565b9150614cba600a86615e17565b614cc5906030615b78565b60f81b818381518110614cda57614cda61592c565b60200101906001600160f81b031916908160001a905350614cfc600a86615987565b9450614c9c565b614d0c816140e2565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60606000614d3d836002615b2b565b614d48906002615b78565b6001600160401b03811115614d5f57614d5f61515d565b6040519080825280601f01601f191660200182016040528015614d89576020820181803683370190505b509050600360fc1b81600081518110614da457614da461592c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614dd357614dd361592c565b60200101906001600160f81b031916908160001a9053506000614df7846002615b2b565b614e02906001615b78565b90505b6001811115614e7a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614e3657614e3661592c565b1a60f81b828281518110614e4c57614e4c61592c565b60200101906001600160f81b031916908160001a90535060049490941c93614e7381615e2b565b9050614e05565b508315614ec95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cdc565b9392505050565b60006001600160a01b0384163b15614fc657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614f14903390899088908890600401615e42565b6020604051808303816000875af1925050508015614f4f575060408051601f3d908101601f19168201909252614f4c91810190615e7f565b60015b614fac573d808015614f7d576040519150601f19603f3d011682016040523d82523d6000602084013e614f82565b606091505b508051600003614fa45760405162461bcd60e51b8152600401610cdc90615dc5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b78565b506001949350505050565b60008060408385031215614fe457600080fd5b50508035926020909101359150565b6001600160a01b03811681146113f857600080fd5b60008060006060848603121561501d57600080fd5b833561502881614ff3565b925060208401359150604084013561503f81614ff3565b809150509250925092565b6000806040838503121561505d57600080fd5b82359150602083013562ffffff8116811461507757600080fd5b809150509250929050565b6001600160e01b0319811681146113f857600080fd5b6000602082840312156150aa57600080fd5b8135614ec981615082565b60005b838110156150d05781810151838201526020016150b8565b50506000910152565b600081518084526150f18160208601602086016150b5565b601f01601f19169290920160200192915050565b602081526000614ec960208301846150d9565b60006020828403121561512a57600080fd5b5035919050565b6000806040838503121561514457600080fd5b823561514f81614ff3565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561518d5761518d61515d565b604051601f8501601f19908116603f011681019082821181831017156151b5576151b561515d565b816040528093508581528686860111156151ce57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126151f957600080fd5b614ec983833560208501615173565b6000806040838503121561521b57600080fd5b8235915060208301356001600160401b0381111561523857600080fd5b615244858286016151e8565b9150509250929050565b6000806000806080858703121561526457600080fd5b843561526f81614ff3565b9350602085013561527f81614ff3565b9250604085013561528f81614ff3565b9150606085013561529f81614ff3565b939692955090935050565b6000602082840312156152bc57600080fd5b81356001600160401b038111156152d257600080fd5b611b78848285016151e8565b6000806000606084860312156152f357600080fd5b83356152fe81614ff3565b9250602084013561530e81614ff3565b9150604084013561503f81615082565b60008060006060848603121561533357600080fd5b833561533e81614ff3565b9250602084013561534e81614ff3565b929592945050506040919091013590565b60006020828403121561537157600080fd5b8135614ec981614ff3565b60008060008060008060c0878903121561539557600080fd5b8635955060208701356153a781614ff3565b945060408701356153b781614ff3565b93506060870135925060808701356153ce81614ff3565b8092505060a087013590509295509295509295565b600080604083850312156153f657600080fd5b82359150602083013561507781614ff3565b60a08152600061541b60a08301886150d9565b828103602084015261542d81886150d9565b9050828103604084015261544181876150d9565b9050828103606084015261545581866150d9565b9050828103608084015261546981856150d9565b98975050505050505050565b6001600160a01b031991909116815260200190565b80151581146113f857600080fd5b600080604083850312156154ab57600080fd5b82356154b681614ff3565b915060208301356150778161548a565b6000806000606084860312156154db57600080fd5b833592506020840135915060408401356001600160401b038111156154ff57600080fd5b61550b868287016151e8565b9150509250925092565b6000806000806080858703121561552b57600080fd5b843561553681614ff3565b9350602085013561554681614ff3565b92506040850135915060608501356001600160401b0381111561556857600080fd5b8501601f8101871361557957600080fd5b61558887823560208401615173565b91505092959194509250565b604080825283519082018190526000906020906060840190828701845b828110156155d65781516001600160a01b0316845292840192908401906001016155b1565b5050508381038285015284518082528583019183019060005b8181101561560b578351835292840192918401916001016155ef565b5090979650505050505050565b6000806040838503121561562b57600080fd5b82356001600160401b0381111561564157600080fd5b61564d858286016151e8565b925050602083013561507781614ff3565b6000806040838503121561567157600080fd5b823561567c81614ff3565b9150602083013561507781614ff3565b60608152600061569f60608301866150d9565b82810360208401526156b181866150d9565b915050826040830152949350505050565b602080825260179082015276151bdad95b88125108191bd95cc81b9bdd08195e1a5cdd604a1b604082015260600190565b6020808252600b908201526a13db9b1e48185c9d1a5cdd60aa1b604082015260600190565b60208082526010908201526f13db9b1e481a59881d5b9b1bd8dad95960821b604082015260600190565b6020808252818101527f4f6e6c7920617274697374206f722041646d696e2041434c20616c6c6f776564604082015260600190565b60208082526016908201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b604082015260600190565b600181811c908216806157bb57607f821691505b602082108103613a2257634e487b7160e01b600052602260045260246000fd5b6020808252601b908201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b604082015260600190565b601f8211156115c457600081815260208120601f850160051c810160208610156158375750805b601f850160051c820191505b8181101561585657828155600101615843565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561588c5761588c61515d565b6158a08161589a84546157a7565b84615810565b602080601f8311600181146158cf57600084156158bd5750858301515b6158c7858261585e565b865550615856565b600085815260208120601f198616915b828110156158fe578886015182559484019460019091019084016158df565b508582101561591c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161596a5761596a615942565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261599657615996615971565b500490565b6020808252601b908201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b604082015260600190565b6000602082840312156159e257600080fd5b8151614ec98161548a565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b602080825260199082015278141c9bda9958dd08125108191bd95cc81b9bdd08195e1a5cdd603a1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60208082526038908201527f4f6e6c792041646d696e2041434c20616c6c6f7765642c206f722061727469736040820152771d081a59881bdddb995c881a185cc81c995b9bdd5b98d95960421b606082015260800190565b808202811582820484141761136d5761136d615942565b8181038181111561136d5761136d615942565b62ffffff818116838216019080821115615b7157615b71615942565b5092915050565b8082018082111561136d5761136d615942565b60008151615b9d8185602086016150b5565b9290920192915050565b60008351615bb98184602088016150b5565b835190830190615bcd8183602088016150b5565b01949350505050565b818103615be1575050565b615beb82546157a7565b6001600160401b03811115615c0257615c0261515d565b615c108161589a84546157a7565b6000601f821160018114615c3e5760008315615c2c5750848201545b615c36848261585e565b855550611229565b600085815260209020601f19841690600086815260209020845b83811015615c785782860154825560019586019590910190602001615c58565b508583101561591c5793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160f81b03818116838216019080821115615b7157615b71615942565b62ffffff828116828216039080821115615b7157615b71615942565b600060ff821660ff8103615cf457615cf4615942565b60010192915050565b6a600b5981380380925939f360a81b81526b1808181218000e5800144cc560a21b600b8201526330082bff60e11b60178201526416d8004d8560da1b601b82015263300cabff60e11b6020820152635b60003560e01b6024820152617fff60f01b6028820152600060488201819052600560fa1b6049830152633021abff60e11b604a830152645b600051ff60d81b604e830152615da26053830160008152600c0190565b615db8818660601b6001600160601b0319169052565b61436c6014820185615b8b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615e2657615e26615971565b500690565b600081615e3a57615e3a615942565b506000190190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615e75908301846150d9565b9695505050505050565b600060208284031215615e9157600080fd5b8151614ec98161508256fe8b810f233ce7ee6e962ab4d98bf0277751de1f5589de3dcc812ac2047994d009b96a30340e86d03ce4be42f94ac02d7b27b4a4cdae942beb69026718dfe66afca264697066735822122013893f651d2b01af685226cb564725a3a1a78405ddb64681421a0b07846f70ed64736f6c634300081100338b810f233ce7ee6e962ab4d98bf0277751de1f5589de3dcc812ac2047994d0094d75737420696e707574206e6f6e2d7a65726f20616464726573730000000000",
1939
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104145760003560e01c8063715018a611610223578063b75395e01161012c578063b75395e014610a4d578063b7b04fae14610a60578063b88d4fde14610a73578063b971136814610a86578063bb3bafd614610a8e578063bd3d10e714610aaf578063c34a03b514610ac2578063c6c7c5bf14610ad5578063c87b56dd14610ae8578063cc90e72514610afb578063d03c390c14610b0e578063db21a84614610b21578063db2ff86114610b34578063e6032df214610b47578063e935b7b114610b6e578063e985e9c514610b7f578063eb9cd5d414610b92578063ed8abfda14610bb4578063f2fde38b14610bde578063f313d73314610bf1578063f851a44014610c87578063f893c07b14610c8f57600080fd5b8063715018a61461081757806376ee6fab1461081f5780638639415b146108325780638c3c9cdd1461088d5780638da5cb5b146108a05780638dd91a56146108a857806392f00233146108cc57806395d89b41146108df5780639a02e4fa146108e7578063a11ec70a1461091e578063a22cb46514610931578063a3b2cca614610944578063a47d29cb14610957578063abcbb7b414610983578063ac11fa1c1461098b578063acad0124146109ab578063acd4c66f146109be578063ad0305ce146109d0578063ad2cdfc4146109f2578063ae45ad9814610a1f578063b1656ba314610a27578063b168762214610a3a57600080fd5b806328ec8f501161032557806328ec8f501461063c5780632b274166146106695780632b65e67d1461067c5780632b8258c51461068f5780632d9c02051461069857806330ef4c5f146106ab57806336c7c12c146106bd57806337859963146106d057806338c8e468146106e35780633bb225531461070f5780633e48e8481461071857806341814cd31461072b57806342842e0e1461073e57806348337282146107515780634e1d64af146107645780635508fd521461076c57806358b9a5a914610780578063621a1f74146107b85780636352211e146107cb57806369d14faf146107de5780636c907b7f146107f157806370a082311461080457600080fd5b80611e3c146104195780615de51461042e5780630132c6971461045457806301856fd41461046757806301ffc9a71461047a57806304143a5c1461049d57806306fdde03146104a5578063081812fc146104ba578063095ea7b3146104e55780630d170673146104f85780630e79c9281461050b5780630ea5613f1461051e5780630ebeb0ee1461056857806317df5366146105915780631ab6014c146105a45780631b689c0b146105b75780631c05cad7146105ca5780631e9bef46146105dd5780632302cbda146105f0578063230448b11461060357806323b872dd1461061657806325b75d6814610629575b600080fd5b61042c610427366004614fd1565b610cb6565b005b61044161043c366004615008565b610e08565b6040519081526020015b60405180910390f35b61042c61046236600461504a565b6110ac565b61042c610475366004614fd1565b611230565b61048d610488366004615098565b611348565b604051901515815260200161044b565b61042c611373565b6104ad6113fb565b60405161044b9190615105565b6104cd6104c8366004615118565b61148d565b6040516001600160a01b03909116815260200161044b565b61042c6104f3366004615131565b6114b4565b61042c610506366004615208565b6115c9565b61042c610519366004615208565b6116ac565b61053161052c366004615118565b611926565b60408051968752602087019590955292151593850193909352151560608401526080830191909152151560a082015260c00161044b565b6104cd610576366004615118565b6000908152600c60205260409020546001600160a01b031690565b6007546104cd906001600160a01b031681565b600f546104cd906001600160a01b031681565b6104416105c5366004615118565b611989565b61042c6105d836600461524e565b611998565b600a546104cd906001600160a01b031681565b61042c6105fe3660046152aa565b611a7a565b61048d6106113660046152de565b611ad4565b61042c61062436600461531e565b611b80565b61042c610637366004615208565b611bb1565b61044161064a366004615118565b6000908152600c6020526040902060010154600160a01b900460ff1690565b61042c61067736600461535f565b611c97565b61042c61068a36600461537c565b611d42565b61044160135481565b6104ad6106a6366004615118565b612149565b600f54600160a01b900460ff16610441565b6008546104cd906001600160a01b031681565b61042c6106de366004615208565b6121ee565b6104cd6106f1366004615118565b6000908152600c60205260409020600101546001600160a01b031690565b61044160115481565b61042c610726366004615208565b61226f565b6010546104cd906001600160a01b031681565b61042c61074c36600461531e565b612313565b61042c61075f36600461535f565b61232e565b6104ad6123d0565b60155461048d90600160f81b900460ff1681565b6104cd61078e366004614fd1565b6000918252600b60209081526040808420928452600990920190529020546001600160a01b031690565b6104416107c6366004615118565b6123e9565b6104cd6107d9366004615118565b61244b565b61042c6107ec3660046153e3565b612480565b61042c6107ff36600461535f565b6125c7565b61044161081236600461535f565b612626565b61042c6126ac565b61042c61082d36600461537c565b6126c6565b610845610840366004614fd1565b61295c565b604080519889526001600160a01b0397881660208a015288019590955292851660608701526080860191909152831660a085015260c08401521660e08201526101000161044b565b6104ad61089b366004614fd1565b612a65565b6104cd612ac4565b6108bb6108b6366004615118565b612ad8565b60405161044b959493929190615408565b6014546104cd906001600160a01b031681565b6104ad612dcc565b6109116108f5366004615118565b600090815260026020526040902054600160a01b900460a01b90565b60405161044b9190615475565b61042c61092c366004615118565b612ddb565b61042c61093f366004615498565b612e66565b61042c610952366004615208565b612e75565b6104cd610965366004615118565b6000908152600c60205260409020600201546001600160a01b031690565b6104ad612f61565b610441610999366004615118565b600d6020526000908152604090205481565b61042c6109b9366004615208565b612fef565b600e54600160a01b900460ff16610441565b61048d6109de36600461535f565b6014546001600160a01b0390811691161490565b610441610a00366004615118565b6000908152600c6020526040902060020154600160a01b900460ff1690565b6104ad613140565b61042c610a353660046154c6565b613164565b6104cd610a48366004615118565b6132ea565b600e546104cd906001600160a01b031681565b61042c610a6e366004615208565b613362565b61042c610a81366004615515565b61344b565b600954610441565b610aa1610a9c366004615118565b613483565b60405161044b929190615594565b61042c610abd366004614fd1565b613735565b61042c610ad0366004614fd1565b613821565b6012546104cd906001600160a01b031681565b6104ad610af6366004615118565b613921565b61042c610b09366004615618565b613a28565b61042c610b1c366004615118565b613bd6565b61042c610b2f366004614fd1565b613cad565b61042c610b42366004615118565b613d8e565b61048d7f000000000000000000000000000000000000000000000000000000000000000081565b6015546001600160f81b0316610441565b61048d610b8d36600461565e565b613f52565b610ba5610ba0366004615118565b613f80565b60405161044b9392919061568c565b610441610bc2366004615118565b6000908152600c6020526040902054600160a01b900460ff1690565b61042c610bec36600461535f565b61404c565b610c49610bff366004615118565b6000908152600c60205260409020600281015481546001909201546001600160a01b03808316948482169460ff600160a01b95869004811695938516948490048116939091041690565b604080516001600160a01b039788168152958716602087015285019390935293166060830152608082019290925260a081019190915260c00161044b565b6104cd6140c2565b6104417f000000000000000000000000000000000000000000000000000000000000000081565b81610cc081614134565b610ce55760405162461bcd60e51b8152600401610cdc906156c2565b60405180910390fd5b60008381526002602052604090206008546001600160a01b03163314610d475760405162461bcd60e51b815260206004820152601760248201527613db9b1e481c985b991bdb5a5e995c881b585e481cd95d604a1b6044820152606401610cdc565b8054600160a01b900460a01b6001600160a01b03191615610da35760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881a185cda08185b1c9958591e481cd95d60521b6044820152606401610cdc565b82610de45760405162461bcd60e51b8152602060048201526011602482015270139bc81e995c9bc81a185cda081cd95959607a1b6044820152606401610cdc565b805460a09390931c600160a01b026001600160a01b03909316929092179091555050565b6014546000906001600160a01b03163314610e655760405162461bcd60e51b815260206004820152601e60248201527f4d757374206d696e742066726f6d206d696e74657220636f6e747261637400006044820152606401610cdc565b6000838152600b60205260409020805462ffffff808216916001830191630100000090910416808310610eda5760405162461bcd60e51b815260206004820152601f60248201527f4d757374206e6f7420657863656564206d617820696e766f636174696f6e73006044820152606401610cdc565b8354600160881b900460ff1680610f0d57506000878152600c60205260409020600201546001600160a01b038781169116145b610f595760405162461bcd60e51b815260206004820181905260248201527f50726f6a656374206d75737420657869737420616e64206265206163746976656044820152606401610cdc565b8354600160901b900460ff161580610f8d57506000878152600c60205260409020600201546001600160a01b038781169116145b610fd15760405162461bcd60e51b8152602060048201526015602482015274283ab931b430b9b2b99030b932903830bab9b2b21760591b6044820152606401610cdc565b835462ffffff191662ffffff8381169182178655848116620f42408a02019190831690036110025761100288614151565b61100c89826141a9565b600854604051635b140b8d60e11b8152600481018390526001600160a01b039091169063b628171a90602401600060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b50506040518392506001600160a01b038c1691507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688590600090a398975050505050505050565b6000828152600c602052604090206002015482906001600160a01b031633146110e75760405162461bcd60e51b8152600401610cdc906156f3565b6000838152600b60205260409020805462ffffff80821691630100000090048116908516106111645760405162461bcd60e51b8152602060048201526024808201527f6d6178496e766f636174696f6e73206d6179206f6e6c79206265206465637265604482015263185cd95960e21b6064820152608401610cdc565b808462ffffff1610156111ce5760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c79206d617820696e766f636174696f6e73206774652063757272656e7460448201526b20696e766f636174696f6e7360a01b6064820152608401610cdc565b815465ffffff0000001916630100000062ffffff8616021782556040516d6d6178496e766f636174696f6e7360901b908690600080516020615ebd83398151915290600090a3808462ffffff16036112295761122985614151565b5050505050565b8161123a816142db565b6112565760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c6020526040902060020154839062615bf560e21b906001600160a01b031633148061128e575061128e333083611ad4565b6112aa5760405162461bcd60e51b8152600401610cdc90615742565b6000858152600b602052604090819020906112c89086906001614375565b6113115760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b6044820152606401610cdc565b60078101859055604051697363726970745479706560b01b908790600080516020615ebd83398151915290600090a3505050505050565b60006001600160e01b03198216635d9dd7eb60e11b148061136d575061136d826143e8565b92915050565b6301050e9760e21b611386333083611ad4565b6113a25760405162461bcd60e51b8152600401610cdc90615777565b601554600160f81b900460ff16156113f05760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903337b93134b23232b760791b6044820152606401610cdc565b6113f8614438565b50565b60606000805461140a906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611436906157a7565b80156114835780601f1061145857610100808354040283529160200191611483565b820191906000526020600020905b81548152906001019060200180831161146657829003601f168201915b5050505050905090565b600061149882614490565b506000908152600460205260409020546001600160a01b031690565b60006114bf8261244b565b9050806001600160a01b0316836001600160a01b03160361152c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610cdc565b336001600160a01b038216148061154857506115488133613f52565b6115ba5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610cdc565b6115c483836144b5565b505050565b816115d3816142db565b6115ef5760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c60205260409020600201548390630d17067360e01b906001600160a01b03163314806116285750611628333083611ad4565b6116445760405162461bcd60e51b8152600401610cdc90615742565b8380516000036116665760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b602052604090206001016116818682615873565b50604051636e616d6560e01b908790600080516020615ebd83398151915290600090a3505050505050565b816116b6816142db565b6116d25760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c602052604090206002015483906301cf392560e31b906001600160a01b031633148061170b575061170b333083611ad4565b6117275760405162461bcd60e51b8152600401610cdc90615742565b8380516000036117495760405162461bcd60e51b8152600401610cdc906157db565b84518590600b81111561179d5760405162461bcd60e51b815260206004820152601c60248201527b41737065637420726174696f20666f726d617420746f6f206c6f6e6760201b6044820152606401610cdc565b60008060005b838110156118895760008582815181106117bf576117bf61592c565b01602001516001600160f81b0319169050600360fc1b81108015906117f25750603960f81b6001600160f81b0319821611155b15611801576001925050611877565b6001600160f81b03198116601760f91b036118255783611825576001935050611877565b60405162461bcd60e51b815260206004820152602160248201527f496d70726f7065726c7920666f726d61747465642061737065637420726174696044820152606f60f81b6064820152608401610cdc565b8061188181615958565b9150506117a3565b50806118d55760405162461bcd60e51b815260206004820152601b60248201527a41737065637420726174696f20686173206e6f206e756d6265727360281b6044820152606401610cdc565b60008a8152600b602052604090206008016118f08a82615873565b506040516a617370656374526174696f60a81b908b90600080516020615ebd83398151915290600090a350505050505050505050565b6000818152600b60205260408120805462ffffff808216936301000000830490911692600160881b830460ff90811693600160901b810490911692600160481b9091046001600160401b03169161197c886142db565b1591505091939550919395565b600061136d620f424083615987565b631c05cad760e01b6119ab333083611ad4565b6119c75760405162461bcd60e51b8152600401610cdc90615777565b846001600160a01b0381166119ee5760405162461bcd60e51b8152600401610cdc9061599b565b846001600160a01b038116611a155760405162461bcd60e51b8152600401610cdc9061599b565b846001600160a01b038116611a3c5760405162461bcd60e51b8152600401610cdc9061599b565b846001600160a01b038116611a635760405162461bcd60e51b8152600401610cdc9061599b565b611a6f89898989614523565b505050505050505050565b63118165ed60e11b611a8d333083611ad4565b611aa95760405162461bcd60e51b8152600401610cdc90615777565b818051600003611acb5760405162461bcd60e51b8152600401610cdc906157db565b6115c4836145a5565b600080611adf612ac4565b6001600160a01b031614158015611b785750600a546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af1158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7891906159d0565b949350505050565b611b8a33826145df565b611ba65760405162461bcd60e51b8152600401610cdc906159ed565b6115c483838361463d565b81611bbb816142db565b611bd75760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c602052604090206002015483906304b6ebad60e31b906001600160a01b0316331480611c105750611c10333083611ad4565b611c2c5760405162461bcd60e51b8152600401610cdc90615742565b838051600003611c4e5760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b60205260409020600501611c698682615873565b50604051666c6963656e736560c81b908790600080516020615ebd83398151915290600090a3505050505050565b631593a0b360e11b611caa333083611ad4565b611cc65760405162461bcd60e51b8152600401610cdc90615777565b816001600160a01b038116611ced5760405162461bcd60e51b8152600401610cdc9061599b565b600780546001600160a01b0319166001600160a01b03851617905560405178646570656e64656e637952656769737472794164647265737360381b90600080516020615e9d83398151915290600090a2505050565b857f00000000000000000000000000000000000000000000000000000000000000008110158015611d7d57506015546001600160f81b031681105b611d995760405162461bcd60e51b8152600401610cdc90615a3b565b6000878152600c602052604090206002015487906001600160a01b03163314611dd45760405162461bcd60e51b8152600401610cdc906156f3565b866001600160a01b038116611dfb5760405162461bcd60e51b8152600401610cdc9061599b565b6000898152600c6020526040902060648711801590611e1b575060648511155b611e555760405162461bcd60e51b815260206004820152600b60248201526a4d6178206f66203130302560a81b6044820152606401610cdc565b861580611e6a57506001600160a01b03881615155b611eb65760405162461bcd60e51b815260206004820152601d60248201527f5072696d617279207061796565206973207a65726f20616464726573730000006044820152606401610cdc565b841580611ecb57506001600160a01b03861615155b611f175760405162461bcd60e51b815260206004820152601f60248201527f5365636f6e64617279207061796565206973207a65726f2061646472657373006044820152606401610cdc565b897f6ff7d102bb3657a26dcbbcd299d821a066718a7cf76ae7cd98279f18b74da8ac8a8a8a8a8a604051611f4f959493929190615a6e565b60405180910390a27f000000000000000000000000000000000000000000000000000000000000000080611ff557600282015482546001600160a01b039182168c831614916000918116908c161480611faf57506001600160a01b038b16155b60018501549091506000906001600160a01b038b811691161480611fda57506001600160a01b038a16155b9050828015611fe65750815b8015611fef5750805b93505050505b80156120fd576000801b600d60008d815260200190815260200160002081905550898260020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550888260000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550878260020160146101000a81548160ff021916908360ff160217905550868260010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858260010160146101000a81548160ff021916908360ff1602179055508a7fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a261213c565b8989898989604051602001612116959493929190615a6e565b60408051601f19818403018152918152815160209283012060008e8152600d9093529120555b5050505050505050505050565b6000818152600b60205260409020600601805460609190612169906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612195906157a7565b80156121e25780601f106121b7576101008083540402835291602001916121e2565b820191906000526020600020905b8154815290600101906020018083116121c557829003601f168201915b50505050509050919050565b6000828152600c602052604090206002015482906001600160a01b031633146122295760405162461bcd60e51b8152600401610cdc906156f3565b6000838152600b602052604090206004016122448382615873565b50604051667765627369746560c81b908490600080516020615ebd83398151915290600090a3505050565b6000828152600c602052604090206002015482906001600160a01b031633146122aa5760405162461bcd60e51b8152600401610cdc906156f3565b8180516000036122cc5760405162461bcd60e51b8152600401610cdc906157db565b6000848152600b602052604090206006016122e78482615873565b50604051666261736555524960c81b908590600080516020615ebd83398151915290600090a350505050565b6115c48383836040518060200160405280600081525061344b565b632419b94160e11b612341333083611ad4565b61235d5760405162461bcd60e51b8152600401610cdc90615777565b816001600160a01b0381166123845760405162461bcd60e51b8152600401610cdc9061599b565b601480546001600160a01b0319166001600160a01b0385169081179091556040517fad0f299ec81a386c98df0ac27dae11dd020ed1b56963c53a7292e7a3a314539a90600090a2505050565b60606123e46576332e312e3160d01b6147d9565b905090565b600081815260026020526040812054600160a01b900460a01b6001600160a01b03198116820361241c5750600092915050565b8060405160200161242d9190615475565b60405160208183030381529060405280519060200120915050919050565b6000818152600260205260408120546001600160a01b03168061136d5760405162461bcd60e51b8152600401610cdc90615aa1565b817f000000000000000000000000000000000000000000000000000000000000000081101580156124bb57506015546001600160f81b031681105b6124d75760405162461bcd60e51b8152600401610cdc90615a3b565b826369d14faf60e01b6124eb333083611ad4565b8061252a575060006124fb612ac4565b6001600160a01b031614801561252a57506000828152600c60205260409020600201546001600160a01b031633145b6125465760405162461bcd60e51b8152600401610cdc90615ad3565b836001600160a01b03811661256d5760405162461bcd60e51b8152600401610cdc9061599b565b6000868152600c602052604080822060020180546001600160a01b0319166001600160a01b038916179055516c6172746973744164647265737360981b918891600080516020615ebd8339815191529190a3505050505050565b636c907b7f60e01b6125da333083611ad4565b6125f65760405162461bcd60e51b8152600401610cdc90615777565b816001600160a01b03811661261d5760405162461bcd60e51b8152600401610cdc9061599b565b6115c483614844565b60006001600160a01b0382166126905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610cdc565b506001600160a01b031660009081526003602052604090205490565b6126b46148cb565b6126bc614438565b6126c461492a565b565b857f0000000000000000000000000000000000000000000000000000000000000000811015801561270157506015546001600160f81b031681105b61271d5760405162461bcd60e51b8152600401610cdc90615a3b565b866376ee6fab60e01b612731333083611ad4565b8061277057506000612741612ac4565b6001600160a01b031614801561277057506000828152600c60205260409020600201546001600160a01b031633145b61278c5760405162461bcd60e51b8152600401610cdc90615ad3565b876001600160a01b0381166127b35760405162461bcd60e51b8152600401610cdc9061599b565b88888888886040516020016127cc959493929190615a6e565b60408051601f19818403018152918152815160209283012060008d8152600d9093529120541461283b5760405162461bcd60e51b815260206004820152601a602482015279135d5cdd081b585d18da08185c9d1a5cdd081c1c9bdc1bdcd85b60321b6044820152606401610cdc565b6000600c60008c81526020019081526020016000209050898160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550888160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550878160020160146101000a81548160ff021916908360ff160217905550868160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160010160146101000a81548160ff021916908360ff1602179055506000801b600d60008d8152602001908152602001600020819055508a7fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a25050505050505050505050565b6000828152600c60205260408120600e548291829182918291829182918291908a9060649061299590600160a01b900460ff1683615b2b565b61299f9190615987565b99506129ab8a82615b42565b600f549091506064906129c890600160a01b900460ff168d615b2b565b6129d29190615987565b97506129de8882615b42565b60028301549091506064906129fd90600160a01b900460ff1683615b2b565b612a079190615987565b9350612a138482615b42565b600e54600f546001600160a01b039182169b5016975095508515612a425760028201546001600160a01b031694505b8315612a565781546001600160a01b031692505b50509295985092959890939650565b6000828152600b60205260409020805460609190600160301b900462ffffff168310612aa157505060408051602081019091526000815261136d565b6000838152600982016020526040902054611b78906001600160a01b031661493c565b60006123e46006546001600160a01b031690565b60608060608060606000600b60008881526020019081526020016000209050806001018054612b06906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612b32906157a7565b8015612b7f5780601f10612b5457610100808354040283529160200191612b7f565b820191906000526020600020905b815481529060010190602001808311612b6257829003601f168201915b50505050509550806002018054612b95906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612bc1906157a7565b8015612c0e5780601f10612be357610100808354040283529160200191612c0e565b820191906000526020600020905b815481529060010190602001808311612bf157829003601f168201915b50505050509450806003018054612c24906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612c50906157a7565b8015612c9d5780601f10612c7257610100808354040283529160200191612c9d565b820191906000526020600020905b815481529060010190602001808311612c8057829003601f168201915b50505050509350806004018054612cb3906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612cdf906157a7565b8015612d2c5780601f10612d0157610100808354040283529160200191612d2c565b820191906000526020600020905b815481529060010190602001808311612d0f57829003601f168201915b50505050509250806005018054612d42906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612d6e906157a7565b8015612dbb5780601f10612d9057610100808354040283529160200191612dbb565b820191906000526020600020905b815481529060010190602001808311612d9e57829003601f168201915b505050505091505091939590929450565b60606001805461140a906157a7565b6000818152600c602052604090206002015481906001600160a01b03163314612e165760405162461bcd60e51b8152600401610cdc906156f3565b6000828152600b6020526040808220805460ff60901b198116600160901b9182900460ff161590910217905551651c185d5cd95960d21b918491600080516020615ebd8339815191529190a35050565b612e713383836149c7565b5050565b612e7e826142db565b612e9957612e9433306351d9665360e11b611ad4565b612eb7565b6000828152600c60205260409020600201546001600160a01b031633145b612f185760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c7920617274697374207768656e20756e6c6f636b65642c206f776e657260448201526b081dda195b881b1bd8dad95960a21b6064820152608401610cdc565b6000828152600b60205260409020600301612f338282615873565b506040516a3232b9b1b934b83a34b7b760a91b908390600080516020615ebd83398151915290600090a35050565b60168054612f6e906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054612f9a906157a7565b8015612fe75780601f10612fbc57610100808354040283529160200191612fe7565b820191906000526020600020905b815481529060010190602001808311612fca57829003601f168201915b505050505081565b81612ff9816142db565b6130155760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c60205260409020600201548390632b2b404960e21b906001600160a01b031633148061304e575061304e333083611ad4565b61306a5760405162461bcd60e51b8152600401610cdc90615742565b83805160000361308c5760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b602052604090206130a386614a91565b8154600160301b9081900462ffffff9081166000908152600985016020526040902080546001600160a01b0319166001600160a01b03949094169390931790925582546130f592919004166001615b55565b815462ffffff91909116600160301b0262ffffff60301b19909116178155604051651cd8dc9a5c1d60d21b908890600080516020615ebd83398151915290600090a350505050505050565b60606123e47547656e417274373231436f726556335f456e67696e6560501b6147d9565b8261316e816142db565b61318a5760405162461bcd60e51b8152600401610cdc90615718565b6000848152600c6020526040902060020154849063b1656ba360e01b906001600160a01b03163314806131c357506131c3333083611ad4565b6131df5760405162461bcd60e51b8152600401610cdc90615742565b8380516000036132015760405162461bcd60e51b8152600401610cdc906157db565b6000878152600b602052604090208054600160301b900462ffffff1687106132635760405162461bcd60e51b81526020600482015260156024820152747363726970744964206f7574206f662072616e676560581b6044820152606401610cdc565b6000878152600982016020526040902054613286906001600160a01b0316614b19565b61328f86614a91565b600088815260098301602052604080822080546001600160a01b0319166001600160a01b0394909416939093179092559051651cd8dc9a5c1d60d21b918a91600080516020615ebd8339815191529190a35050505050505050565b60095460009082106133345760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610cdc565b600982815481106133475761334761592c565b6000918252602090912001546001600160a01b031692915050565b8161336c816142db565b6133885760405162461bcd60e51b8152600401610cdc90615718565b6000838152600c60205260409020600201548390635bd827d760e11b906001600160a01b03163314806133c157506133c1333083611ad4565b6133dd5760405162461bcd60e51b8152600401610cdc90615742565b8380516000036133ff5760405162461bcd60e51b8152600401610cdc906157db565b6000868152600b6020526040902060020161341a8682615873565b50604051696172746973744e616d6560b01b908790600080516020615ebd83398151915290600090a3505050505050565b61345533836145df565b6134715760405162461bcd60e51b8152600401610cdc906159ed565b61347d84848484614bd0565b50505050565b6060808261349081614134565b6134ac5760405162461bcd60e51b8152600401610cdc906156c2565b60408051600480825260a082019092529060208201608080368337505060408051600480825260a0820190925292955090506020820160808036833701905050915060006134f985611989565b6000818152600c6020526040812080546001820154939450909260ff600160a01b9283900481169392909104169082613533836064615b42565b61353d9190615b2b565b9050600061354b8484615b2b565b60115460135491925090600084156135c55760028801548c516001600160a01b03909116908d90839081106135825761358261592c565b6001600160a01b0390921660209283029190910190910152848b826135a681615958565b9350815181106135b8576135b861592c565b6020026020010181815250505b83156136335760018801548c516001600160a01b03909116908d90839081106135f0576135f061592c565b6001600160a01b0390921660209283029190910190910152838b8261361481615958565b9350815181106136265761362661592c565b6020026020010181815250505b821561369f576010548c516001600160a01b03909116908d908390811061365c5761365c61592c565b6001600160a01b0390921660209283029190910190910152828b8261368081615958565b9350815181106136925761369261592c565b6020026020010181815250505b811561370b576012548c516001600160a01b03909116908d90839081106136c8576136c861592c565b6001600160a01b0390921660209283029190910190910152818b826136ec81615958565b9350815181106136fe576136fe61592c565b6020026020010181815250505b80600411156137265780600403808d51038d52808c51038c52505b50505050505050505050915091565b63bd3d10e760e01b613748333083611ad4565b6137645760405162461bcd60e51b8152600401610cdc90615777565b60646137708385615b78565b11156137b95760405162461bcd60e51b81526020600482015260186024820152774d61782073756d206f66204f4e455f48554e44524544202560401b6044820152606401610cdc565b600e805460ff808616600160a01b90810260ff60a01b1993841617909355600f805491861690930291161790556040517970726f76696465725072696d61727950657263656e746167657360301b90600080516020615e9d83398151915290600090a2505050565b6000828152600c602052604090206002015482906001600160a01b0316331461385c5760405162461bcd60e51b8152600401610cdc906156f3565b605f8211156138cc5760405162461bcd60e51b815260206004820152603660248201527f4d6178206f66204152544953545f4d41585f5345434f4e444152595f524f594160448201527513151657d4115490d153951051d1481c195c98d95b9d60521b6064820152608401610cdc565b6000838152600c6020526040808220805460ff60a01b1916600160a01b60ff8716021790555170726f79616c747950657263656e7461676560781b918591600080516020615ebd8339815191529190a3505050565b60608161392d81614134565b6139495760405162461bcd60e51b8152600401610cdc906156c2565b6000600b600061395886611989565b81526020019081526020016000206006018054613974906157a7565b80601f01602080910402602001604051908101604052809291908181526020018280546139a0906157a7565b80156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b50505050509050806139fe85614c03565b604051602001613a0f929190615ba7565b6040516020818303038152906040529250505b50919050565b63cc90e72560e01b613a3b333083611ad4565b613a575760405162461bcd60e51b8152600401610cdc90615777565b828051600003613a795760405162461bcd60e51b8152600401610cdc906157db565b826001600160a01b038116613aa05760405162461bcd60e51b8152600401610cdc9061599b565b601554600160f81b900460ff1615613af35760405162461bcd60e51b81526020600482015260166024820152752732bb90383937b532b1ba39903337b93134b23232b760511b6044820152606401610cdc565b6015546001600160f81b03166000818152600c6020908152604080832060020180546001600160a01b0319166001600160a01b038a16179055600b9091529020600101613b408782615873565b506000818152600b60205260409020805465ffffff00000060ff60901b011916613d09601e1b600160901b01178155600601613b7d601682615bd6565b50613b89816001615ca2565b601580546001600160f81b0319166001600160f81b03929092169190911790556040516618dc99585d195960ca1b908290600080516020615ebd83398151915290600090a3505050505050565b63340f0e4360e21b613be9333083611ad4565b613c055760405162461bcd60e51b8152600401610cdc90615777565b817f00000000000000000000000000000000000000000000000000000000000000008110158015613c4057506015546001600160f81b031681105b613c5c5760405162461bcd60e51b8152600401610cdc90615a3b565b6000838152600b6020526040808220805460ff60881b198116600160881b9182900460ff1615909102179055516561637469766560d01b918591600080516020615ebd8339815191529190a3505050565b636d90d42360e11b613cc0333083611ad4565b613cdc5760405162461bcd60e51b8152600401610cdc90615777565b612710613ce98385615b78565b1115613d4f5760405162461bcd60e51b815260206004820152602f60248201527f4d61782073756d206f66204d41585f50524f56494445525f5345434f4e44415260448201526e595f53414c45535f4250532042505360881b6064820152608401610cdc565b601183905560138290556040517370726f76696465725365636f6e6461727942505360601b90600080516020615e9d83398151915290600090a2505050565b80613d98816142db565b613db45760405162461bcd60e51b8152600401610cdc90615718565b6000828152600c6020526040902060020154829063db2ff86160e01b906001600160a01b0316331480613ded5750613ded333083611ad4565b613e095760405162461bcd60e51b8152600401610cdc90615742565b6000848152600b602052604090208054600160301b900462ffffff16613e715760405162461bcd60e51b815260206004820152601e60248201527f746865726520617265206e6f207363726970747320746f2072656d6f766500006044820152606401610cdc565b8054613ebb906009830190600090613e9790600190600160301b900462ffffff16615cc2565b62ffffff1681526020810191909152604001600020546001600160a01b0316614b19565b80546009820190600090613edd90600190600160301b900462ffffff16615cc2565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b0319169055835462ffffff60301b198116600160301b918290048516600019019094160292909217835551651cd8dc9a5c1d60d21b918791600080516020615ebd8339815191529190a35050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600b60205260408120600781015460609283929091613fa3906147d9565b9350806008018054613fb4906157a7565b80601f0160208091040260200160405190810160405280929190818152602001828054613fe0906157a7565b801561402d5780601f106140025761010080835404028352916020019161402d565b820191906000526020600020905b81548152906001019060200180831161401057829003601f168201915b5050935496989297505050600160301b90940462ffffff169392505050565b6140546148cb565b6001600160a01b0381166140b95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cdc565b6113f881614d03565b60006123e4612ac4565b606061136d6001600160a01b0383166014614d2e565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000908152600260205260409020546001600160a01b0316151590565b6000818152600b6020526040808220805467ffffffffffffffff60481b1916600160481b426001600160401b031602179055516818dbdb5c1b195d195960ba1b918391600080516020615ebd8339815191529190a350565b6001600160a01b0382166141ff5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610cdc565b61420881614134565b156142545760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610cdc565b6001600160a01b038216600090815260036020526040812080546001929061427d908490615b78565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000817f0000000000000000000000000000000000000000000000000000000000000000811015801561431857506015546001600160f81b031681105b6143345760405162461bcd60e51b8152600401610cdc90615a3b565b6000838152600b6020526040902054600160481b90046001600160401b03168015808061436c57506224ea0061436a8342615b42565b105b95945050505050565b600080805b60208160ff1610156143d4576000868260ff166020811061439d5761439d61592c565b1a905080158015906143b2575060808160ff16105b156143cb578560ff168160ff16036143cb578260010192505b5060010161437a565b8360ff168260ff1614925050509392505050565b60006001600160e01b031982166380ac58cd60e01b148061441957506001600160e01b03198216635b5e139f60e01b145b8061136d57506301ffc9a760e01b6001600160e01b031983161461136d565b601554600160f81b900460ff166126c457601580546001600160f81b0316600160f81b179055604051733732bba83937b532b1ba39a337b93134b23232b760611b90600080516020615e9d83398151915290600090a2565b61449981614134565b6113f85760405162461bcd60e51b8152600401610cdc90615aa1565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906144ea8261244b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600f80546001600160a01b038085166001600160a01b03199283161790925560128054848416908316179055600e805487841690831617905560108054928616929091169190911790556040517570726f766964657253616c657341646472657373657360501b90600080516020615e9d83398151915290600090a250505050565b60166145b18282615873565b506040516d64656661756c744261736555524960901b90600080516020615e9d83398151915290600090a250565b6000806145eb8361244b565b9050806001600160a01b0316846001600160a01b0316148061461257506146128185613f52565b80611b785750836001600160a01b031661462b8461148d565b6001600160a01b031614949350505050565b826001600160a01b03166146508261244b565b6001600160a01b0316146146b45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610cdc565b6001600160a01b0382166147165760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610cdc565b6147216000826144b5565b6001600160a01b038316600090815260036020526040812080546001929061474a908490615b42565b90915550506001600160a01b0382166000908152600360205260408120805460019290614778908490615b78565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b606060005b828160ff16602081106147f3576147f361592c565b1a60f81b6001600160f81b03191615801590614812575060208160ff16105b15614829578061482181615cde565b9150506147de565b60405191506040820160405280825282602083015250919050565b600880546001600160a01b0383166001600160a01b031991821681179092556009805460018101825560009182527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805490921690921790556040517072616e646f6d697a65724164647265737360781b91600080516020615e9d83398151915291a250565b336148d4612ac4565b6001600160a01b0316146126c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cdc565b6149326148cb565b6126c46000614d03565b6060813b606881108061494d575080155b1561499a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e7472616374417353746f726167653a2052656164204572726f720000006044820152606401610cdc565b604080516028198301601f19168101909152606719820180825290925080606860208501863c5050919050565b816001600160a01b0316836001600160a01b031603614a245760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610cdc565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000803083604051602001614aa7929190615cfd565b60405160208183030381529060405290508051602082016000f091506001600160a01b038216613a225760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f7200006044820152606401610cdc565b6000816001600160a01b0316604051614b3d906001600160f81b0319815260010190565b6000604051808303816000865af19150503d8060008114614b7a576040519150601f19603f3d011682016040523d82523d6000602084013e614b7f565b606091505b5050905080612e715760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374417353746f726167653a2044656c657465204572726f72006044820152606401610cdc565b614bdb84848461463d565b614be784848484614ed0565b61347d5760405162461bcd60e51b8152600401610cdc90615dc5565b606081600003614c2a5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115614c545780614c3e81615958565b9150614c4d9050600a83615987565b9150614c2e565b6000816001600160401b03811115614c6e57614c6e61515d565b6040519080825280601f01601f191660200182016040528015614c98576020820181803683370190505b5090505b8415611b7857614cad600183615b42565b9150614cba600a86615e17565b614cc5906030615b78565b60f81b818381518110614cda57614cda61592c565b60200101906001600160f81b031916908160001a905350614cfc600a86615987565b9450614c9c565b614d0c816140e2565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60606000614d3d836002615b2b565b614d48906002615b78565b6001600160401b03811115614d5f57614d5f61515d565b6040519080825280601f01601f191660200182016040528015614d89576020820181803683370190505b509050600360fc1b81600081518110614da457614da461592c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614dd357614dd361592c565b60200101906001600160f81b031916908160001a9053506000614df7846002615b2b565b614e02906001615b78565b90505b6001811115614e7a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614e3657614e3661592c565b1a60f81b828281518110614e4c57614e4c61592c565b60200101906001600160f81b031916908160001a90535060049490941c93614e7381615e2b565b9050614e05565b508315614ec95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cdc565b9392505050565b60006001600160a01b0384163b15614fc657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614f14903390899088908890600401615e42565b6020604051808303816000875af1925050508015614f4f575060408051601f3d908101601f19168201909252614f4c91810190615e7f565b60015b614fac573d808015614f7d576040519150601f19603f3d011682016040523d82523d6000602084013e614f82565b606091505b508051600003614fa45760405162461bcd60e51b8152600401610cdc90615dc5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b78565b506001949350505050565b60008060408385031215614fe457600080fd5b50508035926020909101359150565b6001600160a01b03811681146113f857600080fd5b60008060006060848603121561501d57600080fd5b833561502881614ff3565b925060208401359150604084013561503f81614ff3565b809150509250925092565b6000806040838503121561505d57600080fd5b82359150602083013562ffffff8116811461507757600080fd5b809150509250929050565b6001600160e01b0319811681146113f857600080fd5b6000602082840312156150aa57600080fd5b8135614ec981615082565b60005b838110156150d05781810151838201526020016150b8565b50506000910152565b600081518084526150f18160208601602086016150b5565b601f01601f19169290920160200192915050565b602081526000614ec960208301846150d9565b60006020828403121561512a57600080fd5b5035919050565b6000806040838503121561514457600080fd5b823561514f81614ff3565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561518d5761518d61515d565b604051601f8501601f19908116603f011681019082821181831017156151b5576151b561515d565b816040528093508581528686860111156151ce57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126151f957600080fd5b614ec983833560208501615173565b6000806040838503121561521b57600080fd5b8235915060208301356001600160401b0381111561523857600080fd5b615244858286016151e8565b9150509250929050565b6000806000806080858703121561526457600080fd5b843561526f81614ff3565b9350602085013561527f81614ff3565b9250604085013561528f81614ff3565b9150606085013561529f81614ff3565b939692955090935050565b6000602082840312156152bc57600080fd5b81356001600160401b038111156152d257600080fd5b611b78848285016151e8565b6000806000606084860312156152f357600080fd5b83356152fe81614ff3565b9250602084013561530e81614ff3565b9150604084013561503f81615082565b60008060006060848603121561533357600080fd5b833561533e81614ff3565b9250602084013561534e81614ff3565b929592945050506040919091013590565b60006020828403121561537157600080fd5b8135614ec981614ff3565b60008060008060008060c0878903121561539557600080fd5b8635955060208701356153a781614ff3565b945060408701356153b781614ff3565b93506060870135925060808701356153ce81614ff3565b8092505060a087013590509295509295509295565b600080604083850312156153f657600080fd5b82359150602083013561507781614ff3565b60a08152600061541b60a08301886150d9565b828103602084015261542d81886150d9565b9050828103604084015261544181876150d9565b9050828103606084015261545581866150d9565b9050828103608084015261546981856150d9565b98975050505050505050565b6001600160a01b031991909116815260200190565b80151581146113f857600080fd5b600080604083850312156154ab57600080fd5b82356154b681614ff3565b915060208301356150778161548a565b6000806000606084860312156154db57600080fd5b833592506020840135915060408401356001600160401b038111156154ff57600080fd5b61550b868287016151e8565b9150509250925092565b6000806000806080858703121561552b57600080fd5b843561553681614ff3565b9350602085013561554681614ff3565b92506040850135915060608501356001600160401b0381111561556857600080fd5b8501601f8101871361557957600080fd5b61558887823560208401615173565b91505092959194509250565b604080825283519082018190526000906020906060840190828701845b828110156155d65781516001600160a01b0316845292840192908401906001016155b1565b5050508381038285015284518082528583019183019060005b8181101561560b578351835292840192918401916001016155ef565b5090979650505050505050565b6000806040838503121561562b57600080fd5b82356001600160401b0381111561564157600080fd5b61564d858286016151e8565b925050602083013561507781614ff3565b6000806040838503121561567157600080fd5b823561567c81614ff3565b9150602083013561507781614ff3565b60608152600061569f60608301866150d9565b82810360208401526156b181866150d9565b915050826040830152949350505050565b602080825260179082015276151bdad95b88125108191bd95cc81b9bdd08195e1a5cdd604a1b604082015260600190565b6020808252600b908201526a13db9b1e48185c9d1a5cdd60aa1b604082015260600190565b60208082526010908201526f13db9b1e481a59881d5b9b1bd8dad95960821b604082015260600190565b6020808252818101527f4f6e6c7920617274697374206f722041646d696e2041434c20616c6c6f776564604082015260600190565b60208082526016908201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b604082015260600190565b600181811c908216806157bb57607f821691505b602082108103613a2257634e487b7160e01b600052602260045260246000fd5b6020808252601b908201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b604082015260600190565b601f8211156115c457600081815260208120601f850160051c810160208610156158375750805b601f850160051c820191505b8181101561585657828155600101615843565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561588c5761588c61515d565b6158a08161589a84546157a7565b84615810565b602080601f8311600181146158cf57600084156158bd5750858301515b6158c7858261585e565b865550615856565b600085815260208120601f198616915b828110156158fe578886015182559484019460019091019084016158df565b508582101561591c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161596a5761596a615942565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261599657615996615971565b500490565b6020808252601b908201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b604082015260600190565b6000602082840312156159e257600080fd5b8151614ec98161548a565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b602080825260199082015278141c9bda9958dd08125108191bd95cc81b9bdd08195e1a5cdd603a1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60208082526038908201527f4f6e6c792041646d696e2041434c20616c6c6f7765642c206f722061727469736040820152771d081a59881bdddb995c881a185cc81c995b9bdd5b98d95960421b606082015260800190565b808202811582820484141761136d5761136d615942565b8181038181111561136d5761136d615942565b62ffffff818116838216019080821115615b7157615b71615942565b5092915050565b8082018082111561136d5761136d615942565b60008151615b9d8185602086016150b5565b9290920192915050565b60008351615bb98184602088016150b5565b835190830190615bcd8183602088016150b5565b01949350505050565b818103615be1575050565b615beb82546157a7565b6001600160401b03811115615c0257615c0261515d565b615c108161589a84546157a7565b6000601f821160018114615c3e5760008315615c2c5750848201545b615c36848261585e565b855550611229565b600085815260209020601f19841690600086815260209020845b83811015615c785782860154825560019586019590910190602001615c58565b508583101561591c5793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160f81b03818116838216019080821115615b7157615b71615942565b62ffffff828116828216039080821115615b7157615b71615942565b600060ff821660ff8103615cf457615cf4615942565b60010192915050565b6a600b5981380380925939f360a81b81526b1808181218000e5800144cc560a21b600b8201526330082bff60e11b60178201526416d8004d8560da1b601b82015263300cabff60e11b6020820152635b60003560e01b6024820152617fff60f01b6028820152600060488201819052600560fa1b6049830152633021abff60e11b604a830152645b600051ff60d81b604e830152615da26053830160008152600c0190565b615db8818660601b6001600160601b0319169052565b61436c6014820185615b8b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615e2657615e26615971565b500690565b600081615e3a57615e3a615942565b506000190190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615e75908301846150d9565b9695505050505050565b600060208284031215615e9157600080fd5b8151614ec98161508256fe8b810f233ce7ee6e962ab4d98bf0277751de1f5589de3dcc812ac2047994d009b96a30340e86d03ce4be42f94ac02d7b27b4a4cdae942beb69026718dfe66afca264697066735822122013893f651d2b01af685226cb564725a3a1a78405ddb64681421a0b07846f70ed64736f6c63430008110033",
1938
+ "bytecode": "0x60c0604052600e8054600560a11b60ff60a01b199182168117909255600f8054909116909117905560fa60118190556013553480156200003e57600080fd5b5060405162005f8738038062005f8783398101604081905262000061916200075c565b88886000620000718382620008e6565b506001620000808282620008e6565b5050506200009d620000976200024760201b60201c565b6200024b565b620000a88762000283565b620000b38662000283565b620000be8562000283565b620000c98462000283565b81151560a0526001600160f81b038316608052620000ea87808880620002e2565b620000f5856200036c565b62000100846200024b565b6200014b62000123306001600160a01b0316620003f460201b620035a91760201c565b604051602001620001359190620009b2565b60408051601f1981840301815291905262000412565b601580547fff00000000000000000000000000000000000000000000000000000000000000166001600160f81b0385161790556040516c1b995e1d141c9bda9958dd1259609a1b9060008051602062005f6783398151915290600090a260405163f889b3ed60e01b8152306004820152653b199718971960d11b60248201527f47656e417274373231436f726556335f456e67696e650000000000000000000060448201526001600160a01b0382169063f889b3ed90606401600060405180830381600087803b1580156200021f57600080fd5b505af115801562000234573d6000803e3d6000fd5b5050505050505050505050505062000a7a565b3390565b62000261816200044f60201b620035bf1760201c565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116620002df5760405162461bcd60e51b815260206004820152601b60248201527f4d75737420696e707574206e6f6e2d7a65726f2061646472657373000000000060448201526064015b60405180910390fd5b50565b600f80546001600160a01b038085166001600160a01b03199283161790925560128054848416908316179055600e805487841690831617905560108054928616929091169190911790556040517f70726f766964657253616c6573416464726573736573000000000000000000009060008051602062005f6783398151915290600090a250505050565b600880546001600160a01b0383166001600160a01b031991821681179092556009805460018101825560009182527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805490921690921790556040517072616e646f6d697a65724164647265737360781b9160008051602062005f6783398151915291a250565b60606200040c6001600160a01b0383166014620004a1565b92915050565b6016620004208282620008e6565b506040516d64656661756c744261736555524960901b9060008051602062005f6783398151915290600090a250565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000620004b283600262000a1a565b620004bf90600262000a34565b6001600160401b03811115620004d957620004d962000661565b6040519080825280601f01601f19166020018201604052801562000504576020820181803683370190505b509050600360fc1b8160008151811062000522576200052262000a4a565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062000554576200055462000a4a565b60200101906001600160f81b031916908160001a90535060006200057a84600262000a1a565b6200058790600162000a34565b90505b600181111562000609576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620005bf57620005bf62000a4a565b1a60f81b828281518110620005d857620005d862000a4a565b60200101906001600160f81b031916908160001a90535060049490941c93620006018162000a60565b90506200058a565b5083156200065a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620002d6565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006945781810151838201526020016200067a565b50506000910152565b600082601f830112620006af57600080fd5b81516001600160401b0380821115620006cc57620006cc62000661565b604051601f8301601f19908116603f01168101908282118183101715620006f757620006f762000661565b816040528381528660208588010111156200071157600080fd5b6200072484602083016020890162000677565b9695505050505050565b80516001600160a01b03811681146200074657600080fd5b919050565b805180151581146200074657600080fd5b60008060008060008060008060006101208a8c0312156200077c57600080fd5b89516001600160401b03808211156200079457600080fd5b620007a28d838e016200069d565b9a5060208c0151915080821115620007b957600080fd5b50620007c88c828d016200069d565b985050620007d960408b016200072e565b9650620007e960608b016200072e565b9550620007f960808b016200072e565b94506200080960a08b016200072e565b60c08b01519094506001600160f81b03811681146200082757600080fd5b92506200083760e08b016200074b565b9150620008486101008b016200072e565b90509295985092959850929598565b600181811c908216806200086c57607f821691505b6020821081036200088d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008e157600081815260208120601f850160051c81016020861015620008bc5750805b601f850160051c820191505b81811015620008dd57828155600101620008c8565b5050505b505050565b81516001600160401b0381111562000902576200090262000661565b6200091a8162000913845462000857565b8462000893565b602080601f831160018114620009525760008415620009395750858301515b600019600386901b1c1916600185901b178555620008dd565b600085815260208120601f198616915b82811015620009835788860151825594840194600190910190840162000962565b5085821015620009a25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f68747470733a2f2f746f6b656e2e617274626c6f636b732e696f2f0000000000815260008251620009ec81601b85016020870162000677565b602f60f81b601b939091019283015250601c01919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200040c576200040c62000a04565b808201808211156200040c576200040c62000a04565b634e487b7160e01b600052603260045260246000fd5b60008162000a725762000a7262000a04565b506000190190565b60805160a0516154b962000aae60003960008181610b4c0152611b26015260008181610c940152613ea601526154b96000f3fe608060405234801561001057600080fd5b50600436106104145760003560e01c8063715018a611610223578063b75395e01161012c578063b75395e014610a4d578063b7b04fae14610a60578063b88d4fde14610a73578063b971136814610a86578063bb3bafd614610a8e578063bd3d10e714610aaf578063c34a03b514610ac2578063c6c7c5bf14610ad5578063c87b56dd14610ae8578063cc90e72514610afb578063d03c390c14610b0e578063db21a84614610b21578063db2ff86114610b34578063e6032df214610b47578063e935b7b114610b6e578063e985e9c514610b7f578063eb9cd5d414610b92578063ed8abfda14610bb4578063f2fde38b14610bde578063f313d73314610bf1578063f851a44014610c87578063f893c07b14610c8f57600080fd5b8063715018a61461081757806376ee6fab1461081f5780638639415b146108325780638c3c9cdd1461088d5780638da5cb5b146108a05780638dd91a56146108a857806392f00233146108cc57806395d89b41146108df5780639a02e4fa146108e7578063a11ec70a1461091e578063a22cb46514610931578063a3b2cca614610944578063a47d29cb14610957578063abcbb7b414610983578063ac11fa1c1461098b578063acad0124146109ab578063acd4c66f146109be578063ad0305ce146109d0578063ad2cdfc4146109f2578063ae45ad9814610a1f578063b1656ba314610a27578063b168762214610a3a57600080fd5b806328ec8f501161032557806328ec8f501461063c5780632b274166146106695780632b65e67d1461067c5780632b8258c51461068f5780632d9c02051461069857806330ef4c5f146106ab57806336c7c12c146106bd57806337859963146106d057806338c8e468146106e35780633bb225531461070f5780633e48e8481461071857806341814cd31461072b57806342842e0e1461073e57806348337282146107515780634e1d64af146107645780635508fd521461076c57806358b9a5a914610780578063621a1f74146107b85780636352211e146107cb57806369d14faf146107de5780636c907b7f146107f157806370a082311461080457600080fd5b80611e3c146104195780615de51461042e5780630132c6971461045457806301856fd41461046757806301ffc9a71461047a57806304143a5c1461049d57806306fdde03146104a5578063081812fc146104ba578063095ea7b3146104e55780630d170673146104f85780630e79c9281461050b5780630ea5613f1461051e5780630ebeb0ee1461056857806317df5366146105915780631ab6014c146105a45780631b689c0b146105b75780631c05cad7146105ca5780631e9bef46146105dd5780632302cbda146105f0578063230448b11461060357806323b872dd1461061657806325b75d6814610629575b600080fd5b61042c610427366004614741565b610cb6565b005b61044161043c366004614778565b610de5565b6040519081526020015b60405180910390f35b61042c6104623660046147ba565b611089565b61042c610475366004614741565b6111af565b61048d610488366004614808565b611263565b604051901515815260200161044b565b61042c61128e565b6104ad6112f6565b60405161044b9190614875565b6104cd6104c8366004614888565b611388565b6040516001600160a01b03909116815260200161044b565b61042c6104f33660046148a1565b6113af565b61042c610506366004614978565b6114c4565b61042c610519366004614978565b611529565b61053161052c366004614888565b611725565b60408051968752602087019590955292151593850193909352151560608401526080830191909152151560a082015260c00161044b565b6104cd610576366004614888565b6000908152600c60205260409020546001600160a01b031690565b6007546104cd906001600160a01b031681565b600f546104cd906001600160a01b031681565b6104416105c5366004614888565b611788565b61042c6105d83660046149be565b611797565b600a546104cd906001600160a01b031681565b61042c6105fe366004614a1a565b6117d7565b61048d610611366004614a4e565b6117fc565b61042c610624366004614a8e565b6118a8565b61042c610637366004614978565b6118d9565b61044161064a366004614888565b6000908152600c6020526040902060010154600160a01b900460ff1690565b61042c610677366004614acf565b611941565b61042c61068a366004614aec565b6119ad565b61044160135481565b6104ad6106a6366004614888565b611d13565b600f54600160a01b900460ff16610441565b6008546104cd906001600160a01b031681565b61042c6106de366004614978565b611db8565b6104cd6106f1366004614888565b6000908152600c60205260409020600101546001600160a01b031690565b61044160115481565b61042c610726366004614978565b611e06565b6010546104cd906001600160a01b031681565b61042c61074c366004614a8e565b611e5d565b61042c61075f366004614acf565b611e78565b6104ad611edb565b60155461048d90600160f81b900460ff1681565b6104cd61078e366004614741565b6000918252600b60209081526040808420928452600990920190529020546001600160a01b031690565b6104416107c6366004614888565b611ef4565b6104cd6107d9366004614888565b611f56565b61042c6107ec366004614b53565b611f8b565b61042c6107ff366004614acf565b612004565b610441610812366004614acf565b612026565b61042c6120ac565b61042c61082d366004614aec565b6120c4565b610845610840366004614741565b61228c565b604080519889526001600160a01b0397881660208a015288019590955292851660608701526080860191909152831660a085015260c08401521660e08201526101000161044b565b6104ad61089b366004614741565b612395565b6104cd6123f4565b6108bb6108b6366004614888565b612408565b60405161044b959493929190614b78565b6014546104cd906001600160a01b031681565b6104ad6126fc565b6109116108f5366004614888565b600090815260026020526040902054600160a01b900460a01b90565b60405161044b9190614be5565b61042c61092c366004614888565b61270b565b61042c61093f366004614c08565b612763565b61042c610952366004614978565b612772565b6104cd610965366004614888565b6000908152600c60205260409020600201546001600160a01b031690565b6104ad61285e565b610441610999366004614888565b600d6020526000908152604090205481565b61042c6109b9366004614978565b6128ec565b600e54600160a01b900460ff16610441565b61048d6109de366004614acf565b6014546001600160a01b0390811691161490565b610441610a00366004614888565b6000908152600c6020526040902060020154600160a01b900460ff1690565b6104ad6129bf565b61042c610a35366004614c36565b6129e3565b6104cd610a48366004614888565b612ac8565b600e546104cd906001600160a01b031681565b61042c610a6e366004614978565b612b40565b61042c610a81366004614c85565b612bab565b600954610441565b610aa1610a9c366004614888565b612bdd565b60405161044b929190614d04565b61042c610abd366004614741565b612e71565b61042c610ad0366004614741565b612f3d565b6012546104cd906001600160a01b031681565b6104ad610af6366004614888565b612fde565b61042c610b09366004614d88565b6130c6565b61042c610b1c366004614888565b61321b565b61042c610b2f366004614741565b613283565b61042c610b42366004614888565b613322565b61048d7f000000000000000000000000000000000000000000000000000000000000000081565b6015546001600160f81b0316610441565b61048d610b8d366004614dce565b61342f565b610ba5610ba0366004614888565b61345d565b60405161044b93929190614dfc565b610441610bc2366004614888565b6000908152600c6020526040902054600160a01b900460ff1690565b61042c610bec366004614acf565b613529565b610c49610bff366004614888565b6000908152600c60205260409020600281015481546001909201546001600160a01b03808316948482169460ff600160a01b95869004811695938516948490048116939091041690565b604080516001600160a01b039788168152958716602087015285019390935293166060830152608082019290925260a081019190915260c00161044b565b6104cd61359f565b6104417f000000000000000000000000000000000000000000000000000000000000000081565b610cbf82613611565b60008281526002602052604090206008546001600160a01b03163314610d265760405162461bcd60e51b815260206004820152601760248201527613db9b1e481c985b991bdb5a5e995c881b585e481cd95d604a1b60448201526064015b60405180910390fd5b8054600160a01b900460a01b6001600160a01b03191615610d825760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881a185cda08185b1c9958591e481cd95d60521b6044820152606401610d1d565b81610dc35760405162461bcd60e51b8152602060048201526011602482015270139bc81e995c9bc81a185cda081cd95959607a1b6044820152606401610d1d565b805460a09290921c600160a01b026001600160a01b0390921691909117905550565b6014546000906001600160a01b03163314610e425760405162461bcd60e51b815260206004820152601e60248201527f4d757374206d696e742066726f6d206d696e74657220636f6e747261637400006044820152606401610d1d565b6000838152600b60205260409020805462ffffff808216916001830191630100000090910416808310610eb75760405162461bcd60e51b815260206004820152601f60248201527f4d757374206e6f7420657863656564206d617820696e766f636174696f6e73006044820152606401610d1d565b8354600160881b900460ff1680610eea57506000878152600c60205260409020600201546001600160a01b038781169116145b610f365760405162461bcd60e51b815260206004820181905260248201527f50726f6a656374206d75737420657869737420616e64206265206163746976656044820152606401610d1d565b8354600160901b900460ff161580610f6a57506000878152600c60205260409020600201546001600160a01b038781169116145b610fae5760405162461bcd60e51b8152602060048201526015602482015274283ab931b430b9b2b99030b932903830bab9b2b21760591b6044820152606401610d1d565b835462ffffff191662ffffff8381169182178655848116620f42408a0201919083169003610fdf57610fdf88613660565b610fe989826136b8565b600854604051635b140b8d60e11b8152600481018390526001600160a01b039091169063b628171a90602401600060405180830381600087803b15801561102f57600080fd5b505af1158015611043573d6000803e3d6000fd5b50506040518392506001600160a01b038c1691507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688590600090a398975050505050505050565b611092826137ea565b6000828152600b60205260409020805462ffffff80821691630100000090048116908416106111025760405162461bcd60e51b815260206004820152601c60248201527b4f6e6c79206d6178496e766f636174696f6e7320646563726561736560201b6044820152606401610d1d565b808362ffffff16101561114e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c792067746520696e766f636174696f6e7360601b6044820152606401610d1d565b815465ffffff0000001916630100000062ffffff8516021782556040516d6d6178496e766f636174696f6e7360901b90859060008051602061546483398151915290600090a3808362ffffff16036111a9576111a984613660565b50505050565b6111b882613841565b6111c88262615bf560e21b613889565b6000828152600b602052604090819020906111e69083906001613903565b61122f5760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b6044820152606401610d1d565b60078101829055604051697363726970745479706560b01b90849060008051602061546483398151915290600090a3505050565b60006001600160e01b03198216635d9dd7eb60e11b1480611288575061128882613976565b92915050565b61129e6301050e9760e21b6139c6565b601554600160f81b900460ff16156112ec5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903337b93134b23232b760791b6044820152606401610d1d565b6112f4613a16565b565b60606000805461130590614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461133190614e32565b801561137e5780601f106113535761010080835404028352916020019161137e565b820191906000526020600020905b81548152906001019060200180831161136157829003601f168201915b5050505050905090565b600061139382613a6e565b506000908152600460205260409020546001600160a01b031690565b60006113ba82611f56565b9050806001600160a01b0316836001600160a01b0316036114275760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610d1d565b336001600160a01b03821614806114435750611443813361342f565b6114b55760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610d1d565b6114bf8383613a93565b505050565b6114cd82613841565b6114de82630d17067360e01b613889565b6114e781613b01565b6000828152600b602052604090206001016115028282614ec9565b50604051636e616d6560e01b90839060008051602061546483398151915290600090a35050565b61153282613841565b611543826301cf392560e31b613889565b61154c81613b01565b80518190600b8111156115a05760405162461bcd60e51b815260206004820152601c60248201527b41737065637420726174696f20666f726d617420746f6f206c6f6e6760201b6044820152606401610d1d565b60008060005b8381101561168c5760008582815181106115c2576115c2614f82565b01602001516001600160f81b0319169050600360fc1b81108015906115f55750603960f81b6001600160f81b0319821611155b1561160457600192505061167a565b6001600160f81b03198116601760f91b03611628578361162857600193505061167a565b60405162461bcd60e51b815260206004820152602160248201527f496d70726f7065726c7920666f726d61747465642061737065637420726174696044820152606f60f81b6064820152608401610d1d565b8061168481614fae565b9150506115a6565b50806116d85760405162461bcd60e51b815260206004820152601b60248201527a41737065637420726174696f20686173206e6f206e756d6265727360281b6044820152606401610d1d565b6000868152600b602052604090206008016116f38682614ec9565b506040516a617370656374526174696f60a81b90879060008051602061546483398151915290600090a3505050505050565b6000818152600b60205260408120805462ffffff808216936301000000830490911692600160881b830460ff90811693600160901b810490911692600160481b9091046001600160401b03169161177b88613b50565b1591505091939550919395565b6000611288620f424083614fdd565b6117a7631c05cad760e01b6139c6565b6117b084613b9a565b6117b983613b9a565b6117c282613b9a565b6117cb81613b9a565b6111a984848484613bee565b6117e763118165ed60e11b6139c6565b6117f081613b01565b6117f981613c70565b50565b6000806118076123f4565b6001600160a01b0316141580156118a05750600a546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af115801561187c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a09190614ff1565b949350505050565b6118b23382613caa565b6118ce5760405162461bcd60e51b8152600401610d1d9061500e565b6114bf838383613d08565b6118e282613841565b6118f3826304b6ebad60e31b613889565b6118fc81613b01565b6000828152600b602052604090206005016119178282614ec9565b50604051666c6963656e736560c81b90839060008051602061546483398151915290600090a35050565b611951631593a0b360e11b6139c6565b61195a81613b9a565b600780546001600160a01b0319166001600160a01b03831617905560405178646570656e64656e637952656769737472794164647265737360381b9060008051602061544483398151915290600090a250565b6119b686613ea4565b6119bf866137ea565b6119c885613b9a565b6000868152600c60205260409020606484118015906119e8575060648211155b611a225760405162461bcd60e51b815260206004820152600b60248201526a4d6178206f66203130302560a81b6044820152606401610d1d565b831580611a3757506001600160a01b03851615155b611a835760405162461bcd60e51b815260206004820152601d60248201527f5072696d617279207061796565206973207a65726f20616464726573730000006044820152606401610d1d565b811580611a9857506001600160a01b03831615155b611ae45760405162461bcd60e51b815260206004820152601f60248201527f5365636f6e64617279207061796565206973207a65726f2061646472657373006044820152606401610d1d565b867f6ff7d102bb3657a26dcbbcd299d821a066718a7cf76ae7cd98279f18b74da8ac8787878787604051611b1c95949392919061505c565b60405180910390a27f000000000000000000000000000000000000000000000000000000000000000080611bc257600282015482546001600160a01b03918216898316149160009181169089161480611b7c57506001600160a01b038816155b60018501549091506000906001600160a01b0388811691161480611ba757506001600160a01b038716155b9050828015611bb35750815b8015611bbc5750805b93505050505b8015611cca576000801b600d60008a815260200190815260200160002081905550868260020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858260000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550848260020160146101000a81548160ff021916908360ff160217905550838260010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828260010160146101000a81548160ff021916908360ff160217905550877fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a2611d09565b8686868686604051602001611ce395949392919061505c565b60408051601f19818403018152918152815160209283012060008b8152600d9093529120555b5050505050505050565b6000818152600b60205260409020600601805460609190611d3390614e32565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5f90614e32565b8015611dac5780601f10611d8157610100808354040283529160200191611dac565b820191906000526020600020905b815481529060010190602001808311611d8f57829003601f168201915b50505050509050919050565b611dc1826137ea565b6000828152600b60205260409020600401611ddc8282614ec9565b50604051667765627369746560c81b90839060008051602061546483398151915290600090a35050565b611e0f826137ea565b611e1881613b01565b6000828152600b60205260409020600601611e338282614ec9565b50604051666261736555524960c81b90839060008051602061546483398151915290600090a35050565b6114bf83838360405180602001604052806000815250612bab565b611e88632419b94160e11b6139c6565b611e9181613b9a565b601480546001600160a01b0319166001600160a01b0383169081179091556040517fad0f299ec81a386c98df0ac27dae11dd020ed1b56963c53a7292e7a3a314539a90600090a250565b6060611eef653b199718971960d11b613f26565b905090565b600081815260026020526040812054600160a01b900460a01b6001600160a01b031981168203611f275750600092915050565b80604051602001611f389190614be5565b60405160208183030381529060405280519060200120915050919050565b6000818152600260205260408120546001600160a01b0316806112885760405162461bcd60e51b8152600401610d1d9061508f565b611f9482613ea4565b611fa5826369d14faf60e01b613f91565b611fae81613b9a565b6000828152600c602052604080822060020180546001600160a01b0319166001600160a01b038516179055516c6172746973744164647265737360981b9184916000805160206154648339815191529190a35050565b612014636c907b7f60e01b6139c6565b61201d81613b9a565b6117f981614048565b60006001600160a01b0382166120905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d1d565b506001600160a01b031660009081526003602052604090205490565b6120b46140cf565b6120bc613a16565b6112f461412e565b6120cd86613ea4565b6120de866376ee6fab60e01b613f91565b6120e785613b9a565b848484848460405160200161210095949392919061505c565b60408051601f1981840301815291815281516020928301206000898152600d9093529120541461216f5760405162461bcd60e51b815260206004820152601a602482015279135d5cdd081b585d18da08185c9d1a5cdd081c1c9bdc1bdcd85b60321b6044820152606401610d1d565b6000600c60008881526020019081526020016000209050858160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550848160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838160020160146101000a81548160ff021916908360ff160217905550828160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818160010160146101000a81548160ff021916908360ff1602179055506000801b600d600089815260200190815260200160002081905550867fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a250505050505050565b6000828152600c60205260408120600e548291829182918291829182918291908a906064906122c590600160a01b900460ff16836150c1565b6122cf9190614fdd565b99506122db8a826150d8565b600f549091506064906122f890600160a01b900460ff168d6150c1565b6123029190614fdd565b975061230e88826150d8565b600283015490915060649061232d90600160a01b900460ff16836150c1565b6123379190614fdd565b935061234384826150d8565b600e54600f546001600160a01b039182169b50169750955085156123725760028201546001600160a01b031694505b83156123865781546001600160a01b031692505b50509295985092959890939650565b6000828152600b60205260409020805460609190600160301b900462ffffff1683106123d1575050604080516020810190915260008152611288565b60008381526009820160205260409020546118a0906001600160a01b0316614140565b6000611eef6006546001600160a01b031690565b60608060608060606000600b6000888152602001908152602001600020905080600101805461243690614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461246290614e32565b80156124af5780601f10612484576101008083540402835291602001916124af565b820191906000526020600020905b81548152906001019060200180831161249257829003601f168201915b505050505095508060020180546124c590614e32565b80601f01602080910402602001604051908101604052809291908181526020018280546124f190614e32565b801561253e5780601f106125135761010080835404028352916020019161253e565b820191906000526020600020905b81548152906001019060200180831161252157829003601f168201915b5050505050945080600301805461255490614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461258090614e32565b80156125cd5780601f106125a2576101008083540402835291602001916125cd565b820191906000526020600020905b8154815290600101906020018083116125b057829003601f168201915b505050505093508060040180546125e390614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461260f90614e32565b801561265c5780601f106126315761010080835404028352916020019161265c565b820191906000526020600020905b81548152906001019060200180831161263f57829003601f168201915b5050505050925080600501805461267290614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461269e90614e32565b80156126eb5780601f106126c0576101008083540402835291602001916126eb565b820191906000526020600020905b8154815290600101906020018083116126ce57829003601f168201915b505050505091505091939590929450565b60606001805461130590614e32565b612714816137ea565b6000818152600b6020526040808220805460ff60901b198116600160901b9182900460ff161590910217905551651c185d5cd95960d21b9183916000805160206154648339815191529190a350565b61276e3383836141cb565b5050565b61277b82613b50565b6127965761279133306351d9665360e11b6117fc565b6127b4565b6000828152600c60205260409020600201546001600160a01b031633145b6128155760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c7920617274697374207768656e20756e6c6f636b65642c206f776e657260448201526b081dda195b881b1bd8dad95960a21b6064820152608401610d1d565b6000828152600b602052604090206003016128308282614ec9565b506040516a3232b9b1b934b83a34b7b760a91b90839060008051602061546483398151915290600090a35050565b6016805461286b90614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461289790614e32565b80156128e45780601f106128b9576101008083540402835291602001916128e4565b820191906000526020600020905b8154815290600101906020018083116128c757829003601f168201915b505050505081565b6128f582613841565b61290682632b2b404960e21b613889565b61290f81613b01565b6000828152600b6020526040902061292682614295565b8154600160301b9081900462ffffff9081166000908152600985016020526040902080546001600160a01b0319166001600160a01b0394909416939093179092558254612978929190041660016150eb565b815462ffffff91909116600160301b0262ffffff60301b19909116178155604051651cd8dc9a5c1d60d21b90849060008051602061546483398151915290600090a3505050565b6060611eef7547656e417274373231436f726556335f456e67696e6560501b613f26565b6129ec83613841565b6129fd8363b1656ba360e01b613889565b612a0681613b01565b6000838152600b602052604090208054600160301b900462ffffff168310612a685760405162461bcd60e51b81526020600482015260156024820152747363726970744964206f7574206f662072616e676560581b6044820152606401610d1d565b612a7182614295565b600084815260098301602052604080822080546001600160a01b0319166001600160a01b0394909416939093179092559051651cd8dc9a5c1d60d21b9186916000805160206154648339815191529190a350505050565b6009546000908210612b125760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610d1d565b60098281548110612b2557612b25614f82565b6000918252602090912001546001600160a01b031692915050565b612b4982613841565b612b5a82635bd827d760e11b613889565b612b6381613b01565b6000828152600b60205260409020600201612b7e8282614ec9565b50604051696172746973744e616d6560b01b90839060008051602061546483398151915290600090a35050565b612bb53383613caa565b612bd15760405162461bcd60e51b8152600401610d1d9061500e565b6111a984848484614323565b606080612be983613611565b60408051600480825260a082019092529060208201608080368337505060408051600480825260a082019092529294509050602082016080803683370190505090506000612c3684611788565b6000818152600c6020526040812080546001820154939450909260ff600160a01b9283900481169392909104169082612c708360646150d8565b612c7a91906150c1565b90506000612c8884846150c1565b6011546013549192509060008415612d025760028801548b516001600160a01b03909116908c9083908110612cbf57612cbf614f82565b6001600160a01b0390921660209283029190910190910152848a82612ce381614fae565b935081518110612cf557612cf5614f82565b6020026020010181815250505b8315612d705760018801548b516001600160a01b03909116908c9083908110612d2d57612d2d614f82565b6001600160a01b0390921660209283029190910190910152838a82612d5181614fae565b935081518110612d6357612d63614f82565b6020026020010181815250505b8215612ddc576010548b516001600160a01b03909116908c9083908110612d9957612d99614f82565b6001600160a01b0390921660209283029190910190910152828a82612dbd81614fae565b935081518110612dcf57612dcf614f82565b6020026020010181815250505b8115612e48576012548b516001600160a01b03909116908c9083908110612e0557612e05614f82565b6001600160a01b0390921660209283029190910190910152818a82612e2981614fae565b935081518110612e3b57612e3b614f82565b6020026020010181815250505b8060041115612e635780600403808c51038c52808b51038b52505b505050505050505050915091565b612e8163bd3d10e760e01b6139c6565b6064612e8d828461510e565b1115612ed65760405162461bcd60e51b81526020600482015260186024820152774d61782073756d206f66204f4e455f48554e44524544202560401b6044820152606401610d1d565b600e805460ff808516600160a01b90810260ff60a01b1993841617909355600f805491851690930291161790556040517970726f76696465725072696d61727950657263656e746167657360301b9060008051602061544483398151915290600090a25050565b612f46826137ea565b605f811115612f8a5760405162461bcd60e51b815260206004820152601060248201526f13dd995c881b585e081c195c98d95b9d60821b6044820152606401610d1d565b6000828152600c6020526040808220805460ff60a01b1916600160a01b60ff8616021790555170726f79616c747950657263656e7461676560781b9184916000805160206154648339815191529190a35050565b6060612fe982613611565b6000600b6000612ff885611788565b8152602001908152602001600020600601805461301490614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461304090614e32565b801561308d5780601f106130625761010080835404028352916020019161308d565b820191906000526020600020905b81548152906001019060200180831161307057829003601f168201915b505050505090508061309e84614356565b6040516020016130af92919061513d565b604051602081830303815290604052915050919050565b6130d663cc90e72560e01b6139c6565b6130df82613b01565b6130e881613b9a565b601554600160f81b900460ff161561313b5760405162461bcd60e51b81526020600482015260166024820152752732bb90383937b532b1ba39903337b93134b23232b760511b6044820152606401610d1d565b6015546001600160f81b03166000818152600c6020908152604080832060020180546001600160a01b0319166001600160a01b038716179055600b90915290206001016131888482614ec9565b506000818152600b60205260409020805465ffffff00000060ff60901b011916613d09601e1b600160901b011781556006016131c560168261516c565b506131d1816001615240565b601580546001600160f81b0319166001600160f81b03929092169190911790556040516618dc99585d195960ca1b90829060008051602061546483398151915290600090a3505050565b61322b63340f0e4360e21b6139c6565b61323481613ea4565b6000818152600b6020526040808220805460ff60881b198116600160881b9182900460ff1615909102179055516561637469766560d01b9183916000805160206154648339815191529190a350565b613293636d90d42360e11b6139c6565b6127106132a0828461510e565b11156132e45760405162461bcd60e51b81526020600482015260136024820152724f766572206d61782073756d206f662042505360681b6044820152606401610d1d565b601182905560138190556040517370726f76696465725365636f6e6461727942505360601b9060008051602061544483398151915290600090a25050565b61332b81613841565b61333c8163db2ff86160e01b613889565b6000818152600b602052604090208054600160301b900462ffffff1661339b5760405162461bcd60e51b81526020600482015260146024820152734e6f207363726970747320746f2072656d6f766560601b6044820152606401610d1d565b805460098201906000906133bd90600190600160301b900462ffffff16615260565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b0319169055835462ffffff60301b198116600160301b918290048516600019019094160292909217835551651cd8dc9a5c1d60d21b9184916000805160206154648339815191529190a35050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600b6020526040812060078101546060928392909161348090613f26565b935080600801805461349190614e32565b80601f01602080910402602001604051908101604052809291908181526020018280546134bd90614e32565b801561350a5780601f106134df5761010080835404028352916020019161350a565b820191906000526020600020905b8154815290600101906020018083116134ed57829003601f168201915b5050935496989297505050600160301b90940462ffffff169392505050565b6135316140cf565b6001600160a01b0381166135965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d1d565b6117f981614456565b6000611eef6123f4565b60606112886001600160a01b0383166014614481565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61361a81614623565b6117f95760405162461bcd60e51b8152602060048201526017602482015276151bdad95b88125108191bd95cc81b9bdd08195e1a5cdd604a1b6044820152606401610d1d565b6000818152600b6020526040808220805467ffffffffffffffff60481b1916600160481b426001600160401b031602179055516818dbdb5c1b195d195960ba1b9183916000805160206154648339815191529190a350565b6001600160a01b03821661370e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d1d565b61371781614623565b156137635760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610d1d565b6001600160a01b038216600090815260036020526040812080546001929061378c90849061510e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600c60205260409020600201546001600160a01b031633146117f95760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48185c9d1a5cdd60aa1b6044820152606401610d1d565b61384a81613b50565b6117f95760405162461bcd60e51b815260206004820152601060248201526f13db9b1e481a59881d5b9b1bd8dad95960821b6044820152606401610d1d565b6000828152600c60205260409020600201546001600160a01b03163314806138b757506138b73330836117fc565b61276e5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920617274697374206f722041646d696e2041434c20616c6c6f7765646044820152606401610d1d565b600080805b60208160ff161015613962576000868260ff166020811061392b5761392b614f82565b1a90508015801590613940575060808160ff16105b15613959578560ff168160ff1603613959578260010192505b50600101613908565b8360ff168260ff1614925050509392505050565b60006001600160e01b031982166380ac58cd60e01b14806139a757506001600160e01b03198216635b5e139f60e01b145b8061128857506301ffc9a760e01b6001600160e01b0319831614611288565b6139d13330836117fc565b6117f95760405162461bcd60e51b815260206004820152601660248201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b6044820152606401610d1d565b601554600160f81b900460ff166112f457601580546001600160f81b0316600160f81b179055604051733732bba83937b532b1ba39a337b93134b23232b760611b9060008051602061544483398151915290600090a2565b613a7781614623565b6117f95760405162461bcd60e51b8152600401610d1d9061508f565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613ac882611f56565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b80516000036117f95760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b6044820152606401610d1d565b6000613b5b82613ea4565b6000828152600b6020526040902054600160481b90046001600160401b0316801580806118a057506224ea00613b9183426150d8565b10949350505050565b6001600160a01b0381166117f95760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b6044820152606401610d1d565b600f80546001600160a01b038085166001600160a01b03199283161790925560128054848416908316179055600e805487841690831617905560108054928616929091169190911790556040517570726f766964657253616c657341646472657373657360501b9060008051602061544483398151915290600090a250505050565b6016613c7c8282614ec9565b506040516d64656661756c744261736555524960901b9060008051602061544483398151915290600090a250565b600080613cb683611f56565b9050806001600160a01b0316846001600160a01b03161480613cdd5750613cdd818561342f565b806118a05750836001600160a01b0316613cf684611388565b6001600160a01b031614949350505050565b826001600160a01b0316613d1b82611f56565b6001600160a01b031614613d7f5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610d1d565b6001600160a01b038216613de15760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d1d565b613dec600082613a93565b6001600160a01b0383166000908152600360205260408120805460019290613e159084906150d8565b90915550506001600160a01b0382166000908152600360205260408120805460019290613e4390849061510e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b7f00000000000000000000000000000000000000000000000000000000000000008110158015613ede57506015546001600160f81b031681105b6117f95760405162461bcd60e51b8152602060048201526019602482015278141c9bda9958dd08125108191bd95cc81b9bdd08195e1a5cdd603a1b6044820152606401610d1d565b606060005b828160ff1660208110613f4057613f40614f82565b1a60f81b6001600160f81b03191615801590613f5f575060208160ff16105b15613f765780613f6e8161527c565b915050613f2b565b60405191506040820160405280825282602083015250919050565b613f9c3330836117fc565b80613fdb57506000613fac6123f4565b6001600160a01b0316148015613fdb57506000828152600c60205260409020600201546001600160a01b031633145b61276e5760405162461bcd60e51b815260206004820152603860248201527f4f6e6c792041646d696e2041434c20616c6c6f7765642c206f722061727469736044820152771d081a59881bdddb995c881a185cc81c995b9bdd5b98d95960421b6064820152608401610d1d565b600880546001600160a01b0383166001600160a01b031991821681179092556009805460018101825560009182527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805490921690921790556040517072616e646f6d697a65724164647265737360781b9160008051602061544483398151915291a250565b336140d86123f4565b6001600160a01b0316146112f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d1d565b6141366140cf565b6112f46000614456565b6060813b6068811080614151575080155b1561419e5760405162461bcd60e51b815260206004820152601d60248201527f436f6e7472616374417353746f726167653a2052656164204572726f720000006044820152606401610d1d565b604080516028198301601f19168101909152606719820180825290925080606860208501863c5050919050565b816001600160a01b0316836001600160a01b0316036142285760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610d1d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008030836040516020016142ab92919061529b565b60405160208183030381529060405290508051602082016000f091506001600160a01b03821661431d5760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f7200006044820152606401610d1d565b50919050565b61432e848484613d08565b61433a84848484614640565b6111a95760405162461bcd60e51b8152600401610d1d9061536c565b60608160000361437d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156143a7578061439181614fae565b91506143a09050600a83614fdd565b9150614381565b6000816001600160401b038111156143c1576143c16148cd565b6040519080825280601f01601f1916602001820160405280156143eb576020820181803683370190505b5090505b84156118a0576144006001836150d8565b915061440d600a866153be565b61441890603061510e565b60f81b81838151811061442d5761442d614f82565b60200101906001600160f81b031916908160001a90535061444f600a86614fdd565b94506143ef565b61445f816135bf565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b606060006144908360026150c1565b61449b90600261510e565b6001600160401b038111156144b2576144b26148cd565b6040519080825280601f01601f1916602001820160405280156144dc576020820181803683370190505b509050600360fc1b816000815181106144f7576144f7614f82565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061452657614526614f82565b60200101906001600160f81b031916908160001a905350600061454a8460026150c1565b61455590600161510e565b90505b60018111156145cd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061458957614589614f82565b1a60f81b82828151811061459f5761459f614f82565b60200101906001600160f81b031916908160001a90535060049490941c936145c6816153d2565b9050614558565b50831561461c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d1d565b9392505050565b6000908152600260205260409020546001600160a01b0316151590565b60006001600160a01b0384163b1561473657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906146849033908990889088906004016153e9565b6020604051808303816000875af19250505080156146bf575060408051601f3d908101601f191682019092526146bc91810190615426565b60015b61471c573d8080156146ed576040519150601f19603f3d011682016040523d82523d6000602084013e6146f2565b606091505b5080516000036147145760405162461bcd60e51b8152600401610d1d9061536c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506118a0565b506001949350505050565b6000806040838503121561475457600080fd5b50508035926020909101359150565b6001600160a01b03811681146117f957600080fd5b60008060006060848603121561478d57600080fd5b833561479881614763565b92506020840135915060408401356147af81614763565b809150509250925092565b600080604083850312156147cd57600080fd5b82359150602083013562ffffff811681146147e757600080fd5b809150509250929050565b6001600160e01b0319811681146117f957600080fd5b60006020828403121561481a57600080fd5b813561461c816147f2565b60005b83811015614840578181015183820152602001614828565b50506000910152565b60008151808452614861816020860160208601614825565b601f01601f19169290920160200192915050565b60208152600061461c6020830184614849565b60006020828403121561489a57600080fd5b5035919050565b600080604083850312156148b457600080fd5b82356148bf81614763565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156148fd576148fd6148cd565b604051601f8501601f19908116603f01168101908282118183101715614925576149256148cd565b8160405280935085815286868601111561493e57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261496957600080fd5b61461c838335602085016148e3565b6000806040838503121561498b57600080fd5b8235915060208301356001600160401b038111156149a857600080fd5b6149b485828601614958565b9150509250929050565b600080600080608085870312156149d457600080fd5b84356149df81614763565b935060208501356149ef81614763565b925060408501356149ff81614763565b91506060850135614a0f81614763565b939692955090935050565b600060208284031215614a2c57600080fd5b81356001600160401b03811115614a4257600080fd5b6118a084828501614958565b600080600060608486031215614a6357600080fd5b8335614a6e81614763565b92506020840135614a7e81614763565b915060408401356147af816147f2565b600080600060608486031215614aa357600080fd5b8335614aae81614763565b92506020840135614abe81614763565b929592945050506040919091013590565b600060208284031215614ae157600080fd5b813561461c81614763565b60008060008060008060c08789031215614b0557600080fd5b863595506020870135614b1781614763565b94506040870135614b2781614763565b9350606087013592506080870135614b3e81614763565b8092505060a087013590509295509295509295565b60008060408385031215614b6657600080fd5b8235915060208301356147e781614763565b60a081526000614b8b60a0830188614849565b8281036020840152614b9d8188614849565b90508281036040840152614bb18187614849565b90508281036060840152614bc58186614849565b90508281036080840152614bd98185614849565b98975050505050505050565b6001600160a01b031991909116815260200190565b80151581146117f957600080fd5b60008060408385031215614c1b57600080fd5b8235614c2681614763565b915060208301356147e781614bfa565b600080600060608486031215614c4b57600080fd5b833592506020840135915060408401356001600160401b03811115614c6f57600080fd5b614c7b86828701614958565b9150509250925092565b60008060008060808587031215614c9b57600080fd5b8435614ca681614763565b93506020850135614cb681614763565b92506040850135915060608501356001600160401b03811115614cd857600080fd5b8501601f81018713614ce957600080fd5b614cf8878235602084016148e3565b91505092959194509250565b604080825283519082018190526000906020906060840190828701845b82811015614d465781516001600160a01b031684529284019290840190600101614d21565b5050508381038285015284518082528583019183019060005b81811015614d7b57835183529284019291840191600101614d5f565b5090979650505050505050565b60008060408385031215614d9b57600080fd5b82356001600160401b03811115614db157600080fd5b614dbd85828601614958565b92505060208301356147e781614763565b60008060408385031215614de157600080fd5b8235614dec81614763565b915060208301356147e781614763565b606081526000614e0f6060830186614849565b8281036020840152614e218186614849565b915050826040830152949350505050565b600181811c90821680614e4657607f821691505b60208210810361431d57634e487b7160e01b600052602260045260246000fd5b601f8211156114bf57600081815260208120601f850160051c81016020861015614e8d5750805b601f850160051c820191505b81811015614eac57828155600101614e99565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614ee257614ee26148cd565b614ef681614ef08454614e32565b84614e66565b602080601f831160018114614f255760008415614f135750858301515b614f1d8582614eb4565b865550614eac565b600085815260208120601f198616915b82811015614f5457888601518255948401946001909101908401614f35565b5085821015614f725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201614fc057614fc0614f98565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614fec57614fec614fc7565b500490565b60006020828403121561500357600080fd5b815161461c81614bfa565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b808202811582820484141761128857611288614f98565b8181038181111561128857611288614f98565b62ffffff81811683821601908082111561510757615107614f98565b5092915050565b8082018082111561128857611288614f98565b60008151615133818560208601614825565b9290920192915050565b6000835161514f818460208801614825565b835190830190615163818360208801614825565b01949350505050565b818103615177575050565b6151818254614e32565b6001600160401b03811115615198576151986148cd565b6151a681614ef08454614e32565b6000601f8211600181146151d457600083156151c25750848201545b6151cc8482614eb4565b855550615239565b600085815260209020601f19841690600086815260209020845b8381101561520e57828601548255600195860195909101906020016151ee565b508583101561522c5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b6001600160f81b0381811683821601908082111561510757615107614f98565b62ffffff82811682821603908082111561510757615107614f98565b600060ff821660ff810361529257615292614f98565b60010192915050565b6a600b5981380380925939f360a81b81526b1808181218000e5800144cc560a21b600b8201526330082bff60e11b60178201526416d8004d8560da1b601b82015263300cabff60e11b6020820152635b60003560e01b6024820152617fff60f01b6028820152600060488201819052600560fa1b6049830152633021abff60e11b604a830152645b600051ff60d81b604e8301526153406053830160008152600c0190565b615356818660601b6001600160601b0319169052565b6153636014820185615121565b95945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826153cd576153cd614fc7565b500690565b6000816153e1576153e1614f98565b506000190190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061541c90830184614849565b9695505050505050565b60006020828403121561543857600080fd5b815161461c816147f256fe8b810f233ce7ee6e962ab4d98bf0277751de1f5589de3dcc812ac2047994d009b96a30340e86d03ce4be42f94ac02d7b27b4a4cdae942beb69026718dfe66afca2646970667358221220911b79032c85bacd9fa21c2a6b3ea2a166a39ac289c340d8ea56175af7a77e3264736f6c634300081100338b810f233ce7ee6e962ab4d98bf0277751de1f5589de3dcc812ac2047994d009",
1939
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104145760003560e01c8063715018a611610223578063b75395e01161012c578063b75395e014610a4d578063b7b04fae14610a60578063b88d4fde14610a73578063b971136814610a86578063bb3bafd614610a8e578063bd3d10e714610aaf578063c34a03b514610ac2578063c6c7c5bf14610ad5578063c87b56dd14610ae8578063cc90e72514610afb578063d03c390c14610b0e578063db21a84614610b21578063db2ff86114610b34578063e6032df214610b47578063e935b7b114610b6e578063e985e9c514610b7f578063eb9cd5d414610b92578063ed8abfda14610bb4578063f2fde38b14610bde578063f313d73314610bf1578063f851a44014610c87578063f893c07b14610c8f57600080fd5b8063715018a61461081757806376ee6fab1461081f5780638639415b146108325780638c3c9cdd1461088d5780638da5cb5b146108a05780638dd91a56146108a857806392f00233146108cc57806395d89b41146108df5780639a02e4fa146108e7578063a11ec70a1461091e578063a22cb46514610931578063a3b2cca614610944578063a47d29cb14610957578063abcbb7b414610983578063ac11fa1c1461098b578063acad0124146109ab578063acd4c66f146109be578063ad0305ce146109d0578063ad2cdfc4146109f2578063ae45ad9814610a1f578063b1656ba314610a27578063b168762214610a3a57600080fd5b806328ec8f501161032557806328ec8f501461063c5780632b274166146106695780632b65e67d1461067c5780632b8258c51461068f5780632d9c02051461069857806330ef4c5f146106ab57806336c7c12c146106bd57806337859963146106d057806338c8e468146106e35780633bb225531461070f5780633e48e8481461071857806341814cd31461072b57806342842e0e1461073e57806348337282146107515780634e1d64af146107645780635508fd521461076c57806358b9a5a914610780578063621a1f74146107b85780636352211e146107cb57806369d14faf146107de5780636c907b7f146107f157806370a082311461080457600080fd5b80611e3c146104195780615de51461042e5780630132c6971461045457806301856fd41461046757806301ffc9a71461047a57806304143a5c1461049d57806306fdde03146104a5578063081812fc146104ba578063095ea7b3146104e55780630d170673146104f85780630e79c9281461050b5780630ea5613f1461051e5780630ebeb0ee1461056857806317df5366146105915780631ab6014c146105a45780631b689c0b146105b75780631c05cad7146105ca5780631e9bef46146105dd5780632302cbda146105f0578063230448b11461060357806323b872dd1461061657806325b75d6814610629575b600080fd5b61042c610427366004614741565b610cb6565b005b61044161043c366004614778565b610de5565b6040519081526020015b60405180910390f35b61042c6104623660046147ba565b611089565b61042c610475366004614741565b6111af565b61048d610488366004614808565b611263565b604051901515815260200161044b565b61042c61128e565b6104ad6112f6565b60405161044b9190614875565b6104cd6104c8366004614888565b611388565b6040516001600160a01b03909116815260200161044b565b61042c6104f33660046148a1565b6113af565b61042c610506366004614978565b6114c4565b61042c610519366004614978565b611529565b61053161052c366004614888565b611725565b60408051968752602087019590955292151593850193909352151560608401526080830191909152151560a082015260c00161044b565b6104cd610576366004614888565b6000908152600c60205260409020546001600160a01b031690565b6007546104cd906001600160a01b031681565b600f546104cd906001600160a01b031681565b6104416105c5366004614888565b611788565b61042c6105d83660046149be565b611797565b600a546104cd906001600160a01b031681565b61042c6105fe366004614a1a565b6117d7565b61048d610611366004614a4e565b6117fc565b61042c610624366004614a8e565b6118a8565b61042c610637366004614978565b6118d9565b61044161064a366004614888565b6000908152600c6020526040902060010154600160a01b900460ff1690565b61042c610677366004614acf565b611941565b61042c61068a366004614aec565b6119ad565b61044160135481565b6104ad6106a6366004614888565b611d13565b600f54600160a01b900460ff16610441565b6008546104cd906001600160a01b031681565b61042c6106de366004614978565b611db8565b6104cd6106f1366004614888565b6000908152600c60205260409020600101546001600160a01b031690565b61044160115481565b61042c610726366004614978565b611e06565b6010546104cd906001600160a01b031681565b61042c61074c366004614a8e565b611e5d565b61042c61075f366004614acf565b611e78565b6104ad611edb565b60155461048d90600160f81b900460ff1681565b6104cd61078e366004614741565b6000918252600b60209081526040808420928452600990920190529020546001600160a01b031690565b6104416107c6366004614888565b611ef4565b6104cd6107d9366004614888565b611f56565b61042c6107ec366004614b53565b611f8b565b61042c6107ff366004614acf565b612004565b610441610812366004614acf565b612026565b61042c6120ac565b61042c61082d366004614aec565b6120c4565b610845610840366004614741565b61228c565b604080519889526001600160a01b0397881660208a015288019590955292851660608701526080860191909152831660a085015260c08401521660e08201526101000161044b565b6104ad61089b366004614741565b612395565b6104cd6123f4565b6108bb6108b6366004614888565b612408565b60405161044b959493929190614b78565b6014546104cd906001600160a01b031681565b6104ad6126fc565b6109116108f5366004614888565b600090815260026020526040902054600160a01b900460a01b90565b60405161044b9190614be5565b61042c61092c366004614888565b61270b565b61042c61093f366004614c08565b612763565b61042c610952366004614978565b612772565b6104cd610965366004614888565b6000908152600c60205260409020600201546001600160a01b031690565b6104ad61285e565b610441610999366004614888565b600d6020526000908152604090205481565b61042c6109b9366004614978565b6128ec565b600e54600160a01b900460ff16610441565b61048d6109de366004614acf565b6014546001600160a01b0390811691161490565b610441610a00366004614888565b6000908152600c6020526040902060020154600160a01b900460ff1690565b6104ad6129bf565b61042c610a35366004614c36565b6129e3565b6104cd610a48366004614888565b612ac8565b600e546104cd906001600160a01b031681565b61042c610a6e366004614978565b612b40565b61042c610a81366004614c85565b612bab565b600954610441565b610aa1610a9c366004614888565b612bdd565b60405161044b929190614d04565b61042c610abd366004614741565b612e71565b61042c610ad0366004614741565b612f3d565b6012546104cd906001600160a01b031681565b6104ad610af6366004614888565b612fde565b61042c610b09366004614d88565b6130c6565b61042c610b1c366004614888565b61321b565b61042c610b2f366004614741565b613283565b61042c610b42366004614888565b613322565b61048d7f000000000000000000000000000000000000000000000000000000000000000081565b6015546001600160f81b0316610441565b61048d610b8d366004614dce565b61342f565b610ba5610ba0366004614888565b61345d565b60405161044b93929190614dfc565b610441610bc2366004614888565b6000908152600c6020526040902054600160a01b900460ff1690565b61042c610bec366004614acf565b613529565b610c49610bff366004614888565b6000908152600c60205260409020600281015481546001909201546001600160a01b03808316948482169460ff600160a01b95869004811695938516948490048116939091041690565b604080516001600160a01b039788168152958716602087015285019390935293166060830152608082019290925260a081019190915260c00161044b565b6104cd61359f565b6104417f000000000000000000000000000000000000000000000000000000000000000081565b610cbf82613611565b60008281526002602052604090206008546001600160a01b03163314610d265760405162461bcd60e51b815260206004820152601760248201527613db9b1e481c985b991bdb5a5e995c881b585e481cd95d604a1b60448201526064015b60405180910390fd5b8054600160a01b900460a01b6001600160a01b03191615610d825760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881a185cda08185b1c9958591e481cd95d60521b6044820152606401610d1d565b81610dc35760405162461bcd60e51b8152602060048201526011602482015270139bc81e995c9bc81a185cda081cd95959607a1b6044820152606401610d1d565b805460a09290921c600160a01b026001600160a01b0390921691909117905550565b6014546000906001600160a01b03163314610e425760405162461bcd60e51b815260206004820152601e60248201527f4d757374206d696e742066726f6d206d696e74657220636f6e747261637400006044820152606401610d1d565b6000838152600b60205260409020805462ffffff808216916001830191630100000090910416808310610eb75760405162461bcd60e51b815260206004820152601f60248201527f4d757374206e6f7420657863656564206d617820696e766f636174696f6e73006044820152606401610d1d565b8354600160881b900460ff1680610eea57506000878152600c60205260409020600201546001600160a01b038781169116145b610f365760405162461bcd60e51b815260206004820181905260248201527f50726f6a656374206d75737420657869737420616e64206265206163746976656044820152606401610d1d565b8354600160901b900460ff161580610f6a57506000878152600c60205260409020600201546001600160a01b038781169116145b610fae5760405162461bcd60e51b8152602060048201526015602482015274283ab931b430b9b2b99030b932903830bab9b2b21760591b6044820152606401610d1d565b835462ffffff191662ffffff8381169182178655848116620f42408a0201919083169003610fdf57610fdf88613660565b610fe989826136b8565b600854604051635b140b8d60e11b8152600481018390526001600160a01b039091169063b628171a90602401600060405180830381600087803b15801561102f57600080fd5b505af1158015611043573d6000803e3d6000fd5b50506040518392506001600160a01b038c1691507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688590600090a398975050505050505050565b611092826137ea565b6000828152600b60205260409020805462ffffff80821691630100000090048116908416106111025760405162461bcd60e51b815260206004820152601c60248201527b4f6e6c79206d6178496e766f636174696f6e7320646563726561736560201b6044820152606401610d1d565b808362ffffff16101561114e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c792067746520696e766f636174696f6e7360601b6044820152606401610d1d565b815465ffffff0000001916630100000062ffffff8516021782556040516d6d6178496e766f636174696f6e7360901b90859060008051602061546483398151915290600090a3808362ffffff16036111a9576111a984613660565b50505050565b6111b882613841565b6111c88262615bf560e21b613889565b6000828152600b602052604090819020906111e69083906001613903565b61122f5760405162461bcd60e51b815260206004820152601a60248201527901b5d5cdd0818dbdb9d185a5b88195e1858dd1b1e481bdb9948160361b6044820152606401610d1d565b60078101829055604051697363726970745479706560b01b90849060008051602061546483398151915290600090a3505050565b60006001600160e01b03198216635d9dd7eb60e11b1480611288575061128882613976565b92915050565b61129e6301050e9760e21b6139c6565b601554600160f81b900460ff16156112ec5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903337b93134b23232b760791b6044820152606401610d1d565b6112f4613a16565b565b60606000805461130590614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461133190614e32565b801561137e5780601f106113535761010080835404028352916020019161137e565b820191906000526020600020905b81548152906001019060200180831161136157829003601f168201915b5050505050905090565b600061139382613a6e565b506000908152600460205260409020546001600160a01b031690565b60006113ba82611f56565b9050806001600160a01b0316836001600160a01b0316036114275760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610d1d565b336001600160a01b03821614806114435750611443813361342f565b6114b55760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610d1d565b6114bf8383613a93565b505050565b6114cd82613841565b6114de82630d17067360e01b613889565b6114e781613b01565b6000828152600b602052604090206001016115028282614ec9565b50604051636e616d6560e01b90839060008051602061546483398151915290600090a35050565b61153282613841565b611543826301cf392560e31b613889565b61154c81613b01565b80518190600b8111156115a05760405162461bcd60e51b815260206004820152601c60248201527b41737065637420726174696f20666f726d617420746f6f206c6f6e6760201b6044820152606401610d1d565b60008060005b8381101561168c5760008582815181106115c2576115c2614f82565b01602001516001600160f81b0319169050600360fc1b81108015906115f55750603960f81b6001600160f81b0319821611155b1561160457600192505061167a565b6001600160f81b03198116601760f91b03611628578361162857600193505061167a565b60405162461bcd60e51b815260206004820152602160248201527f496d70726f7065726c7920666f726d61747465642061737065637420726174696044820152606f60f81b6064820152608401610d1d565b8061168481614fae565b9150506115a6565b50806116d85760405162461bcd60e51b815260206004820152601b60248201527a41737065637420726174696f20686173206e6f206e756d6265727360281b6044820152606401610d1d565b6000868152600b602052604090206008016116f38682614ec9565b506040516a617370656374526174696f60a81b90879060008051602061546483398151915290600090a3505050505050565b6000818152600b60205260408120805462ffffff808216936301000000830490911692600160881b830460ff90811693600160901b810490911692600160481b9091046001600160401b03169161177b88613b50565b1591505091939550919395565b6000611288620f424083614fdd565b6117a7631c05cad760e01b6139c6565b6117b084613b9a565b6117b983613b9a565b6117c282613b9a565b6117cb81613b9a565b6111a984848484613bee565b6117e763118165ed60e11b6139c6565b6117f081613b01565b6117f981613c70565b50565b6000806118076123f4565b6001600160a01b0316141580156118a05750600a546040516217798b60e61b81526001600160a01b03868116600483015285811660248301526001600160e01b031985166044830152909116906305de62c0906064016020604051808303816000875af115801561187c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a09190614ff1565b949350505050565b6118b23382613caa565b6118ce5760405162461bcd60e51b8152600401610d1d9061500e565b6114bf838383613d08565b6118e282613841565b6118f3826304b6ebad60e31b613889565b6118fc81613b01565b6000828152600b602052604090206005016119178282614ec9565b50604051666c6963656e736560c81b90839060008051602061546483398151915290600090a35050565b611951631593a0b360e11b6139c6565b61195a81613b9a565b600780546001600160a01b0319166001600160a01b03831617905560405178646570656e64656e637952656769737472794164647265737360381b9060008051602061544483398151915290600090a250565b6119b686613ea4565b6119bf866137ea565b6119c885613b9a565b6000868152600c60205260409020606484118015906119e8575060648211155b611a225760405162461bcd60e51b815260206004820152600b60248201526a4d6178206f66203130302560a81b6044820152606401610d1d565b831580611a3757506001600160a01b03851615155b611a835760405162461bcd60e51b815260206004820152601d60248201527f5072696d617279207061796565206973207a65726f20616464726573730000006044820152606401610d1d565b811580611a9857506001600160a01b03831615155b611ae45760405162461bcd60e51b815260206004820152601f60248201527f5365636f6e64617279207061796565206973207a65726f2061646472657373006044820152606401610d1d565b867f6ff7d102bb3657a26dcbbcd299d821a066718a7cf76ae7cd98279f18b74da8ac8787878787604051611b1c95949392919061505c565b60405180910390a27f000000000000000000000000000000000000000000000000000000000000000080611bc257600282015482546001600160a01b03918216898316149160009181169089161480611b7c57506001600160a01b038816155b60018501549091506000906001600160a01b0388811691161480611ba757506001600160a01b038716155b9050828015611bb35750815b8015611bbc5750805b93505050505b8015611cca576000801b600d60008a815260200190815260200160002081905550868260020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858260000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550848260020160146101000a81548160ff021916908360ff160217905550838260010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828260010160146101000a81548160ff021916908360ff160217905550877fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a2611d09565b8686868686604051602001611ce395949392919061505c565b60408051601f19818403018152918152815160209283012060008b8152600d9093529120555b5050505050505050565b6000818152600b60205260409020600601805460609190611d3390614e32565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5f90614e32565b8015611dac5780601f10611d8157610100808354040283529160200191611dac565b820191906000526020600020905b815481529060010190602001808311611d8f57829003601f168201915b50505050509050919050565b611dc1826137ea565b6000828152600b60205260409020600401611ddc8282614ec9565b50604051667765627369746560c81b90839060008051602061546483398151915290600090a35050565b611e0f826137ea565b611e1881613b01565b6000828152600b60205260409020600601611e338282614ec9565b50604051666261736555524960c81b90839060008051602061546483398151915290600090a35050565b6114bf83838360405180602001604052806000815250612bab565b611e88632419b94160e11b6139c6565b611e9181613b9a565b601480546001600160a01b0319166001600160a01b0383169081179091556040517fad0f299ec81a386c98df0ac27dae11dd020ed1b56963c53a7292e7a3a314539a90600090a250565b6060611eef653b199718971960d11b613f26565b905090565b600081815260026020526040812054600160a01b900460a01b6001600160a01b031981168203611f275750600092915050565b80604051602001611f389190614be5565b60405160208183030381529060405280519060200120915050919050565b6000818152600260205260408120546001600160a01b0316806112885760405162461bcd60e51b8152600401610d1d9061508f565b611f9482613ea4565b611fa5826369d14faf60e01b613f91565b611fae81613b9a565b6000828152600c602052604080822060020180546001600160a01b0319166001600160a01b038516179055516c6172746973744164647265737360981b9184916000805160206154648339815191529190a35050565b612014636c907b7f60e01b6139c6565b61201d81613b9a565b6117f981614048565b60006001600160a01b0382166120905760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d1d565b506001600160a01b031660009081526003602052604090205490565b6120b46140cf565b6120bc613a16565b6112f461412e565b6120cd86613ea4565b6120de866376ee6fab60e01b613f91565b6120e785613b9a565b848484848460405160200161210095949392919061505c565b60408051601f1981840301815291815281516020928301206000898152600d9093529120541461216f5760405162461bcd60e51b815260206004820152601a602482015279135d5cdd081b585d18da08185c9d1a5cdd081c1c9bdc1bdcd85b60321b6044820152606401610d1d565b6000600c60008881526020019081526020016000209050858160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550848160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838160020160146101000a81548160ff021916908360ff160217905550828160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818160010160146101000a81548160ff021916908360ff1602179055506000801b600d600089815260200190815260200160002081905550867fc582d05e1da854143bd3271ef4529d79cf5a69fc6057ae320f357acfd291b73860405160405180910390a250505050505050565b6000828152600c60205260408120600e548291829182918291829182918291908a906064906122c590600160a01b900460ff16836150c1565b6122cf9190614fdd565b99506122db8a826150d8565b600f549091506064906122f890600160a01b900460ff168d6150c1565b6123029190614fdd565b975061230e88826150d8565b600283015490915060649061232d90600160a01b900460ff16836150c1565b6123379190614fdd565b935061234384826150d8565b600e54600f546001600160a01b039182169b50169750955085156123725760028201546001600160a01b031694505b83156123865781546001600160a01b031692505b50509295985092959890939650565b6000828152600b60205260409020805460609190600160301b900462ffffff1683106123d1575050604080516020810190915260008152611288565b60008381526009820160205260409020546118a0906001600160a01b0316614140565b6000611eef6006546001600160a01b031690565b60608060608060606000600b6000888152602001908152602001600020905080600101805461243690614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461246290614e32565b80156124af5780601f10612484576101008083540402835291602001916124af565b820191906000526020600020905b81548152906001019060200180831161249257829003601f168201915b505050505095508060020180546124c590614e32565b80601f01602080910402602001604051908101604052809291908181526020018280546124f190614e32565b801561253e5780601f106125135761010080835404028352916020019161253e565b820191906000526020600020905b81548152906001019060200180831161252157829003601f168201915b5050505050945080600301805461255490614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461258090614e32565b80156125cd5780601f106125a2576101008083540402835291602001916125cd565b820191906000526020600020905b8154815290600101906020018083116125b057829003601f168201915b505050505093508060040180546125e390614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461260f90614e32565b801561265c5780601f106126315761010080835404028352916020019161265c565b820191906000526020600020905b81548152906001019060200180831161263f57829003601f168201915b5050505050925080600501805461267290614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461269e90614e32565b80156126eb5780601f106126c0576101008083540402835291602001916126eb565b820191906000526020600020905b8154815290600101906020018083116126ce57829003601f168201915b505050505091505091939590929450565b60606001805461130590614e32565b612714816137ea565b6000818152600b6020526040808220805460ff60901b198116600160901b9182900460ff161590910217905551651c185d5cd95960d21b9183916000805160206154648339815191529190a350565b61276e3383836141cb565b5050565b61277b82613b50565b6127965761279133306351d9665360e11b6117fc565b6127b4565b6000828152600c60205260409020600201546001600160a01b031633145b6128155760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c7920617274697374207768656e20756e6c6f636b65642c206f776e657260448201526b081dda195b881b1bd8dad95960a21b6064820152608401610d1d565b6000828152600b602052604090206003016128308282614ec9565b506040516a3232b9b1b934b83a34b7b760a91b90839060008051602061546483398151915290600090a35050565b6016805461286b90614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461289790614e32565b80156128e45780601f106128b9576101008083540402835291602001916128e4565b820191906000526020600020905b8154815290600101906020018083116128c757829003601f168201915b505050505081565b6128f582613841565b61290682632b2b404960e21b613889565b61290f81613b01565b6000828152600b6020526040902061292682614295565b8154600160301b9081900462ffffff9081166000908152600985016020526040902080546001600160a01b0319166001600160a01b0394909416939093179092558254612978929190041660016150eb565b815462ffffff91909116600160301b0262ffffff60301b19909116178155604051651cd8dc9a5c1d60d21b90849060008051602061546483398151915290600090a3505050565b6060611eef7547656e417274373231436f726556335f456e67696e6560501b613f26565b6129ec83613841565b6129fd8363b1656ba360e01b613889565b612a0681613b01565b6000838152600b602052604090208054600160301b900462ffffff168310612a685760405162461bcd60e51b81526020600482015260156024820152747363726970744964206f7574206f662072616e676560581b6044820152606401610d1d565b612a7182614295565b600084815260098301602052604080822080546001600160a01b0319166001600160a01b0394909416939093179092559051651cd8dc9a5c1d60d21b9186916000805160206154648339815191529190a350505050565b6009546000908210612b125760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610d1d565b60098281548110612b2557612b25614f82565b6000918252602090912001546001600160a01b031692915050565b612b4982613841565b612b5a82635bd827d760e11b613889565b612b6381613b01565b6000828152600b60205260409020600201612b7e8282614ec9565b50604051696172746973744e616d6560b01b90839060008051602061546483398151915290600090a35050565b612bb53383613caa565b612bd15760405162461bcd60e51b8152600401610d1d9061500e565b6111a984848484614323565b606080612be983613611565b60408051600480825260a082019092529060208201608080368337505060408051600480825260a082019092529294509050602082016080803683370190505090506000612c3684611788565b6000818152600c6020526040812080546001820154939450909260ff600160a01b9283900481169392909104169082612c708360646150d8565b612c7a91906150c1565b90506000612c8884846150c1565b6011546013549192509060008415612d025760028801548b516001600160a01b03909116908c9083908110612cbf57612cbf614f82565b6001600160a01b0390921660209283029190910190910152848a82612ce381614fae565b935081518110612cf557612cf5614f82565b6020026020010181815250505b8315612d705760018801548b516001600160a01b03909116908c9083908110612d2d57612d2d614f82565b6001600160a01b0390921660209283029190910190910152838a82612d5181614fae565b935081518110612d6357612d63614f82565b6020026020010181815250505b8215612ddc576010548b516001600160a01b03909116908c9083908110612d9957612d99614f82565b6001600160a01b0390921660209283029190910190910152828a82612dbd81614fae565b935081518110612dcf57612dcf614f82565b6020026020010181815250505b8115612e48576012548b516001600160a01b03909116908c9083908110612e0557612e05614f82565b6001600160a01b0390921660209283029190910190910152818a82612e2981614fae565b935081518110612e3b57612e3b614f82565b6020026020010181815250505b8060041115612e635780600403808c51038c52808b51038b52505b505050505050505050915091565b612e8163bd3d10e760e01b6139c6565b6064612e8d828461510e565b1115612ed65760405162461bcd60e51b81526020600482015260186024820152774d61782073756d206f66204f4e455f48554e44524544202560401b6044820152606401610d1d565b600e805460ff808516600160a01b90810260ff60a01b1993841617909355600f805491851690930291161790556040517970726f76696465725072696d61727950657263656e746167657360301b9060008051602061544483398151915290600090a25050565b612f46826137ea565b605f811115612f8a5760405162461bcd60e51b815260206004820152601060248201526f13dd995c881b585e081c195c98d95b9d60821b6044820152606401610d1d565b6000828152600c6020526040808220805460ff60a01b1916600160a01b60ff8616021790555170726f79616c747950657263656e7461676560781b9184916000805160206154648339815191529190a35050565b6060612fe982613611565b6000600b6000612ff885611788565b8152602001908152602001600020600601805461301490614e32565b80601f016020809104026020016040519081016040528092919081815260200182805461304090614e32565b801561308d5780601f106130625761010080835404028352916020019161308d565b820191906000526020600020905b81548152906001019060200180831161307057829003601f168201915b505050505090508061309e84614356565b6040516020016130af92919061513d565b604051602081830303815290604052915050919050565b6130d663cc90e72560e01b6139c6565b6130df82613b01565b6130e881613b9a565b601554600160f81b900460ff161561313b5760405162461bcd60e51b81526020600482015260166024820152752732bb90383937b532b1ba39903337b93134b23232b760511b6044820152606401610d1d565b6015546001600160f81b03166000818152600c6020908152604080832060020180546001600160a01b0319166001600160a01b038716179055600b90915290206001016131888482614ec9565b506000818152600b60205260409020805465ffffff00000060ff60901b011916613d09601e1b600160901b011781556006016131c560168261516c565b506131d1816001615240565b601580546001600160f81b0319166001600160f81b03929092169190911790556040516618dc99585d195960ca1b90829060008051602061546483398151915290600090a3505050565b61322b63340f0e4360e21b6139c6565b61323481613ea4565b6000818152600b6020526040808220805460ff60881b198116600160881b9182900460ff1615909102179055516561637469766560d01b9183916000805160206154648339815191529190a350565b613293636d90d42360e11b6139c6565b6127106132a0828461510e565b11156132e45760405162461bcd60e51b81526020600482015260136024820152724f766572206d61782073756d206f662042505360681b6044820152606401610d1d565b601182905560138190556040517370726f76696465725365636f6e6461727942505360601b9060008051602061544483398151915290600090a25050565b61332b81613841565b61333c8163db2ff86160e01b613889565b6000818152600b602052604090208054600160301b900462ffffff1661339b5760405162461bcd60e51b81526020600482015260146024820152734e6f207363726970747320746f2072656d6f766560601b6044820152606401610d1d565b805460098201906000906133bd90600190600160301b900462ffffff16615260565b62ffffff908116825260208201929092526040908101600090812080546001600160a01b0319169055835462ffffff60301b198116600160301b918290048516600019019094160292909217835551651cd8dc9a5c1d60d21b9184916000805160206154648339815191529190a35050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600b6020526040812060078101546060928392909161348090613f26565b935080600801805461349190614e32565b80601f01602080910402602001604051908101604052809291908181526020018280546134bd90614e32565b801561350a5780601f106134df5761010080835404028352916020019161350a565b820191906000526020600020905b8154815290600101906020018083116134ed57829003601f168201915b5050935496989297505050600160301b90940462ffffff169392505050565b6135316140cf565b6001600160a01b0381166135965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d1d565b6117f981614456565b6000611eef6123f4565b60606112886001600160a01b0383166014614481565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61361a81614623565b6117f95760405162461bcd60e51b8152602060048201526017602482015276151bdad95b88125108191bd95cc81b9bdd08195e1a5cdd604a1b6044820152606401610d1d565b6000818152600b6020526040808220805467ffffffffffffffff60481b1916600160481b426001600160401b031602179055516818dbdb5c1b195d195960ba1b9183916000805160206154648339815191529190a350565b6001600160a01b03821661370e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d1d565b61371781614623565b156137635760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401610d1d565b6001600160a01b038216600090815260036020526040812080546001929061378c90849061510e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600c60205260409020600201546001600160a01b031633146117f95760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48185c9d1a5cdd60aa1b6044820152606401610d1d565b61384a81613b50565b6117f95760405162461bcd60e51b815260206004820152601060248201526f13db9b1e481a59881d5b9b1bd8dad95960821b6044820152606401610d1d565b6000828152600c60205260409020600201546001600160a01b03163314806138b757506138b73330836117fc565b61276e5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c7920617274697374206f722041646d696e2041434c20616c6c6f7765646044820152606401610d1d565b600080805b60208160ff161015613962576000868260ff166020811061392b5761392b614f82565b1a90508015801590613940575060808160ff16105b15613959578560ff168160ff1603613959578260010192505b50600101613908565b8360ff168260ff1614925050509392505050565b60006001600160e01b031982166380ac58cd60e01b14806139a757506001600160e01b03198216635b5e139f60e01b145b8061128857506301ffc9a760e01b6001600160e01b0319831614611288565b6139d13330836117fc565b6117f95760405162461bcd60e51b815260206004820152601660248201527513db9b1e4810591b5a5b881050d308185b1b1bddd95960521b6044820152606401610d1d565b601554600160f81b900460ff166112f457601580546001600160f81b0316600160f81b179055604051733732bba83937b532b1ba39a337b93134b23232b760611b9060008051602061544483398151915290600090a2565b613a7781614623565b6117f95760405162461bcd60e51b8152600401610d1d9061508f565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613ac882611f56565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b80516000036117f95760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d656d70747920737472696e6760281b6044820152606401610d1d565b6000613b5b82613ea4565b6000828152600b6020526040902054600160481b90046001600160401b0316801580806118a057506224ea00613b9183426150d8565b10949350505050565b6001600160a01b0381166117f95760405162461bcd60e51b815260206004820152601b60248201527a4d75737420696e707574206e6f6e2d7a65726f206164647265737360281b6044820152606401610d1d565b600f80546001600160a01b038085166001600160a01b03199283161790925560128054848416908316179055600e805487841690831617905560108054928616929091169190911790556040517570726f766964657253616c657341646472657373657360501b9060008051602061544483398151915290600090a250505050565b6016613c7c8282614ec9565b506040516d64656661756c744261736555524960901b9060008051602061544483398151915290600090a250565b600080613cb683611f56565b9050806001600160a01b0316846001600160a01b03161480613cdd5750613cdd818561342f565b806118a05750836001600160a01b0316613cf684611388565b6001600160a01b031614949350505050565b826001600160a01b0316613d1b82611f56565b6001600160a01b031614613d7f5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610d1d565b6001600160a01b038216613de15760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d1d565b613dec600082613a93565b6001600160a01b0383166000908152600360205260408120805460019290613e159084906150d8565b90915550506001600160a01b0382166000908152600360205260408120805460019290613e4390849061510e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b7f00000000000000000000000000000000000000000000000000000000000000008110158015613ede57506015546001600160f81b031681105b6117f95760405162461bcd60e51b8152602060048201526019602482015278141c9bda9958dd08125108191bd95cc81b9bdd08195e1a5cdd603a1b6044820152606401610d1d565b606060005b828160ff1660208110613f4057613f40614f82565b1a60f81b6001600160f81b03191615801590613f5f575060208160ff16105b15613f765780613f6e8161527c565b915050613f2b565b60405191506040820160405280825282602083015250919050565b613f9c3330836117fc565b80613fdb57506000613fac6123f4565b6001600160a01b0316148015613fdb57506000828152600c60205260409020600201546001600160a01b031633145b61276e5760405162461bcd60e51b815260206004820152603860248201527f4f6e6c792041646d696e2041434c20616c6c6f7765642c206f722061727469736044820152771d081a59881bdddb995c881a185cc81c995b9bdd5b98d95960421b6064820152608401610d1d565b600880546001600160a01b0383166001600160a01b031991821681179092556009805460018101825560009182527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805490921690921790556040517072616e646f6d697a65724164647265737360781b9160008051602061544483398151915291a250565b336140d86123f4565b6001600160a01b0316146112f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d1d565b6141366140cf565b6112f46000614456565b6060813b6068811080614151575080155b1561419e5760405162461bcd60e51b815260206004820152601d60248201527f436f6e7472616374417353746f726167653a2052656164204572726f720000006044820152606401610d1d565b604080516028198301601f19168101909152606719820180825290925080606860208501863c5050919050565b816001600160a01b0316836001600160a01b0316036142285760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610d1d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008030836040516020016142ab92919061529b565b60405160208183030381529060405290508051602082016000f091506001600160a01b03821661431d5760405162461bcd60e51b815260206004820152601e60248201527f436f6e7472616374417353746f726167653a205772697465204572726f7200006044820152606401610d1d565b50919050565b61432e848484613d08565b61433a84848484614640565b6111a95760405162461bcd60e51b8152600401610d1d9061536c565b60608160000361437d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156143a7578061439181614fae565b91506143a09050600a83614fdd565b9150614381565b6000816001600160401b038111156143c1576143c16148cd565b6040519080825280601f01601f1916602001820160405280156143eb576020820181803683370190505b5090505b84156118a0576144006001836150d8565b915061440d600a866153be565b61441890603061510e565b60f81b81838151811061442d5761442d614f82565b60200101906001600160f81b031916908160001a90535061444f600a86614fdd565b94506143ef565b61445f816135bf565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b606060006144908360026150c1565b61449b90600261510e565b6001600160401b038111156144b2576144b26148cd565b6040519080825280601f01601f1916602001820160405280156144dc576020820181803683370190505b509050600360fc1b816000815181106144f7576144f7614f82565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061452657614526614f82565b60200101906001600160f81b031916908160001a905350600061454a8460026150c1565b61455590600161510e565b90505b60018111156145cd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061458957614589614f82565b1a60f81b82828151811061459f5761459f614f82565b60200101906001600160f81b031916908160001a90535060049490941c936145c6816153d2565b9050614558565b50831561461c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d1d565b9392505050565b6000908152600260205260409020546001600160a01b0316151590565b60006001600160a01b0384163b1561473657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906146849033908990889088906004016153e9565b6020604051808303816000875af19250505080156146bf575060408051601f3d908101601f191682019092526146bc91810190615426565b60015b61471c573d8080156146ed576040519150601f19603f3d011682016040523d82523d6000602084013e6146f2565b606091505b5080516000036147145760405162461bcd60e51b8152600401610d1d9061536c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506118a0565b506001949350505050565b6000806040838503121561475457600080fd5b50508035926020909101359150565b6001600160a01b03811681146117f957600080fd5b60008060006060848603121561478d57600080fd5b833561479881614763565b92506020840135915060408401356147af81614763565b809150509250925092565b600080604083850312156147cd57600080fd5b82359150602083013562ffffff811681146147e757600080fd5b809150509250929050565b6001600160e01b0319811681146117f957600080fd5b60006020828403121561481a57600080fd5b813561461c816147f2565b60005b83811015614840578181015183820152602001614828565b50506000910152565b60008151808452614861816020860160208601614825565b601f01601f19169290920160200192915050565b60208152600061461c6020830184614849565b60006020828403121561489a57600080fd5b5035919050565b600080604083850312156148b457600080fd5b82356148bf81614763565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156148fd576148fd6148cd565b604051601f8501601f19908116603f01168101908282118183101715614925576149256148cd565b8160405280935085815286868601111561493e57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261496957600080fd5b61461c838335602085016148e3565b6000806040838503121561498b57600080fd5b8235915060208301356001600160401b038111156149a857600080fd5b6149b485828601614958565b9150509250929050565b600080600080608085870312156149d457600080fd5b84356149df81614763565b935060208501356149ef81614763565b925060408501356149ff81614763565b91506060850135614a0f81614763565b939692955090935050565b600060208284031215614a2c57600080fd5b81356001600160401b03811115614a4257600080fd5b6118a084828501614958565b600080600060608486031215614a6357600080fd5b8335614a6e81614763565b92506020840135614a7e81614763565b915060408401356147af816147f2565b600080600060608486031215614aa357600080fd5b8335614aae81614763565b92506020840135614abe81614763565b929592945050506040919091013590565b600060208284031215614ae157600080fd5b813561461c81614763565b60008060008060008060c08789031215614b0557600080fd5b863595506020870135614b1781614763565b94506040870135614b2781614763565b9350606087013592506080870135614b3e81614763565b8092505060a087013590509295509295509295565b60008060408385031215614b6657600080fd5b8235915060208301356147e781614763565b60a081526000614b8b60a0830188614849565b8281036020840152614b9d8188614849565b90508281036040840152614bb18187614849565b90508281036060840152614bc58186614849565b90508281036080840152614bd98185614849565b98975050505050505050565b6001600160a01b031991909116815260200190565b80151581146117f957600080fd5b60008060408385031215614c1b57600080fd5b8235614c2681614763565b915060208301356147e781614bfa565b600080600060608486031215614c4b57600080fd5b833592506020840135915060408401356001600160401b03811115614c6f57600080fd5b614c7b86828701614958565b9150509250925092565b60008060008060808587031215614c9b57600080fd5b8435614ca681614763565b93506020850135614cb681614763565b92506040850135915060608501356001600160401b03811115614cd857600080fd5b8501601f81018713614ce957600080fd5b614cf8878235602084016148e3565b91505092959194509250565b604080825283519082018190526000906020906060840190828701845b82811015614d465781516001600160a01b031684529284019290840190600101614d21565b5050508381038285015284518082528583019183019060005b81811015614d7b57835183529284019291840191600101614d5f565b5090979650505050505050565b60008060408385031215614d9b57600080fd5b82356001600160401b03811115614db157600080fd5b614dbd85828601614958565b92505060208301356147e781614763565b60008060408385031215614de157600080fd5b8235614dec81614763565b915060208301356147e781614763565b606081526000614e0f6060830186614849565b8281036020840152614e218186614849565b915050826040830152949350505050565b600181811c90821680614e4657607f821691505b60208210810361431d57634e487b7160e01b600052602260045260246000fd5b601f8211156114bf57600081815260208120601f850160051c81016020861015614e8d5750805b601f850160051c820191505b81811015614eac57828155600101614e99565b505050505050565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614ee257614ee26148cd565b614ef681614ef08454614e32565b84614e66565b602080601f831160018114614f255760008415614f135750858301515b614f1d8582614eb4565b865550614eac565b600085815260208120601f198616915b82811015614f5457888601518255948401946001909101908401614f35565b5085821015614f725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201614fc057614fc0614f98565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614fec57614fec614fc7565b500490565b60006020828403121561500357600080fd5b815161461c81614bfa565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b808202811582820484141761128857611288614f98565b8181038181111561128857611288614f98565b62ffffff81811683821601908082111561510757615107614f98565b5092915050565b8082018082111561128857611288614f98565b60008151615133818560208601614825565b9290920192915050565b6000835161514f818460208801614825565b835190830190615163818360208801614825565b01949350505050565b818103615177575050565b6151818254614e32565b6001600160401b03811115615198576151986148cd565b6151a681614ef08454614e32565b6000601f8211600181146151d457600083156151c25750848201545b6151cc8482614eb4565b855550615239565b600085815260209020601f19841690600086815260209020845b8381101561520e57828601548255600195860195909101906020016151ee565b508583101561522c5781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b6001600160f81b0381811683821601908082111561510757615107614f98565b62ffffff82811682821603908082111561510757615107614f98565b600060ff821660ff810361529257615292614f98565b60010192915050565b6a600b5981380380925939f360a81b81526b1808181218000e5800144cc560a21b600b8201526330082bff60e11b60178201526416d8004d8560da1b601b82015263300cabff60e11b6020820152635b60003560e01b6024820152617fff60f01b6028820152600060488201819052600560fa1b6049830152633021abff60e11b604a830152645b600051ff60d81b604e8301526153406053830160008152600c0190565b615356818660601b6001600160601b0319169052565b6153636014820185615121565b95945050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826153cd576153cd614fc7565b500690565b6000816153e1576153e1614f98565b506000190190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061541c90830184614849565b9695505050505050565b60006020828403121561543857600080fd5b815161461c816147f256fe8b810f233ce7ee6e962ab4d98bf0277751de1f5589de3dcc812ac2047994d009b96a30340e86d03ce4be42f94ac02d7b27b4a4cdae942beb69026718dfe66afca2646970667358221220911b79032c85bacd9fa21c2a6b3ea2a166a39ac289c340d8ea56175af7a77e3264736f6c63430008110033",
1940
1940
  "linkReferences": {},
1941
1941
  "deployedLinkReferences": {}
1942
1942
  }