@tradetrust-yl/token-registry 5.1.2 → 5.2.1

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 (255) hide show
  1. package/dist/app.js +566 -0
  2. package/dist/artifacts/TitleEscrow.sol/TitleEscrow.json +83 -9
  3. package/dist/artifacts/TitleEscrowFactory.sol/TitleEscrowFactory.json +22 -3
  4. package/dist/artifacts/TradeTrustToken.sol/TradeTrustToken.json +125 -2
  5. package/dist/artifacts/base/RegistryAccess.sol/RegistryAccess.dbg.json +1 -1
  6. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.dbg.json +1 -1
  7. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.json +2 -2
  8. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.dbg.json +1 -1
  9. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.json +43 -0
  10. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.dbg.json +1 -1
  11. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.json +86 -0
  12. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.dbg.json +1 -1
  13. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.json +43 -0
  14. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.dbg.json +1 -1
  15. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.json +43 -0
  16. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.dbg.json +1 -1
  17. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.json +86 -0
  18. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.dbg.json +1 -1
  19. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.json +43 -0
  20. package/dist/artifacts/interfaces/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.dbg.json +1 -1
  21. package/dist/artifacts/interfaces/ISBTUpgradeable.sol/ISBTUpgradeable.dbg.json +1 -1
  22. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.dbg.json +1 -1
  23. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.json +42 -6
  24. package/dist/artifacts/interfaces/ITitleEscrowFactory.sol/ITitleEscrowFactory.dbg.json +1 -1
  25. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.dbg.json +1 -1
  26. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.json +42 -6
  27. package/dist/artifacts/interfaces/ITradeTrustSBT.sol/ITradeTrustSBT.dbg.json +1 -1
  28. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.dbg.json +1 -1
  29. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.json +18 -0
  30. package/dist/artifacts/interfaces/ITradeTrustTokenBurnable.sol/ITradeTrustTokenBurnable.dbg.json +1 -1
  31. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.dbg.json +1 -1
  32. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.json +18 -0
  33. package/dist/artifacts/interfaces/ITradeTrustTokenRestorable.sol/ITradeTrustTokenRestorable.dbg.json +1 -1
  34. package/dist/artifacts/interfaces/RegistryAccessErrors.sol/RegistryAccessErrors.dbg.json +1 -1
  35. package/dist/artifacts/interfaces/SigHelperErrors.sol/SigHelperErrors.dbg.json +1 -1
  36. package/dist/artifacts/interfaces/TDocDeployerErrors.sol/TDocDeployerErrors.dbg.json +1 -1
  37. package/dist/artifacts/interfaces/TitleEscrowErrors.sol/TitleEscrowErrors.dbg.json +1 -1
  38. package/dist/artifacts/interfaces/TitleEscrowFactoryErrors.sol/TitleEscrowFactoryErrors.dbg.json +1 -1
  39. package/dist/artifacts/interfaces/TitleEscrowSignableErrors.sol/TitleEscrowSignableErrors.dbg.json +1 -1
  40. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.dbg.json +1 -1
  41. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.json +5 -0
  42. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.dbg.json +1 -1
  43. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.json +2 -2
  44. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.dbg.json +1 -1
  45. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.json +2 -2
  46. package/dist/artifacts/mocks/SigHelperMock.sol/SigHelperMock.dbg.json +1 -1
  47. package/dist/artifacts/mocks/SimpleCaller.sol/SimpleCaller.dbg.json +1 -1
  48. package/dist/artifacts/mocks/TitleEscrowFactoryCallerMock.sol/TitleEscrowFactoryCallerMock.dbg.json +1 -1
  49. package/dist/artifacts/mocks/TitleEscrowFactoryGetterMock.sol/TitleEscrowFactoryGetterMock.dbg.json +1 -1
  50. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.dbg.json +1 -1
  51. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.json +83 -9
  52. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.dbg.json +1 -1
  53. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.json +125 -2
  54. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.dbg.json +1 -1
  55. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.json +87 -8
  56. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.dbg.json +1 -1
  57. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.json +88 -2
  58. package/dist/artifacts/utils/SigHelper.sol/SigHelper.dbg.json +1 -1
  59. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.dbg.json +1 -1
  60. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.json +2 -2
  61. package/dist/constants/default-address.js +5 -3
  62. package/dist/constants/role-hash.js +5 -3
  63. package/dist/contracts/@openzeppelin/contracts/index.ts +2 -0
  64. package/dist/contracts/@openzeppelin/contracts/metatx/ERC2771Context.js +5 -0
  65. package/dist/contracts/@openzeppelin/contracts/metatx/ERC2771Context.ts +111 -0
  66. package/dist/contracts/@openzeppelin/contracts/metatx/index.js +5 -0
  67. package/dist/contracts/@openzeppelin/contracts/{proxy/utils → metatx}/index.ts +1 -1
  68. package/dist/contracts/@openzeppelin/contracts/proxy/Clones.js +5 -0
  69. package/dist/contracts/@openzeppelin/contracts/proxy/Clones.ts +70 -0
  70. package/dist/contracts/@openzeppelin/contracts/proxy/index.ts +1 -2
  71. package/dist/contracts/@openzeppelin/contracts/utils/Create2.js +5 -0
  72. package/dist/contracts/@openzeppelin/contracts/utils/Create2.ts +70 -0
  73. package/dist/contracts/@openzeppelin/contracts/utils/index.ts +1 -0
  74. package/dist/contracts/@openzeppelin/contracts-upgradeable/index.ts +2 -0
  75. package/dist/contracts/@openzeppelin/{contracts/proxy/utils/Initializable.ts → contracts-upgradeable/metatx/ERC2771ContextUpgradeable.ts} +46 -5
  76. package/dist/contracts/@openzeppelin/contracts-upgradeable/metatx/index.ts +5 -0
  77. package/dist/contracts/contracts/TitleEscrow.ts +62 -12
  78. package/dist/contracts/contracts/TitleEscrowFactory.ts +18 -1
  79. package/dist/contracts/contracts/TradeTrustToken.js +2 -1
  80. package/dist/contracts/contracts/TradeTrustToken.ts +120 -0
  81. package/dist/contracts/contracts/base/TradeTrustSBT.ts +29 -0
  82. package/dist/contracts/contracts/base/TradeTrustTokenBase.js +2 -1
  83. package/dist/contracts/contracts/base/TradeTrustTokenBase.ts +88 -0
  84. package/dist/contracts/contracts/base/TradeTrustTokenBaseURI.ts +29 -0
  85. package/dist/contracts/contracts/base/TradeTrustTokenBurnable.ts +29 -0
  86. package/dist/contracts/contracts/base/TradeTrustTokenMintable.js +2 -1
  87. package/dist/contracts/contracts/base/TradeTrustTokenMintable.ts +88 -0
  88. package/dist/contracts/contracts/base/TradeTrustTokenRestorable.ts +29 -0
  89. package/dist/contracts/contracts/interfaces/ITitleEscrow.ts +30 -12
  90. package/dist/contracts/contracts/interfaces/ITitleEscrowSignable.ts +30 -12
  91. package/dist/contracts/contracts/interfaces/ITradeTrustToken.ts +22 -0
  92. package/dist/contracts/contracts/interfaces/ITradeTrustTokenMintable.ts +22 -1
  93. package/dist/contracts/contracts/mocks/TitleEscrowMock.ts +62 -12
  94. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.js +2 -1
  95. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.ts +120 -0
  96. package/dist/contracts/contracts/presets/TitleEscrowSignable.ts +62 -12
  97. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.js +2 -1
  98. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.ts +88 -0
  99. package/dist/contracts/factories/@openzeppelin/contracts/access/IAccessControl__factory.js +3 -1
  100. package/dist/contracts/factories/@openzeppelin/contracts/index.js +4 -3
  101. package/dist/contracts/factories/@openzeppelin/contracts/index.ts +1 -0
  102. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +3 -1
  103. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +3 -1
  104. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/index.js +1 -2
  105. package/dist/contracts/factories/@openzeppelin/contracts/metatx/ERC2771Context__factory.js +45 -0
  106. package/dist/contracts/factories/@openzeppelin/contracts/metatx/ERC2771Context__factory.ts +58 -0
  107. package/dist/contracts/factories/@openzeppelin/contracts/metatx/index.js +12 -0
  108. package/dist/contracts/factories/@openzeppelin/contracts/{proxy/utils → metatx}/index.ts +1 -1
  109. package/dist/contracts/factories/@openzeppelin/contracts/proxy/Clones__factory.js +44 -0
  110. package/dist/contracts/factories/@openzeppelin/contracts/proxy/Clones__factory.ts +70 -0
  111. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +4 -2
  112. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +1 -1
  113. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +3 -1
  114. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.js +9 -5
  115. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.ts +1 -1
  116. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.js +3 -1
  117. package/dist/contracts/factories/@openzeppelin/contracts/token/index.js +1 -2
  118. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.js +4 -2
  119. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.ts +1 -1
  120. package/dist/contracts/factories/@openzeppelin/contracts/utils/Create2__factory.js +44 -0
  121. package/dist/contracts/factories/@openzeppelin/contracts/utils/Create2__factory.ts +70 -0
  122. package/dist/contracts/factories/@openzeppelin/contracts/utils/Errors__factory.js +3 -1
  123. package/dist/contracts/factories/@openzeppelin/contracts/utils/Pausable__factory.js +3 -1
  124. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.js +12 -2
  125. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.ts +11 -1
  126. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.js +3 -1
  127. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.js +8 -2
  128. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.ts +1 -0
  129. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.js +3 -1
  130. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.js +3 -1
  131. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable__factory.js +3 -1
  132. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +3 -1
  133. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.js +4 -3
  134. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.ts +1 -0
  135. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable__factory.js +63 -0
  136. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable__factory.ts +85 -0
  137. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/index.js +12 -0
  138. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/index.ts +5 -0
  139. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +1 -2
  140. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +3 -1
  141. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +3 -1
  142. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +3 -1
  143. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable__factory.js +3 -1
  144. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/index.js +1 -2
  145. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable__factory.js +3 -1
  146. package/dist/contracts/factories/@openzeppelin/index.js +1 -2
  147. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.js +23 -7
  148. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.ts +34 -6
  149. package/dist/contracts/factories/contracts/TitleEscrow__factory.js +72 -12
  150. package/dist/contracts/factories/contracts/TitleEscrow__factory.ts +95 -12
  151. package/dist/contracts/factories/contracts/TradeTrustToken__factory.js +102 -6
  152. package/dist/contracts/factories/contracts/TradeTrustToken__factory.ts +128 -1
  153. package/dist/contracts/factories/contracts/base/RegistryAccess__factory.js +3 -1
  154. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.js +4 -2
  155. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.ts +1 -1
  156. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.js +35 -1
  157. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.ts +43 -0
  158. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.js +35 -1
  159. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.ts +43 -0
  160. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.js +69 -1
  161. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.ts +86 -0
  162. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.js +35 -1
  163. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.ts +43 -0
  164. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.js +69 -1
  165. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.ts +86 -0
  166. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.js +35 -1
  167. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.ts +43 -0
  168. package/dist/contracts/factories/contracts/index.js +1 -2
  169. package/dist/contracts/factories/contracts/interfaces/IERC721MetadataUpgradeable__factory.js +3 -1
  170. package/dist/contracts/factories/contracts/interfaces/ISBTUpgradeable__factory.js +3 -1
  171. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowFactory__factory.js +3 -1
  172. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.js +38 -6
  173. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.ts +42 -6
  174. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.js +38 -6
  175. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.ts +42 -6
  176. package/dist/contracts/factories/contracts/interfaces/ITradeTrustSBT__factory.js +3 -1
  177. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenBurnable__factory.js +3 -1
  178. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.js +17 -1
  179. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.ts +18 -0
  180. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenRestorable__factory.js +3 -1
  181. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.js +17 -1
  182. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.ts +18 -0
  183. package/dist/contracts/factories/contracts/interfaces/RegistryAccessErrors__factory.js +3 -1
  184. package/dist/contracts/factories/contracts/interfaces/SigHelperErrors__factory.js +3 -1
  185. package/dist/contracts/factories/contracts/interfaces/TDocDeployerErrors__factory.js +3 -1
  186. package/dist/contracts/factories/contracts/interfaces/TitleEscrowErrors__factory.js +3 -1
  187. package/dist/contracts/factories/contracts/interfaces/TitleEscrowFactoryErrors__factory.js +3 -1
  188. package/dist/contracts/factories/contracts/interfaces/TitleEscrowSignableErrors__factory.js +3 -1
  189. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.js +7 -1
  190. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.ts +5 -0
  191. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.js +4 -2
  192. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.ts +1 -1
  193. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.js +4 -2
  194. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.ts +1 -1
  195. package/dist/contracts/factories/contracts/mocks/SigHelperMock__factory.js +3 -1
  196. package/dist/contracts/factories/contracts/mocks/SimpleCaller__factory.js +3 -1
  197. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryCallerMock__factory.js +3 -1
  198. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryGetterMock__factory.js +3 -1
  199. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.js +72 -12
  200. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.ts +95 -12
  201. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.js +102 -6
  202. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.ts +128 -1
  203. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.js +75 -11
  204. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.ts +99 -11
  205. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.js +70 -2
  206. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.ts +87 -1
  207. package/dist/contracts/factories/contracts/utils/SigHelper__factory.js +3 -1
  208. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.js +4 -2
  209. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.ts +1 -1
  210. package/dist/contracts/factories/index.js +1 -2
  211. package/dist/contracts/hardhat.d.ts +70 -16
  212. package/dist/contracts/index.js +29 -2
  213. package/dist/contracts/index.ts +8 -0
  214. package/dist/index.js +1 -2
  215. package/dist/models/common.js +5 -0
  216. package/dist/models/freightForwarder.js +5 -0
  217. package/dist/models/shipOwner.js +5 -0
  218. package/dist/services/admin/adminRepository.js +77 -0
  219. package/dist/services/crypto.js +215 -0
  220. package/dist/services/database.js +36 -0
  221. package/dist/services/freightForwarder/freightForwarderRepository.js +94 -0
  222. package/dist/services/shipOwner/shipOwnerController.js +77 -0
  223. package/dist/services/shipOwner/shipOwnerRepository.js +94 -0
  224. package/dist/services/shipOwner/shipOwnerRoutes.js +18 -0
  225. package/dist/types/app.d.ts +1 -0
  226. package/dist/types/constants/contract-address.d.ts +43 -3
  227. package/dist/types/models/common.d.ts +23 -0
  228. package/dist/types/models/freightForwarder.d.ts +15 -0
  229. package/dist/types/models/shipOwner.d.ts +25 -0
  230. package/dist/types/services/admin/adminRepository.d.ts +9 -0
  231. package/dist/types/services/crypto.d.ts +27 -0
  232. package/dist/types/services/database.d.ts +3 -0
  233. package/dist/types/services/freightForwarder/freightForwarderRepository.d.ts +10 -0
  234. package/dist/types/services/shipOwner/shipOwnerController.d.ts +6 -0
  235. package/dist/types/services/shipOwner/shipOwnerRepository.d.ts +10 -0
  236. package/dist/types/services/shipOwner/shipOwnerRoutes.d.ts +2 -0
  237. package/dist/types/utils/extractFactoryAddress.d.ts +10 -0
  238. package/dist/types/utils/extractTokenAddress.d.ts +10 -0
  239. package/dist/types/utils/get-event-from-receipt.d.ts +1 -1
  240. package/dist/types/utils/index.d.ts +1 -0
  241. package/dist/types/utils/run.d.ts +9 -0
  242. package/dist/utils/compute-interface-id.js +5 -3
  243. package/dist/utils/compute-title-escrow-address.js +5 -3
  244. package/dist/utils/encode-init-params.js +5 -3
  245. package/dist/utils/extractFactoryAddress.js +58 -0
  246. package/dist/utils/extractTokenAddress.js +58 -0
  247. package/dist/utils/get-event-from-receipt.js +5 -3
  248. package/dist/utils/index.js +11 -0
  249. package/dist/utils/run.js +36 -0
  250. package/package.json +16 -3
  251. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.js +0 -37
  252. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.ts +0 -49
  253. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/index.js +0 -12
  254. /package/dist/contracts/@openzeppelin/{contracts/proxy/utils/Initializable.js → contracts-upgradeable/metatx/ERC2771ContextUpgradeable.js} +0 -0
  255. /package/dist/contracts/@openzeppelin/{contracts/proxy/utils → contracts-upgradeable/metatx}/index.js +0 -0
@@ -5,8 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TitleEscrowSignable__factory = void 0;
7
7
  var _ethers = require("ethers");
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ // @ts-nocheck
8
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ // @ts-nocheck
9
11
  const _abi = [{
12
+ inputs: [{
13
+ internalType: "address",
14
+ name: "trustedForwarder",
15
+ type: "address"
16
+ }],
17
+ stateMutability: "nonpayable",
18
+ type: "constructor"
19
+ }, {
10
20
  inputs: [],
11
21
  name: "CallerNotBeneficiary",
12
22
  type: "error"
@@ -169,6 +179,11 @@ const _abi = [{
169
179
  }, {
170
180
  anonymous: false,
171
181
  inputs: [{
182
+ indexed: true,
183
+ internalType: "address",
184
+ name: "actor",
185
+ type: "address"
186
+ }, {
172
187
  indexed: true,
173
188
  internalType: "address",
174
189
  name: "fromBeneficiary",
@@ -219,6 +234,11 @@ const _abi = [{
219
234
  }, {
220
235
  anonymous: false,
221
236
  inputs: [{
237
+ indexed: true,
238
+ internalType: "address",
239
+ name: "actor",
240
+ type: "address"
241
+ }, {
222
242
  indexed: true,
223
243
  internalType: "address",
224
244
  name: "fromHolder",
@@ -259,6 +279,11 @@ const _abi = [{
259
279
  }, {
260
280
  anonymous: false,
261
281
  inputs: [{
282
+ indexed: true,
283
+ internalType: "address",
284
+ name: "actor",
285
+ type: "address"
286
+ }, {
262
287
  indexed: true,
263
288
  internalType: "address",
264
289
  name: "prevNominee",
@@ -289,6 +314,11 @@ const _abi = [{
289
314
  }, {
290
315
  anonymous: false,
291
316
  inputs: [{
317
+ indexed: true,
318
+ internalType: "address",
319
+ name: "actor",
320
+ type: "address"
321
+ }, {
292
322
  indexed: true,
293
323
  internalType: "address",
294
324
  name: "fromBeneficiary",
@@ -319,6 +349,11 @@ const _abi = [{
319
349
  }, {
320
350
  anonymous: false,
321
351
  inputs: [{
352
+ indexed: true,
353
+ internalType: "address",
354
+ name: "actor",
355
+ type: "address"
356
+ }, {
322
357
  indexed: true,
323
358
  internalType: "address",
324
359
  name: "fromHolder",
@@ -349,6 +384,11 @@ const _abi = [{
349
384
  }, {
350
385
  anonymous: false,
351
386
  inputs: [{
387
+ indexed: false,
388
+ internalType: "address",
389
+ name: "actor",
390
+ type: "address"
391
+ }, {
352
392
  indexed: true,
353
393
  internalType: "address",
354
394
  name: "fromBeneficiary",
@@ -378,11 +418,6 @@ const _abi = [{
378
418
  internalType: "uint256",
379
419
  name: "tokenId",
380
420
  type: "uint256"
381
- }, {
382
- indexed: false,
383
- internalType: "bytes",
384
- name: "remark",
385
- type: "bytes"
386
421
  }],
387
422
  name: "RejectTransferOwners",
388
423
  type: "event"
@@ -434,6 +469,11 @@ const _abi = [{
434
469
  }, {
435
470
  anonymous: false,
436
471
  inputs: [{
472
+ indexed: false,
473
+ internalType: "address",
474
+ name: "actor",
475
+ type: "address"
476
+ }, {
437
477
  indexed: true,
438
478
  internalType: "address",
439
479
  name: "beneficiary",
@@ -593,6 +633,20 @@ const _abi = [{
593
633
  }],
594
634
  stateMutability: "view",
595
635
  type: "function"
636
+ }, {
637
+ inputs: [{
638
+ internalType: "address",
639
+ name: "forwarder",
640
+ type: "address"
641
+ }],
642
+ name: "isTrustedForwarder",
643
+ outputs: [{
644
+ internalType: "bool",
645
+ name: "",
646
+ type: "bool"
647
+ }],
648
+ stateMutability: "view",
649
+ type: "function"
596
650
  }, {
597
651
  inputs: [],
598
652
  name: "name",
@@ -883,8 +937,18 @@ const _abi = [{
883
937
  outputs: [],
884
938
  stateMutability: "nonpayable",
885
939
  type: "function"
940
+ }, {
941
+ inputs: [],
942
+ name: "trustedForwarder",
943
+ outputs: [{
944
+ internalType: "address",
945
+ name: "",
946
+ type: "address"
947
+ }],
948
+ stateMutability: "view",
949
+ type: "function"
886
950
  }];
887
- const _bytecode = "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000234565b60405180910390a15b505050505062000251565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200021c620002166200021084620001d3565b620001f1565b620001dd565b9050919050565b6200022e81620001fb565b82525050565b60006020820190506200024b600083018462000223565b92915050565b615c7980620002616000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063452736fd11610104578063baf13975116100a2578063cd6dc68711610071578063cd6dc687146104f8578063e3d79a6e14610514578063e534155d14610530578063e9bc1b0b1461054e576101cf565b8063baf1397514610484578063bd1d07b5146104a0578063c9437e5e146104be578063cb3cfb29146104dc576101cf565b80637ecebe00116100de5780637ecebe00146103fe57806383d38fcb1461042e5780638fb33c3c1461044a578063a47d1f5e14610466576101cf565b8063452736fd146103a8578063589a30eb146103c45780637b103999146103e0576101cf565b806320f99c0a11610171578063308f8e1c1161014b578063308f8e1c1461033457806334427f61146103505780633644e5151461036c57806338af3eed1461038a576101cf565b806320f99c0a146102c85780632ac12622146102e65780632ce2637a14610316576101cf565b806305de0a2e116101ad57806305de0a2e1461024057806306fdde031461025c578063150b7a021461027a57806317d70f7c146102aa576101cf565b806301ffc9a7146101d457806302fb0c5e14610204578063035aedfa14610222575b600080fd5b6101ee60048036038101906101e991906148fd565b61056a565b6040516101fb9190614945565b60405180910390f35b61020c6105e4565b6040516102199190614945565b60405180910390f35b61022a6105f7565b60405161023791906149a1565b60405180910390f35b61025a60048036038101906102559190614a21565b61061d565b005b610264610aee565b6040516102719190614afe565b60405180910390f35b610294600480360381019061028f9190614b82565b610b27565b6040516102a19190614c19565b60405180910390f35b6102b261102a565b6040516102bf9190614c43565b60405180910390f35b6102d0611030565b6040516102dd91906149a1565b60405180910390f35b61030060048036038101906102fb9190614c94565b611056565b60405161030d9190614945565b60405180910390f35b61031e611076565b60405161032b9190614cd0565b60405180910390f35b61034e60048036038101906103499190614ceb565b61109d565b005b61036a60048036038101906103659190614d4b565b611529565b005b610374611545565b6040516103819190614cd0565b60405180910390f35b61039261154b565b60405161039f91906149a1565b60405180910390f35b6103c260048036038101906103bd9190614a21565b611571565b005b6103de60048036038101906103d99190614f90565b611b73565b005b6103e8612221565b6040516103f591906149a1565b60405180910390f35b61041860048036038101906104139190614fd1565b612247565b6040516104259190614c43565b60405180910390f35b61044860048036038101906104439190614a21565b61225f565b005b610464600480360381019061045f9190614a21565b6126e2565b005b61046e6129cf565b60405161047b9190615053565b60405180910390f35b61049e60048036038101906104999190614ceb565b612a5d565b005b6104a8612ee7565b6040516104b591906149a1565b60405180910390f35b6104c6612f0d565b6040516104d39190614945565b60405180910390f35b6104f660048036038101906104f19190614a21565b612f1c565b005b610512600480360381019061050d9190615075565b6133ed565b005b61052e60048036038101906105299190614ceb565b61357e565b005b610538613a08565b60405161054591906149a1565b60405180910390f35b610568600480360381019061056391906150b5565b613a2e565b005b600061057582613c12565b806105dd57507fb1262be0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600960149054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b0919061510e565b905080156106ea576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610730576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b7576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bf613c7c565b6107f5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115610835576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108bd576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610966576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182610977929190615352565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a148188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f279c68b511f19d28a79afc0687d9909fc941d6f7551e4b0e333a1171cc2eea5f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548b8b604051610add949392919061545e565b60405180910390a350505050505050565b6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f7700000000000000000081525081565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb919061510e565b90508015610bf5576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610c3b576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004548514610c8157846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610c789190614c43565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1357336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610d0a91906149a1565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dbf5750600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f145760008585905003610e01576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610e159190615582565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e825750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ec65782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610ebd9291906155f1565b60405180910390fd5b610edf8360405180602001604052806000815250613dd2565b610ef88260405180602001604052806000815250613d4f565b80600a9081610f07919061561a565b5060019350505050610f27565b8484600a9182610f25929190615352565b505b801515600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f44fc4ffe7e585a241451c67b41553546c65c2b07de6e9d33405e53f75357293b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600a604051610ff493929190615770565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b7fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611130919061510e565b9050801561116a576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166111b0576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611237576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123f613c7c565b611275576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156112b5576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361131b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806113e657508573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61141c576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a91826114d2929190615352565b506115218686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b505050505050565b61153484838361109d565b61153f838383612a5d565b50505050565b60005481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061510e565b9050801561163e576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611684576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61168c613c7c565b6116c2576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611749576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d0576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611810576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118bb5750600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156118f2576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182611903929190615352565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506119ee818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b611a3c838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2812f41a966386b432bd1d43d72b6613f5eca9adf4ed9e193f95f5c91a1b662686600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548f8f604051611b609594939291906157ae565b60405180910390a4505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c06919061510e565b90508015611c40576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611c86576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0d576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d15613c7c565b611d4b576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428360a001511015611d9457426040517fcd21db4f000000000000000000000000000000000000000000000000000000008152600401611d8b9190614c43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161480611e245750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16145b80611e815750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614155b80611e925750600454836080015114155b80611eef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff1614155b15611f26576040517f46ad276700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161461203a578260400151600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517fbcac228f0000000000000000000000000000000000000000000000000000000081526004016120319291906155f1565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16146120f9578260000151600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f20904a940000000000000000000000000000000000000000000000000000000081526004016120f09291906155f1565b60405180910390fd5b61212e61210584613f5d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684614019565b612164576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546121d29061582b565b9190508190555061221c83604001516040518060400160405280600381526020017f3078300000000000000000000000000000000000000000000000000000000000815250613dd2565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f2919061510e565b9050801561232c576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612372576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123f9576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612480576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612488613c7c565b6124be576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156124fe576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61251860006040518060200160405280600081525061415a565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa5830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546040518463ffffffff1660e01b815260040161259b93929190615899565b600060405180830381600087803b1580156125b557600080fd5b505af11580156125c9573d6000803e3d6000fd5b505050508484600a91826125de929190615352565b506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045488886040516126d3949392919061545e565b60405180910390a25050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612751573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612775919061510e565b905080156127af576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166127f5576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612835576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61283d613c7c565b15612874576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461290657336040517f540b96010000000000000000000000000000000000000000000000000000000081526004016128fd91906149a1565b60405180910390fd5b612920600060405180602001604052806000815250613dd2565b61293a600060405180602001604052806000815250613d4f565b6000600960146101000a81548160ff0219169083151502179055508484600a9182612966929190615352565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045487876040516129c0949392919061545e565b60405180910390a15050505050565b600a80546129dc90615175565b80601f0160208091040260200160405190810160405280929190818152602001828054612a0890615175565b8015612a555780601f10612a2a57610100808354040283529160200191612a55565b820191906000526020600020905b815481529060010190602001808311612a3857829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af0919061510e565b90508015612b2a576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612b70576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bff613c7c565b612c35576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612c75576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612cdb576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612d62576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612e1c576000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a9182612e90929190615352565b50612edf8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b505050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612f17613c7c565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faf919061510e565b90508015612fe9576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff1661302f576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146130b6576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130be613c7c565b6130f4576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613134576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131bc576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613265576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182613276929190615352565b506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506133138188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26cb5b08a00ade9c3c65737592d8344548bf60664af05af8ed04720b893eca27600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548b8b6040516133dc949392919061545e565b60405180910390a350505050505050565b60006133f761424e565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156134455750825b9050600060018367ffffffffffffffff1614801561347a575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015613488575080155b156134bf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561350f5760018560000160086101000a81548160ff0219169083151502179055505b6135198787614276565b83156135755760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161356c9190615932565b60405180910390a15b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613611919061510e565b9050801561364b576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613691576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613718576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613720613c7c565b613756576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613796576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361381d576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036138a4576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036139a0576000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8484600a91826139b1929190615352565b50613a008686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061415a565b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac1919061510e565b90508015613afb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613b41576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613baa576040517fae04d15600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613bb583613f5d565b9050613bc081614300565b8260800151836020015173ffffffffffffffffffffffffffffffffffffffff16827fd6566b41f60aeb5bb4f55d9f58999096b6540c620fee372223774561e6d3854160405160405180910390a4505050565b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60003073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6004546040518263ffffffff1660e01b8152600401613cf29190614c43565b602060405180830381865afa158015613d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d339190615962565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154613dbd9061582b565b91905081905550613dce8282614387565b5050565b8173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9081b884d1178ac5e4855291131f541f64a88854f90b8df23412ffd63c39be1d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045485604051613e799392919061598f565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613f1857613f1760006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525061415a565b5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b826000015183602001518460400151856060015186608001518760a00151600160008a6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001613ffc9897969594939291906159cd565b604051602081830303815290604052805190602001209050919050565b60006002600085815260200190815260200160002060009054906101000a900460ff1615614073576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805485604051602001614089929190615ac3565b60405160208183030381529060405280519060200120905060006140e58460000151856020015186604001516040516020016140c793929190615b30565b6040516020818303038152906040528361447b90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561414f57508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b925050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbe262229f456b8d55f1e1887503540dc0a1efcb4b048b6b739117e66d031214600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454856040516142019392919061598f565b60405180910390a381600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61427e6144a7565b61428882826144e7565b6142fc6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f770000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250614556565b5050565b6002600082815260200190815260200160002060009054906101000a900460ff1615614358576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016002600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f30426d047f8ae6511337356e511764b12f79993bd73501d0e993b3da7a780a4d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548560405161442e9392919061598f565b60405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060008061448b86866145bd565b92509250925061449b8282614619565b82935050505092915050565b6144af61477d565b6144e5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6144ef6144a7565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806004819055506001600960146101000a81548160ff0219169083151502179055505050565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82805190602001208280519060200120463060405160200161459d959493929190615b6d565b604051602081830303815290604052805190602001206000819055505050565b600080600060418451036146025760008060006020870151925060408701519150606087015160001a90506145f48882858561479d565b955095509550505050614612565b60006002855160001b9250925092505b9250925092565b6000600381111561462d5761462c615bc0565b5b8260038111156146405761463f615bc0565b5b0315614779576001600381111561465a57614659615bc0565b5b82600381111561466d5761466c615bc0565b5b036146a4576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156146b8576146b7615bc0565b5b8260038111156146cb576146ca615bc0565b5b03614710578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016147079190614c43565b60405180910390fd5b60038081111561472357614722615bc0565b5b82600381111561473657614735615bc0565b5b0361477857806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161476f9190614cd0565b60405180910390fd5b5b5050565b600061478761424e565b60000160089054906101000a900460ff16905090565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156147dd576000600385925092509250614887565b6000600188888888604051600081526020016040526040516148029493929190615bfe565b6020604051602081039080840390855afa158015614824573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361487857600060016000801b93509350935050614887565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6148da816148a5565b81146148e557600080fd5b50565b6000813590506148f7816148d1565b92915050565b6000602082840312156149135761491261489b565b5b6000614921848285016148e8565b91505092915050565b60008115159050919050565b61493f8161492a565b82525050565b600060208201905061495a6000830184614936565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061498b82614960565b9050919050565b61499b81614980565b82525050565b60006020820190506149b66000830184614992565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126149e1576149e06149bc565b5b8235905067ffffffffffffffff8111156149fe576149fd6149c1565b5b602083019150836001820283011115614a1a57614a196149c6565b5b9250929050565b60008060208385031215614a3857614a3761489b565b5b600083013567ffffffffffffffff811115614a5657614a556148a0565b5b614a62858286016149cb565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614aa8578082015181840152602081019050614a8d565b60008484015250505050565b6000601f19601f8301169050919050565b6000614ad082614a6e565b614ada8185614a79565b9350614aea818560208601614a8a565b614af381614ab4565b840191505092915050565b60006020820190508181036000830152614b188184614ac5565b905092915050565b614b2981614980565b8114614b3457600080fd5b50565b600081359050614b4681614b20565b92915050565b6000819050919050565b614b5f81614b4c565b8114614b6a57600080fd5b50565b600081359050614b7c81614b56565b92915050565b600080600080600060808688031215614b9e57614b9d61489b565b5b6000614bac88828901614b37565b9550506020614bbd88828901614b37565b9450506040614bce88828901614b6d565b935050606086013567ffffffffffffffff811115614bef57614bee6148a0565b5b614bfb888289016149cb565b92509250509295509295909350565b614c13816148a5565b82525050565b6000602082019050614c2e6000830184614c0a565b92915050565b614c3d81614b4c565b82525050565b6000602082019050614c586000830184614c34565b92915050565b6000819050919050565b614c7181614c5e565b8114614c7c57600080fd5b50565b600081359050614c8e81614c68565b92915050565b600060208284031215614caa57614ca961489b565b5b6000614cb884828501614c7f565b91505092915050565b614cca81614c5e565b82525050565b6000602082019050614ce56000830184614cc1565b92915050565b600080600060408486031215614d0457614d0361489b565b5b6000614d1286828701614b37565b935050602084013567ffffffffffffffff811115614d3357614d326148a0565b5b614d3f868287016149cb565b92509250509250925092565b60008060008060608587031215614d6557614d6461489b565b5b6000614d7387828801614b37565b9450506020614d8487828801614b37565b935050604085013567ffffffffffffffff811115614da557614da46148a0565b5b614db1878288016149cb565b925092505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614dfc82614ab4565b810181811067ffffffffffffffff82111715614e1b57614e1a614dc4565b5b80604052505050565b6000614e2e614891565b9050614e3a8282614df3565b919050565b600060e08284031215614e5557614e54614dbf565b5b614e5f60e0614e24565b90506000614e6f84828501614b37565b6000830152506020614e8384828501614b37565b6020830152506040614e9784828501614b37565b6040830152506060614eab84828501614b37565b6060830152506080614ebf84828501614b6d565b60808301525060a0614ed384828501614b6d565b60a08301525060c0614ee784828501614b6d565b60c08301525092915050565b600060ff82169050919050565b614f0981614ef3565b8114614f1457600080fd5b50565b600081359050614f2681614f00565b92915050565b600060608284031215614f4257614f41614dbf565b5b614f4c6060614e24565b90506000614f5c84828501614c7f565b6000830152506020614f7084828501614c7f565b6020830152506040614f8484828501614f17565b60408301525092915050565b6000806101408385031215614fa857614fa761489b565b5b6000614fb685828601614e3f565b92505060e0614fc785828601614f2c565b9150509250929050565b600060208284031215614fe757614fe661489b565b5b6000614ff584828501614b37565b91505092915050565b600081519050919050565b600082825260208201905092915050565b600061502582614ffe565b61502f8185615009565b935061503f818560208601614a8a565b61504881614ab4565b840191505092915050565b6000602082019050818103600083015261506d818461501a565b905092915050565b6000806040838503121561508c5761508b61489b565b5b600061509a85828601614b37565b92505060206150ab85828601614b6d565b9150509250929050565b600060e082840312156150cb576150ca61489b565b5b60006150d984828501614e3f565b91505092915050565b6150eb8161492a565b81146150f657600080fd5b50565b600081519050615108816150e2565b92915050565b6000602082840312156151245761512361489b565b5b6000615132848285016150f9565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061518d57607f821691505b6020821081036151a05761519f615146565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584614b4c565b61522a565b614b4c565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361513b565b67ffffffffffffffff81111561537557615374614dc4565b5b61537f8254615175565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b600061543d8385615009565b935061544a838584615422565b61545383614ab4565b840190509392505050565b60006060820190506154736000830187614992565b6154806020830186614c34565b8181036040830152615493818486615431565b905095945050505050565b60006154a982614960565b9050919050565b6154b98161549e565b81146154c457600080fd5b50565b6000813590506154d6816154b0565b92915050565b600080fd5b600067ffffffffffffffff8211156154fc576154fb614dc4565b5b61550582614ab4565b9050602081019050919050565b6000615525615520846154e1565b614e24565b905082815260208101848484011115615541576155406154dc565b5b61554c848285615422565b509392505050565b600082601f830112615569576155686149bc565b5b8135615579848260208601615512565b91505092915050565b60008060006060848603121561559b5761559a61489b565b5b60006155a9868287016154c7565b93505060206155ba868287016154c7565b925050604084013567ffffffffffffffff8111156155db576155da6148a0565b5b6155e786828701615554565b9150509250925092565b60006040820190506156066000830185614992565b6156136020830184614992565b9392505050565b61562382614ffe565b67ffffffffffffffff81111561563c5761563b614dc4565b5b6156468254615175565b6156518282856152c5565b600060209050601f8311600181146156845760008415615672578287015190505b61567c8582615336565b8655506156e4565b601f198416615692866151a6565b60005b828110156156ba57848901518255600182019150602085019450602081019050615695565b868310156156d757848901516156d3601f891682615318565b8355505b6001600288020188555050505b505050505050565b600081546156f981615175565b6157038186615009565b9450600182166000811461571e576001811461573457615767565b60ff198316865281151560200286019350615767565b61573d856151a6565b60005b8381101561575f57815481890152600182019150602081019050615740565b808801955050505b50505092915050565b60006060820190506157856000830186614992565b6157926020830185614c34565b81810360408301526157a481846156ec565b9050949350505050565b60006080820190506157c36000830188614992565b6157d06020830187614992565b6157dd6040830186614c34565b81810360608301526157f0818486615431565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061583682614b4c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615868576158676157fc565b5b600182019050919050565b50565b6000615883600083615009565b915061588e82615873565b600082019050919050565b60006080820190506158ae6000830186614992565b6158bb6020830185614992565b6158c86040830184614c34565b81810360608301526158d981615876565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061591c615917615912846158e3565b61522a565b6158ed565b9050919050565b61592c81615901565b82525050565b60006020820190506159476000830184615923565b92915050565b60008151905061595c81614b20565b92915050565b6000602082840312156159785761597761489b565b5b60006159868482850161594d565b91505092915050565b60006060820190506159a46000830186614992565b6159b16020830185614c34565b81810360408301526159c3818461501a565b9050949350505050565b6000610100820190506159e3600083018b614cc1565b6159f0602083018a614992565b6159fd6040830189614992565b615a0a6060830188614992565b615a176080830187614992565b615a2460a0830186614c34565b615a3160c0830185614c34565b615a3e60e0830184614c34565b9998505050505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000615a8c600283615a4b565b9150615a9782615a56565b600282019050919050565b6000819050919050565b615abd615ab882614c5e565b615aa2565b82525050565b6000615ace82615a7f565b9150615ada8285615aac565b602082019150615aea8284615aac565b6020820191508190509392505050565b60008160f81b9050919050565b6000615b1282615afa565b9050919050565b615b2a615b2582614ef3565b615b07565b82525050565b6000615b3c8286615aac565b602082019150615b4c8285615aac565b602082019150615b5c8284615b19565b600182019150819050949350505050565b600060a082019050615b826000830188614cc1565b615b8f6020830187614cc1565b615b9c6040830186614cc1565b615ba96060830185614c34565b615bb66080830184614992565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b615bf881614ef3565b82525050565b6000608082019050615c136000830187614cc1565b615c206020830186615bef565b615c2d6040830185614cc1565b615c3a6060830184614cc1565b9594505050505056fea2646970667358221220b5f565ff2767b83545845c53e30883cd071dd10550b0f2d182659b79edc481c564736f6c63430008160033";
951
+ const _bytecode = "0x60a06040523480156200001157600080fd5b506040516200628d3803806200628d833981810160405281019062000037919062000241565b80808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506200007e6200008660201b60201c565b5050620002b5565b6000620000986200019060201b60201c565b90508060000160089054906101000a900460ff1615620000e4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200018d5767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405162000184919062000298565b60405180910390a15b50565b600080620001a3620001ac60201b60201c565b90508091505090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200020982620001dc565b9050919050565b6200021b81620001fc565b81146200022757600080fd5b50565b6000815190506200023b8162000210565b92915050565b6000602082840312156200025a5762000259620001d7565b5b60006200026a848285016200022a565b91505092915050565b600067ffffffffffffffff82169050919050565b620002928162000273565b82525050565b6000602082019050620002af600083018462000287565b92915050565b608051615fbc620002d1600039600061233d0152615fbc6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063572b6c051161010f578063baf13975116100a2578063cd6dc68711610071578063cd6dc6871461055c578063e3d79a6e14610578578063e534155d14610594578063e9bc1b0b146105b2576101e5565b8063baf13975146104e8578063bd1d07b514610504578063c9437e5e14610522578063cb3cfb2914610540576101e5565b80637ecebe00116100de5780637ecebe001461046257806383d38fcb146104925780638fb33c3c146104ae578063a47d1f5e146104ca576101e5565b8063572b6c05146103da578063589a30eb1461040a5780637b103999146104265780637da0a87714610444576101e5565b806320f99c0a1161018757806334427f611161015657806334427f61146103665780633644e5151461038257806338af3eed146103a0578063452736fd146103be576101e5565b806320f99c0a146102de5780632ac12622146102fc5780632ce2637a1461032c578063308f8e1c1461034a576101e5565b806305de0a2e116101c357806305de0a2e1461025657806306fdde0314610272578063150b7a021461029057806317d70f7c146102c0576101e5565b806301ffc9a7146101ea57806302fb0c5e1461021a578063035aedfa14610238575b600080fd5b61020460048036038101906101ff9190614b6b565b6105ce565b6040516102119190614bb3565b60405180910390f35b610222610648565b60405161022f9190614bb3565b60405180910390f35b61024061065b565b60405161024d9190614c0f565b60405180910390f35b610270600480360381019061026b9190614c8f565b610681565b005b61027a610b77565b6040516102879190614d6c565b60405180910390f35b6102aa60048036038101906102a59190614df0565b610bb0565b6040516102b79190614e87565b60405180910390f35b6102c86110bc565b6040516102d59190614eb1565b60405180910390f35b6102e66110c2565b6040516102f39190614c0f565b60405180910390f35b61031660048036038101906103119190614f02565b6110e8565b6040516103239190614bb3565b60405180910390f35b610334611108565b6040516103419190614f3e565b60405180910390f35b610364600480360381019061035f9190614f59565b61112f565b005b610380600480360381019061037b9190614fb9565b6115c2565b005b61038a6115de565b6040516103979190614f3e565b60405180910390f35b6103a86115e4565b6040516103b59190614c0f565b60405180910390f35b6103d860048036038101906103d39190614c8f565b61160a565b005b6103f460048036038101906103ef919061502d565b611c1f565b6040516104019190614bb3565b60405180910390f35b610424600480360381019061041f919061522b565b611c5e565b005b61042e612313565b60405161043b9190614c0f565b60405180910390f35b61044c612339565b6040516104599190614c0f565b60405180910390f35b61047c6004803603810190610477919061502d565b612361565b6040516104899190614eb1565b60405180910390f35b6104ac60048036038101906104a79190614c8f565b612379565b005b6104c860048036038101906104c39190614c8f565b612811565b005b6104d2612afe565b6040516104df91906152c1565b60405180910390f35b61050260048036038101906104fd9190614f59565b612b8c565b005b61050c61301d565b6040516105199190614c0f565b60405180910390f35b61052a613043565b6040516105379190614bb3565b60405180910390f35b61055a60048036038101906105559190614c8f565b613052565b005b610576600480360381019061057191906152e3565b613548565b005b610592600480360381019061058d9190614f59565b6136d9565b005b61059c613b6a565b6040516105a99190614c0f565b60405180910390f35b6105cc60048036038101906105c79190615323565b613b90565b005b60006105d982613d74565b8061064157507fb1262be0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600960149054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610714919061537c565b9050801561074e576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610794576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d5613dde565b73ffffffffffffffffffffffffffffffffffffffff1614610822576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61082a613ded565b610860576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156108a0576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610928576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036109d1576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a91826109e29291906155c0565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a7f8188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613ec0565b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16610af7613dde565b73ffffffffffffffffffffffffffffffffffffffff167f9d836937a837e685e1ce6796afaed48df16cd88219d6775dc46b6617b847dd13600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548c8c604051610b6694939291906156cc565b60405180910390a450505050505050565b6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f7700000000000000000081525081565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c44919061537c565b90508015610c7e576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610cc4576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004548514610d0a57846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610d019190614eb1565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9c57336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610d939190614c0f565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610e485750600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f9d5760008585905003610e8a576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610e9e91906157f0565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610f0b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610f4f5782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610f4692919061585f565b60405180910390fd5b610f688360405180602001604052806000815250613f43565b610f818260405180602001604052806000815250613ec0565b80600a9081610f909190615888565b5060019350505050610fb0565b8484600a9182610fae9291906155c0565b505b801515600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f949aacc83c3ca79403342afa7cf9a504f34996bc163596e87d5f0bd365a60f7e61104e613dde565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600a60405161108694939291906159de565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b7fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c2919061537c565b905080156111fc576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611242576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611283613dde565b73ffffffffffffffffffffffffffffffffffffffff16146112d0576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d8613ded565b61130e576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282607882829050111561134e576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036113b4576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061147f57508573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114b5576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a918261156b9291906155c0565b506115ba8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613f43565b505050505050565b6115cd84838361112f565b6115d8838383612b8c565b50505050565b60005481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d919061537c565b905080156116d7576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff1661171d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611725613ded565b61175b576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661179c613dde565b73ffffffffffffffffffffffffffffffffffffffff16146117e9576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661182a613dde565b73ffffffffffffffffffffffffffffffffffffffff1614611877576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156118b7576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119625750600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611999576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a91826119aa9291906155c0565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611a95818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613f43565b611ae3838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613ec0565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2e6f393db2fca12e96dfa806cf78ed2daddc38a90ffd973ef5a6b4fdbabae410611bd5613dde565b87600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454604051611c0c9493929190615a2a565b60405180910390a4505050505050505050565b6000611c29612339565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf1919061537c565b90508015611d2b576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611d71576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611db2613dde565b73ffffffffffffffffffffffffffffffffffffffff1614611dff576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e07613ded565b611e3d576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428360a001511015611e8657426040517fcd21db4f000000000000000000000000000000000000000000000000000000008152600401611e7d9190614eb1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161480611f165750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16145b80611f735750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614155b80611f845750600454836080015114155b80611fe15750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff1614155b15612018576040517f46ad276700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212d57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161461212c578260400151600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517fbcac228f00000000000000000000000000000000000000000000000000000000815260040161212392919061585f565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16146121eb578260000151600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f20904a940000000000000000000000000000000000000000000000000000000081526004016121e292919061585f565b60405180910390fd5b6122206121f7846140ec565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846141a8565b612256576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546122c490615a9e565b9190508190555061230e83604001516040518060400160405280600381526020017f3078300000000000000000000000000000000000000000000000000000000000815250613f43565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60016020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240c919061537c565b90508015612446576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff1661248c576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166124cd613dde565b73ffffffffffffffffffffffffffffffffffffffff161461251a576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661255b613dde565b73ffffffffffffffffffffffffffffffffffffffff16146125a8576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125b0613ded565b6125e6576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612626576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126406000604051806020016040528060008152506142e9565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa5830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546040518463ffffffff1660e01b81526004016126c393929190615b0c565b600060405180830381600087803b1580156126dd57600080fd5b505af11580156126f1573d6000803e3d6000fd5b505050508484600a91826127069291906155c0565b506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612793613dde565b73ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454888860405161280294939291906156cc565b60405180910390a25050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a4919061537c565b905080156128de576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612924576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612964576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61296c613ded565b156129a3576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a3557336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401612a2c9190614c0f565b60405180910390fd5b612a4f600060405180602001604052806000815250613f43565b612a69600060405180602001604052806000815250613ec0565b6000600960146101000a81548160ff0219169083151502179055508484600a9182612a959291906155c0565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548787604051612aef94939291906156cc565b60405180910390a15050505050565b600a8054612b0b906153e3565b80601f0160208091040260200160405190810160405280929190818152602001828054612b37906153e3565b8015612b845780601f10612b5957610100808354040283529160200191612b84565b820191906000526020600020905b815481529060010190602001808311612b6757829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c1f919061537c565b90508015612c59576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612c9f576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ce0613dde565b73ffffffffffffffffffffffffffffffffffffffff1614612d2d576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d35613ded565b612d6b576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612dab576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e11576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612e98576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f52576000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a9182612fc69291906155c0565b506130158686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613ec0565b505050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061304d613ded565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e5919061537c565b9050801561311f576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613165576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166131a6613dde565b73ffffffffffffffffffffffffffffffffffffffff16146131f3576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131fb613ded565b613231576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613271576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132f9576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036133a2576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a91826133b39291906155c0565b506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506134508188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613f43565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166134c8613dde565b73ffffffffffffffffffffffffffffffffffffffff167f5ede0a76a5fa7073243cab067bae342c2fbb26acd128b30356d94d1a4c1d20ea600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548c8c60405161353794939291906156cc565b60405180910390a450505050505050565b60006135526143fb565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156135a05750825b9050600060018367ffffffffffffffff161480156135d5575060003073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156135e3575080155b1561361a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561366a5760018560000160086101000a81548160ff0219169083151502179055505b613674878761440f565b83156136d05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516136c79190615ba5565b60405180910390a15b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c919061537c565b905080156137a6576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166137ec576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661382d613dde565b73ffffffffffffffffffffffffffffffffffffffff161461387a576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613882613ded565b6138b8576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156138f8576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361397f576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613a06576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613b02576000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8484600a9182613b139291906155c0565b50613b628686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506142e9565b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c23919061537c565b90508015613c5d576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613ca3576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613d0c576040517fae04d15600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d17836140ec565b9050613d2281614499565b8260800151836020015173ffffffffffffffffffffffffffffffffffffffff16827fd6566b41f60aeb5bb4f55d9f58999096b6540c620fee372223774561e6d3854160405160405180910390a4505050565b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000613de8614520565b905090565b60003073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6004546040518263ffffffff1660e01b8152600401613e639190614eb1565b602060405180830381865afa158015613e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea49190615bd5565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154613f2e90615a9e565b91905081905550613f3f828261458c565b5050565b8173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613f9b613dde565b73ffffffffffffffffffffffffffffffffffffffff167f48509251c4976d4cc0f5420ed39336d873f0713b399e0200c55069c04937b968600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548660405161400893929190615c02565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146140a7576140a660006040518060400160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152506142e9565b5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b826000015183602001518460400151856060015186608001518760a00151600160008a6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405160200161418b989796959493929190615c40565b604051602081830303815290604052805190602001209050919050565b60006002600085815260200190815260200160002060009054906101000a900460ff1615614202576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805485604051602001614218929190615d36565b604051602081830303815290604052805190602001209050600061427484600001518560200151866040015160405160200161425693929190615da3565b6040516020818303038152906040528361469e90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156142de57508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b925050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614341613dde565b73ffffffffffffffffffffffffffffffffffffffff167ff5b0435494e36d58667cba8d6d2b6983f1c65c50be1cb5a861fdf3ad76357a6e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454866040516143ae93929190615c02565b60405180910390a481600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000806144066146ca565b90508091505090565b6144176146f5565b6144218282614735565b6144956040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f770000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506147a4565b5050565b6002600082815260200190815260200160002060009054906101000a900460ff16156144f1576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016002600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060003690509050600061453461480b565b905080821015801561454b575061454a33611c1f565b5b1561457c5760003682840390809261456593929190615dea565b906145709190615e51565b60601c92505050614589565b61458461481a565b925050505b90565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166145e4613dde565b73ffffffffffffffffffffffffffffffffffffffff167f220142965e07ad032af0005eb4747d4a55acc8c786d04f087ce27e10ea2d1404600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548660405161465193929190615c02565b60405180910390a481600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000806000806146ae8686614822565b9250925092506146be828261487e565b82935050505092915050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b6146fd6149e2565b614733576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61473d6146f5565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806004819055506001600960146101000a81548160ff0219169083151502179055505050565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8280519060200120828051906020012046306040516020016147eb959493929190615eb0565b604051602081830303815290604052805190602001206000819055505050565b6000614815614a02565b905090565b600033905090565b600080600060418451036148675760008060006020870151925060408701519150606087015160001a905061485988828585614a0b565b955095509550505050614877565b60006002855160001b9250925092505b9250925092565b6000600381111561489257614891615f03565b5b8260038111156148a5576148a4615f03565b5b03156149de57600160038111156148bf576148be615f03565b5b8260038111156148d2576148d1615f03565b5b03614909576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561491d5761491c615f03565b5b8260038111156149305761492f615f03565b5b03614975578060001c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161496c9190614eb1565b60405180910390fd5b60038081111561498857614987615f03565b5b82600381111561499b5761499a615f03565b5b036149dd57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016149d49190614f3e565b60405180910390fd5b5b5050565b60006149ec6143fb565b60000160089054906101000a900460ff16905090565b60006014905090565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115614a4b576000600385925092509250614af5565b600060018888888860405160008152602001604052604051614a709493929190615f41565b6020604051602081039080840390855afa158015614a92573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614ae657600060016000801b93509350935050614af5565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614b4881614b13565b8114614b5357600080fd5b50565b600081359050614b6581614b3f565b92915050565b600060208284031215614b8157614b80614b09565b5b6000614b8f84828501614b56565b91505092915050565b60008115159050919050565b614bad81614b98565b82525050565b6000602082019050614bc86000830184614ba4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614bf982614bce565b9050919050565b614c0981614bee565b82525050565b6000602082019050614c246000830184614c00565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c4f57614c4e614c2a565b5b8235905067ffffffffffffffff811115614c6c57614c6b614c2f565b5b602083019150836001820283011115614c8857614c87614c34565b5b9250929050565b60008060208385031215614ca657614ca5614b09565b5b600083013567ffffffffffffffff811115614cc457614cc3614b0e565b5b614cd085828601614c39565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614d16578082015181840152602081019050614cfb565b60008484015250505050565b6000601f19601f8301169050919050565b6000614d3e82614cdc565b614d488185614ce7565b9350614d58818560208601614cf8565b614d6181614d22565b840191505092915050565b60006020820190508181036000830152614d868184614d33565b905092915050565b614d9781614bee565b8114614da257600080fd5b50565b600081359050614db481614d8e565b92915050565b6000819050919050565b614dcd81614dba565b8114614dd857600080fd5b50565b600081359050614dea81614dc4565b92915050565b600080600080600060808688031215614e0c57614e0b614b09565b5b6000614e1a88828901614da5565b9550506020614e2b88828901614da5565b9450506040614e3c88828901614ddb565b935050606086013567ffffffffffffffff811115614e5d57614e5c614b0e565b5b614e6988828901614c39565b92509250509295509295909350565b614e8181614b13565b82525050565b6000602082019050614e9c6000830184614e78565b92915050565b614eab81614dba565b82525050565b6000602082019050614ec66000830184614ea2565b92915050565b6000819050919050565b614edf81614ecc565b8114614eea57600080fd5b50565b600081359050614efc81614ed6565b92915050565b600060208284031215614f1857614f17614b09565b5b6000614f2684828501614eed565b91505092915050565b614f3881614ecc565b82525050565b6000602082019050614f536000830184614f2f565b92915050565b600080600060408486031215614f7257614f71614b09565b5b6000614f8086828701614da5565b935050602084013567ffffffffffffffff811115614fa157614fa0614b0e565b5b614fad86828701614c39565b92509250509250925092565b60008060008060608587031215614fd357614fd2614b09565b5b6000614fe187828801614da5565b9450506020614ff287828801614da5565b935050604085013567ffffffffffffffff81111561501357615012614b0e565b5b61501f87828801614c39565b925092505092959194509250565b60006020828403121561504357615042614b09565b5b600061505184828501614da5565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61509782614d22565b810181811067ffffffffffffffff821117156150b6576150b561505f565b5b80604052505050565b60006150c9614aff565b90506150d5828261508e565b919050565b600060e082840312156150f0576150ef61505a565b5b6150fa60e06150bf565b9050600061510a84828501614da5565b600083015250602061511e84828501614da5565b602083015250604061513284828501614da5565b604083015250606061514684828501614da5565b606083015250608061515a84828501614ddb565b60808301525060a061516e84828501614ddb565b60a08301525060c061518284828501614ddb565b60c08301525092915050565b600060ff82169050919050565b6151a48161518e565b81146151af57600080fd5b50565b6000813590506151c18161519b565b92915050565b6000606082840312156151dd576151dc61505a565b5b6151e760606150bf565b905060006151f784828501614eed565b600083015250602061520b84828501614eed565b602083015250604061521f848285016151b2565b60408301525092915050565b600080610140838503121561524357615242614b09565b5b6000615251858286016150da565b92505060e0615262858286016151c7565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60006152938261526c565b61529d8185615277565b93506152ad818560208601614cf8565b6152b681614d22565b840191505092915050565b600060208201905081810360008301526152db8184615288565b905092915050565b600080604083850312156152fa576152f9614b09565b5b600061530885828601614da5565b925050602061531985828601614ddb565b9150509250929050565b600060e0828403121561533957615338614b09565b5b6000615347848285016150da565b91505092915050565b61535981614b98565b811461536457600080fd5b50565b60008151905061537681615350565b92915050565b60006020828403121561539257615391614b09565b5b60006153a084828501615367565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806153fb57607f821691505b60208210810361540e5761540d6153b4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026154767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615439565b6154808683615439565b95508019841693508086168417925050509392505050565b6000819050919050565b60006154bd6154b86154b384614dba565b615498565b614dba565b9050919050565b6000819050919050565b6154d7836154a2565b6154eb6154e3826154c4565b848454615446565b825550505050565b600090565b6155006154f3565b61550b8184846154ce565b505050565b5b8181101561552f576155246000826154f8565b600181019050615511565b5050565b601f8211156155745761554581615414565b61554e84615429565b8101602085101561555d578190505b61557161556985615429565b830182615510565b50505b505050565b600082821c905092915050565b600061559760001984600802615579565b1980831691505092915050565b60006155b08383615586565b9150826002028217905092915050565b6155ca83836153a9565b67ffffffffffffffff8111156155e3576155e261505f565b5b6155ed82546153e3565b6155f8828285615533565b6000601f8311600181146156275760008415615615578287013590505b61561f85826155a4565b865550615687565b601f19841661563586615414565b60005b8281101561565d57848901358255600182019150602085019450602081019050615638565b8683101561567a5784890135615676601f891682615586565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006156ab8385615277565b93506156b8838584615690565b6156c183614d22565b840190509392505050565b60006060820190506156e16000830187614c00565b6156ee6020830186614ea2565b818103604083015261570181848661569f565b905095945050505050565b600061571782614bce565b9050919050565b6157278161570c565b811461573257600080fd5b50565b6000813590506157448161571e565b92915050565b600080fd5b600067ffffffffffffffff82111561576a5761576961505f565b5b61577382614d22565b9050602081019050919050565b600061579361578e8461574f565b6150bf565b9050828152602081018484840111156157af576157ae61574a565b5b6157ba848285615690565b509392505050565b600082601f8301126157d7576157d6614c2a565b5b81356157e7848260208601615780565b91505092915050565b60008060006060848603121561580957615808614b09565b5b600061581786828701615735565b935050602061582886828701615735565b925050604084013567ffffffffffffffff81111561584957615848614b0e565b5b615855868287016157c2565b9150509250925092565b60006040820190506158746000830185614c00565b6158816020830184614c00565b9392505050565b6158918261526c565b67ffffffffffffffff8111156158aa576158a961505f565b5b6158b482546153e3565b6158bf828285615533565b600060209050601f8311600181146158f257600084156158e0578287015190505b6158ea85826155a4565b865550615952565b601f19841661590086615414565b60005b8281101561592857848901518255600182019150602085019450602081019050615903565b868310156159455784890151615941601f891682615586565b8355505b6001600288020188555050505b505050505050565b60008154615967816153e3565b6159718186615277565b9450600182166000811461598c57600181146159a2576159d5565b60ff1983168652811515602002860193506159d5565b6159ab85615414565b60005b838110156159cd578154818901526001820191506020810190506159ae565b808801955050505b50505092915050565b60006080820190506159f36000830187614c00565b615a006020830186614c00565b615a0d6040830185614ea2565b8181036060830152615a1f818461595a565b905095945050505050565b6000608082019050615a3f6000830187614c00565b615a4c6020830186614c00565b615a596040830185614c00565b615a666060830184614ea2565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000615aa982614dba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615adb57615ada615a6f565b5b600182019050919050565b50565b6000615af6600083615277565b9150615b0182615ae6565b600082019050919050565b6000608082019050615b216000830186614c00565b615b2e6020830185614c00565b615b3b6040830184614ea2565b8181036060830152615b4c81615ae9565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000615b8f615b8a615b8584615b56565b615498565b615b60565b9050919050565b615b9f81615b74565b82525050565b6000602082019050615bba6000830184615b96565b92915050565b600081519050615bcf81614d8e565b92915050565b600060208284031215615beb57615bea614b09565b5b6000615bf984828501615bc0565b91505092915050565b6000606082019050615c176000830186614c00565b615c246020830185614ea2565b8181036040830152615c368184615288565b9050949350505050565b600061010082019050615c56600083018b614f2f565b615c63602083018a614c00565b615c706040830189614c00565b615c7d6060830188614c00565b615c8a6080830187614c00565b615c9760a0830186614ea2565b615ca460c0830185614ea2565b615cb160e0830184614ea2565b9998505050505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000615cff600283615cbe565b9150615d0a82615cc9565b600282019050919050565b6000819050919050565b615d30615d2b82614ecc565b615d15565b82525050565b6000615d4182615cf2565b9150615d4d8285615d1f565b602082019150615d5d8284615d1f565b6020820191508190509392505050565b60008160f81b9050919050565b6000615d8582615d6d565b9050919050565b615d9d615d988261518e565b615d7a565b82525050565b6000615daf8286615d1f565b602082019150615dbf8285615d1f565b602082019150615dcf8284615d8c565b600182019150819050949350505050565b600080fd5b600080fd5b60008085851115615dfe57615dfd615de0565b5b83861115615e0f57615e0e615de5565b5b6001850283019150848603905094509492505050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000615e5d83836153a9565b82615e688135615e25565b92506014821015615ea857615ea37fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802615439565b831692505b505092915050565b600060a082019050615ec56000830188614f2f565b615ed26020830187614f2f565b615edf6040830186614f2f565b615eec6060830185614ea2565b615ef96080830184614c00565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b615f3b8161518e565b82525050565b6000608082019050615f566000830187614f2f565b615f636020830186615f32565b615f706040830185614f2f565b615f7d6060830184614f2f565b9594505050505056fea2646970667358221220e7c827409cacdc994730d56df5032a58cac2549bb776975755791e09bbed3c9e64736f6c63430008160033";
888
952
  const isSuperArgs = xs => xs.length > 1;
889
953
  class TitleEscrowSignable__factory extends _ethers.ContractFactory {
890
954
  constructor(...args) {
@@ -894,11 +958,11 @@ class TitleEscrowSignable__factory extends _ethers.ContractFactory {
894
958
  super(_abi, _bytecode, args[0]);
895
959
  }
896
960
  }
897
- getDeployTransaction(overrides) {
898
- return super.getDeployTransaction(overrides || {});
961
+ getDeployTransaction(trustedForwarder, overrides) {
962
+ return super.getDeployTransaction(trustedForwarder, overrides || {});
899
963
  }
900
- deploy(overrides) {
901
- return super.deploy(overrides || {});
964
+ deploy(trustedForwarder, overrides) {
965
+ return super.deploy(trustedForwarder, overrides || {});
902
966
  }
903
967
  connect(runner) {
904
968
  return super.connect(runner);