@tradetrust-yl/token-registry 5.1.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 (465) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +446 -0
  3. package/dist/artifacts/TitleEscrow.sol/TitleEscrow.json +823 -0
  4. package/dist/artifacts/TitleEscrowFactory.sol/TitleEscrowFactory.json +123 -0
  5. package/dist/artifacts/TradeTrustToken.sol/TradeTrustToken.json +778 -0
  6. package/dist/artifacts/base/RegistryAccess.sol/RegistryAccess.dbg.json +4 -0
  7. package/dist/artifacts/base/RegistryAccess.sol/RegistryAccess.json +321 -0
  8. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.dbg.json +4 -0
  9. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.json +202 -0
  10. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.dbg.json +4 -0
  11. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.json +374 -0
  12. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.dbg.json +4 -0
  13. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.json +757 -0
  14. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.dbg.json +4 -0
  15. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.json +655 -0
  16. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.dbg.json +4 -0
  17. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.json +660 -0
  18. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.dbg.json +4 -0
  19. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.json +676 -0
  20. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.dbg.json +4 -0
  21. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.json +666 -0
  22. package/dist/artifacts/interfaces/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.dbg.json +4 -0
  23. package/dist/artifacts/interfaces/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.json +166 -0
  24. package/dist/artifacts/interfaces/ISBTUpgradeable.sol/ISBTUpgradeable.dbg.json +4 -0
  25. package/dist/artifacts/interfaces/ISBTUpgradeable.sol/ISBTUpgradeable.json +121 -0
  26. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.dbg.json +4 -0
  27. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.json +637 -0
  28. package/dist/artifacts/interfaces/ITitleEscrowFactory.sol/ITitleEscrowFactory.dbg.json +4 -0
  29. package/dist/artifacts/interfaces/ITitleEscrowFactory.sol/ITitleEscrowFactory.json +92 -0
  30. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.dbg.json +4 -0
  31. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.json +784 -0
  32. package/dist/artifacts/interfaces/ITradeTrustSBT.sol/ITradeTrustSBT.dbg.json +4 -0
  33. package/dist/artifacts/interfaces/ITradeTrustSBT.sol/ITradeTrustSBT.json +219 -0
  34. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.dbg.json +4 -0
  35. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.json +295 -0
  36. package/dist/artifacts/interfaces/ITradeTrustTokenBurnable.sol/ITradeTrustTokenBurnable.dbg.json +4 -0
  37. package/dist/artifacts/interfaces/ITradeTrustTokenBurnable.sol/ITradeTrustTokenBurnable.json +29 -0
  38. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.dbg.json +4 -0
  39. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.json +45 -0
  40. package/dist/artifacts/interfaces/ITradeTrustTokenRestorable.sol/ITradeTrustTokenRestorable.dbg.json +4 -0
  41. package/dist/artifacts/interfaces/ITradeTrustTokenRestorable.sol/ITradeTrustTokenRestorable.json +35 -0
  42. package/dist/artifacts/interfaces/RegistryAccessErrors.sol/RegistryAccessErrors.dbg.json +4 -0
  43. package/dist/artifacts/interfaces/RegistryAccessErrors.sol/RegistryAccessErrors.json +16 -0
  44. package/dist/artifacts/interfaces/SigHelperErrors.sol/SigHelperErrors.dbg.json +4 -0
  45. package/dist/artifacts/interfaces/SigHelperErrors.sol/SigHelperErrors.json +16 -0
  46. package/dist/artifacts/interfaces/TDocDeployerErrors.sol/TDocDeployerErrors.dbg.json +4 -0
  47. package/dist/artifacts/interfaces/TDocDeployerErrors.sol/TDocDeployerErrors.json +37 -0
  48. package/dist/artifacts/interfaces/TitleEscrowErrors.sol/TitleEscrowErrors.dbg.json +4 -0
  49. package/dist/artifacts/interfaces/TitleEscrowErrors.sol/TitleEscrowErrors.json +119 -0
  50. package/dist/artifacts/interfaces/TitleEscrowFactoryErrors.sol/TitleEscrowFactoryErrors.dbg.json +4 -0
  51. package/dist/artifacts/interfaces/TitleEscrowFactoryErrors.sol/TitleEscrowFactoryErrors.json +16 -0
  52. package/dist/artifacts/interfaces/TitleEscrowSignableErrors.sol/TitleEscrowSignableErrors.dbg.json +4 -0
  53. package/dist/artifacts/interfaces/TitleEscrowSignableErrors.sol/TitleEscrowSignableErrors.json +69 -0
  54. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.dbg.json +4 -0
  55. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.json +36 -0
  56. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.dbg.json +4 -0
  57. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.json +101 -0
  58. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.dbg.json +4 -0
  59. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.json +304 -0
  60. package/dist/artifacts/mocks/SigHelperMock.sol/SigHelperMock.dbg.json +4 -0
  61. package/dist/artifacts/mocks/SigHelperMock.sol/SigHelperMock.json +182 -0
  62. package/dist/artifacts/mocks/SimpleCaller.sol/SimpleCaller.dbg.json +4 -0
  63. package/dist/artifacts/mocks/SimpleCaller.sol/SimpleCaller.json +35 -0
  64. package/dist/artifacts/mocks/TitleEscrowFactoryCallerMock.sol/TitleEscrowFactoryCallerMock.dbg.json +4 -0
  65. package/dist/artifacts/mocks/TitleEscrowFactoryCallerMock.sol/TitleEscrowFactoryCallerMock.json +29 -0
  66. package/dist/artifacts/mocks/TitleEscrowFactoryGetterMock.sol/TitleEscrowFactoryGetterMock.dbg.json +4 -0
  67. package/dist/artifacts/mocks/TitleEscrowFactoryGetterMock.sol/TitleEscrowFactoryGetterMock.json +66 -0
  68. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.dbg.json +4 -0
  69. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.json +869 -0
  70. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.dbg.json +4 -0
  71. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.json +815 -0
  72. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.dbg.json +4 -0
  73. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.json +1132 -0
  74. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.dbg.json +4 -0
  75. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.json +775 -0
  76. package/dist/artifacts/utils/SigHelper.sol/SigHelper.dbg.json +4 -0
  77. package/dist/artifacts/utils/SigHelper.sol/SigHelper.json +67 -0
  78. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.dbg.json +4 -0
  79. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.json +402 -0
  80. package/dist/constants/contract-address.js +56 -0
  81. package/dist/constants/contract-interface-id.js +18 -0
  82. package/dist/constants/contract-interfaces.js +17 -0
  83. package/dist/constants/default-address.js +19 -0
  84. package/dist/constants/index.js +49 -0
  85. package/dist/constants/role-hash.js +24 -0
  86. package/dist/contracts/@openzeppelin/contracts/access/IAccessControl.js +13 -0
  87. package/dist/contracts/@openzeppelin/contracts/access/IAccessControl.ts +293 -0
  88. package/dist/contracts/@openzeppelin/contracts/access/index.js +5 -0
  89. package/dist/contracts/@openzeppelin/contracts/access/index.ts +5 -0
  90. package/dist/contracts/@openzeppelin/contracts/index.js +5 -0
  91. package/dist/contracts/@openzeppelin/contracts/index.ts +14 -0
  92. package/dist/contracts/@openzeppelin/contracts/interfaces/IERC1967.js +13 -0
  93. package/dist/contracts/@openzeppelin/contracts/interfaces/IERC1967.ts +169 -0
  94. package/dist/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js +5 -0
  95. package/dist/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.ts +91 -0
  96. package/dist/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +5 -0
  97. package/dist/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +5 -0
  98. package/dist/contracts/@openzeppelin/contracts/interfaces/index.js +5 -0
  99. package/dist/contracts/@openzeppelin/contracts/interfaces/index.ts +7 -0
  100. package/dist/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js +5 -0
  101. package/dist/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.ts +70 -0
  102. package/dist/contracts/@openzeppelin/contracts/proxy/ERC1967/index.js +5 -0
  103. package/dist/contracts/@openzeppelin/contracts/proxy/ERC1967/index.ts +5 -0
  104. package/dist/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.js +5 -0
  105. package/dist/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.ts +91 -0
  106. package/dist/contracts/@openzeppelin/contracts/proxy/beacon/index.js +5 -0
  107. package/dist/contracts/@openzeppelin/contracts/proxy/beacon/index.ts +5 -0
  108. package/dist/contracts/@openzeppelin/contracts/proxy/index.js +5 -0
  109. package/dist/contracts/@openzeppelin/contracts/proxy/index.ts +10 -0
  110. package/dist/contracts/@openzeppelin/contracts/proxy/utils/Initializable.js +11 -0
  111. package/dist/contracts/@openzeppelin/contracts/proxy/utils/Initializable.ts +106 -0
  112. package/dist/contracts/@openzeppelin/contracts/proxy/utils/index.js +5 -0
  113. package/dist/contracts/@openzeppelin/contracts/proxy/utils/index.ts +5 -0
  114. package/dist/contracts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.js +5 -0
  115. package/dist/contracts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts +111 -0
  116. package/dist/contracts/@openzeppelin/contracts/token/ERC721/index.js +5 -0
  117. package/dist/contracts/@openzeppelin/contracts/token/ERC721/index.ts +5 -0
  118. package/dist/contracts/@openzeppelin/contracts/token/index.js +5 -0
  119. package/dist/contracts/@openzeppelin/contracts/token/index.ts +6 -0
  120. package/dist/contracts/@openzeppelin/contracts/utils/Address.js +5 -0
  121. package/dist/contracts/@openzeppelin/contracts/utils/Address.ts +70 -0
  122. package/dist/contracts/@openzeppelin/contracts/utils/Errors.js +5 -0
  123. package/dist/contracts/@openzeppelin/contracts/utils/Errors.ts +70 -0
  124. package/dist/contracts/@openzeppelin/contracts/utils/Pausable.js +12 -0
  125. package/dist/contracts/@openzeppelin/contracts/utils/Pausable.ts +151 -0
  126. package/dist/contracts/@openzeppelin/contracts/utils/Strings.js +5 -0
  127. package/dist/contracts/@openzeppelin/contracts/utils/Strings.ts +70 -0
  128. package/dist/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.js +5 -0
  129. package/dist/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +70 -0
  130. package/dist/contracts/@openzeppelin/contracts/utils/cryptography/index.js +5 -0
  131. package/dist/contracts/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  132. package/dist/contracts/@openzeppelin/contracts/utils/index.js +5 -0
  133. package/dist/contracts/@openzeppelin/contracts/utils/index.ts +14 -0
  134. package/dist/contracts/@openzeppelin/contracts/utils/introspection/IERC165.js +5 -0
  135. package/dist/contracts/@openzeppelin/contracts/utils/introspection/IERC165.ts +95 -0
  136. package/dist/contracts/@openzeppelin/contracts/utils/introspection/index.js +5 -0
  137. package/dist/contracts/@openzeppelin/contracts/utils/introspection/index.ts +5 -0
  138. package/dist/contracts/@openzeppelin/contracts/utils/math/SafeCast.js +5 -0
  139. package/dist/contracts/@openzeppelin/contracts/utils/math/SafeCast.ts +70 -0
  140. package/dist/contracts/@openzeppelin/contracts/utils/math/index.js +5 -0
  141. package/dist/contracts/@openzeppelin/contracts/utils/math/index.ts +5 -0
  142. package/dist/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.js +14 -0
  143. package/dist/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.ts +360 -0
  144. package/dist/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js +12 -0
  145. package/dist/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts +187 -0
  146. package/dist/contracts/@openzeppelin/contracts-upgradeable/access/index.js +5 -0
  147. package/dist/contracts/@openzeppelin/contracts-upgradeable/access/index.ts +6 -0
  148. package/dist/contracts/@openzeppelin/contracts-upgradeable/index.js +5 -0
  149. package/dist/contracts/@openzeppelin/contracts-upgradeable/index.ts +10 -0
  150. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/index.js +5 -0
  151. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/index.ts +6 -0
  152. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js +11 -0
  153. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts +106 -0
  154. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js +12 -0
  155. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts +197 -0
  156. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +5 -0
  157. package/dist/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +6 -0
  158. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js +11 -0
  159. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts +106 -0
  160. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.js +13 -0
  161. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.ts +184 -0
  162. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/index.js +5 -0
  163. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/index.ts +8 -0
  164. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.js +11 -0
  165. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.ts +131 -0
  166. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/index.js +5 -0
  167. package/dist/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/index.ts +5 -0
  168. package/dist/contracts/@openzeppelin/index.js +5 -0
  169. package/dist/contracts/@openzeppelin/index.ts +8 -0
  170. package/dist/contracts/common.js +5 -0
  171. package/dist/contracts/common.ts +132 -0
  172. package/dist/contracts/contracts/TitleEscrow.js +20 -0
  173. package/dist/contracts/contracts/TitleEscrow.ts +874 -0
  174. package/dist/contracts/contracts/TitleEscrowFactory.js +11 -0
  175. package/dist/contracts/contracts/TitleEscrowFactory.ts +171 -0
  176. package/dist/contracts/contracts/TradeTrustToken.js +19 -0
  177. package/dist/contracts/contracts/TradeTrustToken.ts +819 -0
  178. package/dist/contracts/contracts/base/RegistryAccess.js +14 -0
  179. package/dist/contracts/contracts/base/RegistryAccess.ts +424 -0
  180. package/dist/contracts/contracts/base/SBTUpgradeable.js +12 -0
  181. package/dist/contracts/contracts/base/SBTUpgradeable.ts +260 -0
  182. package/dist/contracts/contracts/base/TradeTrustSBT.js +16 -0
  183. package/dist/contracts/contracts/base/TradeTrustSBT.ts +442 -0
  184. package/dist/contracts/contracts/base/TradeTrustTokenBase.js +19 -0
  185. package/dist/contracts/contracts/base/TradeTrustTokenBase.ts +819 -0
  186. package/dist/contracts/contracts/base/TradeTrustTokenBaseURI.js +19 -0
  187. package/dist/contracts/contracts/base/TradeTrustTokenBaseURI.ts +736 -0
  188. package/dist/contracts/contracts/base/TradeTrustTokenBurnable.js +19 -0
  189. package/dist/contracts/contracts/base/TradeTrustTokenBurnable.ts +747 -0
  190. package/dist/contracts/contracts/base/TradeTrustTokenMintable.js +19 -0
  191. package/dist/contracts/contracts/base/TradeTrustTokenMintable.ts +757 -0
  192. package/dist/contracts/contracts/base/TradeTrustTokenRestorable.js +19 -0
  193. package/dist/contracts/contracts/base/TradeTrustTokenRestorable.ts +747 -0
  194. package/dist/contracts/contracts/base/index.js +5 -0
  195. package/dist/contracts/contracts/base/index.ts +12 -0
  196. package/dist/contracts/contracts/index.js +5 -0
  197. package/dist/contracts/contracts/index.ts +17 -0
  198. package/dist/contracts/contracts/interfaces/IERC721MetadataUpgradeable.js +11 -0
  199. package/dist/contracts/contracts/interfaces/IERC721MetadataUpgradeable.ts +222 -0
  200. package/dist/contracts/contracts/interfaces/ISBTUpgradeable.js +11 -0
  201. package/dist/contracts/contracts/interfaces/ISBTUpgradeable.ts +195 -0
  202. package/dist/contracts/contracts/interfaces/ITitleEscrow.js +19 -0
  203. package/dist/contracts/contracts/interfaces/ITitleEscrow.ts +798 -0
  204. package/dist/contracts/contracts/interfaces/ITitleEscrowFactory.js +11 -0
  205. package/dist/contracts/contracts/interfaces/ITitleEscrowFactory.ts +171 -0
  206. package/dist/contracts/contracts/interfaces/ITitleEscrowSignable.js +20 -0
  207. package/dist/contracts/contracts/interfaces/ITitleEscrowSignable.ts +923 -0
  208. package/dist/contracts/contracts/interfaces/ITradeTrustSBT.js +13 -0
  209. package/dist/contracts/contracts/interfaces/ITradeTrustSBT.ts +313 -0
  210. package/dist/contracts/contracts/interfaces/ITradeTrustToken.js +13 -0
  211. package/dist/contracts/contracts/interfaces/ITradeTrustToken.ts +380 -0
  212. package/dist/contracts/contracts/interfaces/ITradeTrustTokenBurnable.js +5 -0
  213. package/dist/contracts/contracts/interfaces/ITradeTrustTokenBurnable.ts +97 -0
  214. package/dist/contracts/contracts/interfaces/ITradeTrustTokenMintable.js +5 -0
  215. package/dist/contracts/contracts/interfaces/ITradeTrustTokenMintable.ts +108 -0
  216. package/dist/contracts/contracts/interfaces/ITradeTrustTokenRestorable.js +5 -0
  217. package/dist/contracts/contracts/interfaces/ITradeTrustTokenRestorable.ts +97 -0
  218. package/dist/contracts/contracts/interfaces/RegistryAccessErrors.js +5 -0
  219. package/dist/contracts/contracts/interfaces/RegistryAccessErrors.ts +70 -0
  220. package/dist/contracts/contracts/interfaces/SigHelperErrors.js +5 -0
  221. package/dist/contracts/contracts/interfaces/SigHelperErrors.ts +70 -0
  222. package/dist/contracts/contracts/interfaces/TDocDeployerErrors.js +5 -0
  223. package/dist/contracts/contracts/interfaces/TDocDeployerErrors.ts +70 -0
  224. package/dist/contracts/contracts/interfaces/TitleEscrowErrors.js +5 -0
  225. package/dist/contracts/contracts/interfaces/TitleEscrowErrors.ts +70 -0
  226. package/dist/contracts/contracts/interfaces/TitleEscrowFactoryErrors.js +5 -0
  227. package/dist/contracts/contracts/interfaces/TitleEscrowFactoryErrors.ts +70 -0
  228. package/dist/contracts/contracts/interfaces/TitleEscrowSignableErrors.js +5 -0
  229. package/dist/contracts/contracts/interfaces/TitleEscrowSignableErrors.ts +70 -0
  230. package/dist/contracts/contracts/interfaces/TradeTrustTokenErrors.js +5 -0
  231. package/dist/contracts/contracts/interfaces/TradeTrustTokenErrors.ts +70 -0
  232. package/dist/contracts/contracts/interfaces/index.js +5 -0
  233. package/dist/contracts/contracts/interfaces/index.ts +21 -0
  234. package/dist/contracts/contracts/mocks/ERC721ReceiverMock.js +11 -0
  235. package/dist/contracts/contracts/mocks/ERC721ReceiverMock.ts +184 -0
  236. package/dist/contracts/contracts/mocks/SBTUpgradeableMock.js +12 -0
  237. package/dist/contracts/contracts/mocks/SBTUpgradeableMock.ts +344 -0
  238. package/dist/contracts/contracts/mocks/SigHelperMock.js +5 -0
  239. package/dist/contracts/contracts/mocks/SigHelperMock.ts +183 -0
  240. package/dist/contracts/contracts/mocks/SimpleCaller.js +5 -0
  241. package/dist/contracts/contracts/mocks/SimpleCaller.ts +100 -0
  242. package/dist/contracts/contracts/mocks/TitleEscrowFactoryCallerMock.js +5 -0
  243. package/dist/contracts/contracts/mocks/TitleEscrowFactoryCallerMock.ts +98 -0
  244. package/dist/contracts/contracts/mocks/TitleEscrowFactoryGetterMock.js +5 -0
  245. package/dist/contracts/contracts/mocks/TitleEscrowFactoryGetterMock.ts +139 -0
  246. package/dist/contracts/contracts/mocks/TitleEscrowMock.js +20 -0
  247. package/dist/contracts/contracts/mocks/TitleEscrowMock.ts +916 -0
  248. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.js +19 -0
  249. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.ts +859 -0
  250. package/dist/contracts/contracts/mocks/index.js +5 -0
  251. package/dist/contracts/contracts/mocks/index.ts +12 -0
  252. package/dist/contracts/contracts/presets/TitleEscrowSignable.js +21 -0
  253. package/dist/contracts/contracts/presets/TitleEscrowSignable.ts +1054 -0
  254. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.js +19 -0
  255. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.ts +830 -0
  256. package/dist/contracts/contracts/presets/index.js +5 -0
  257. package/dist/contracts/contracts/presets/index.ts +6 -0
  258. package/dist/contracts/contracts/utils/SigHelper.js +5 -0
  259. package/dist/contracts/contracts/utils/SigHelper.ts +111 -0
  260. package/dist/contracts/contracts/utils/TDocDeployer.js +15 -0
  261. package/dist/contracts/contracts/utils/TDocDeployer.ts +442 -0
  262. package/dist/contracts/contracts/utils/index.js +5 -0
  263. package/dist/contracts/contracts/utils/index.ts +6 -0
  264. package/dist/contracts/factories/@openzeppelin/contracts/access/IAccessControl__factory.js +169 -0
  265. package/dist/contracts/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +219 -0
  266. package/dist/contracts/factories/@openzeppelin/contracts/access/index.js +12 -0
  267. package/dist/contracts/factories/@openzeppelin/contracts/access/index.ts +5 -0
  268. package/dist/contracts/factories/@openzeppelin/contracts/index.js +18 -0
  269. package/dist/contracts/factories/@openzeppelin/contracts/index.ts +9 -0
  270. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +54 -0
  271. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.ts +68 -0
  272. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +29 -0
  273. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.ts +39 -0
  274. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +12 -0
  275. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +5 -0
  276. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/index.js +17 -0
  277. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/index.ts +6 -0
  278. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +66 -0
  279. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +106 -0
  280. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/index.js +12 -0
  281. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +5 -0
  282. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +29 -0
  283. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.ts +36 -0
  284. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/index.js +12 -0
  285. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/index.ts +5 -0
  286. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.js +14 -0
  287. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.ts +7 -0
  288. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.js +37 -0
  289. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.ts +49 -0
  290. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/index.js +12 -0
  291. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/index.ts +5 -0
  292. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.js +45 -0
  293. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts +60 -0
  294. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/index.js +12 -0
  295. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/index.ts +5 -0
  296. package/dist/contracts/factories/@openzeppelin/contracts/token/index.js +10 -0
  297. package/dist/contracts/factories/@openzeppelin/contracts/token/index.ts +5 -0
  298. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.js +46 -0
  299. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.ts +76 -0
  300. package/dist/contracts/factories/@openzeppelin/contracts/utils/Errors__factory.js +66 -0
  301. package/dist/contracts/factories/@openzeppelin/contracts/utils/Errors__factory.ts +102 -0
  302. package/dist/contracts/factories/@openzeppelin/contracts/utils/Pausable__factory.js +57 -0
  303. package/dist/contracts/factories/@openzeppelin/contracts/utils/Pausable__factory.ts +72 -0
  304. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.js +50 -0
  305. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.ts +81 -0
  306. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.js +58 -0
  307. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +92 -0
  308. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/index.js +12 -0
  309. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  310. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.js +42 -0
  311. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.ts +11 -0
  312. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.js +33 -0
  313. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts +42 -0
  314. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/index.js +12 -0
  315. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/index.ts +5 -0
  316. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.js +78 -0
  317. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +119 -0
  318. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/index.js +12 -0
  319. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/index.ts +5 -0
  320. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable__factory.js +211 -0
  321. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable__factory.ts +278 -0
  322. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +94 -0
  323. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts +123 -0
  324. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/index.js +19 -0
  325. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/index.ts +6 -0
  326. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.js +14 -0
  327. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.ts +7 -0
  328. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +10 -0
  329. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts +5 -0
  330. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +37 -0
  331. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts +49 -0
  332. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +117 -0
  333. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts +154 -0
  334. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +19 -0
  335. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +6 -0
  336. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +37 -0
  337. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts +49 -0
  338. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable__factory.js +75 -0
  339. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable__factory.ts +102 -0
  340. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/index.js +24 -0
  341. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/index.ts +7 -0
  342. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable__factory.js +51 -0
  343. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable__factory.ts +68 -0
  344. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/index.js +12 -0
  345. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/index.ts +5 -0
  346. package/dist/contracts/factories/@openzeppelin/index.js +12 -0
  347. package/dist/contracts/factories/@openzeppelin/index.ts +6 -0
  348. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.js +124 -0
  349. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.ts +180 -0
  350. package/dist/contracts/factories/contracts/TitleEscrow__factory.js +678 -0
  351. package/dist/contracts/factories/contracts/TitleEscrow__factory.ts +877 -0
  352. package/dist/contracts/factories/contracts/TradeTrustToken__factory.js +630 -0
  353. package/dist/contracts/factories/contracts/TradeTrustToken__factory.ts +858 -0
  354. package/dist/contracts/factories/contracts/base/RegistryAccess__factory.js +259 -0
  355. package/dist/contracts/factories/contracts/base/RegistryAccess__factory.ts +336 -0
  356. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.js +184 -0
  357. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.ts +259 -0
  358. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.js +299 -0
  359. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.ts +389 -0
  360. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.js +517 -0
  361. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.ts +674 -0
  362. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.js +595 -0
  363. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.ts +776 -0
  364. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.js +521 -0
  365. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.ts +679 -0
  366. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.js +533 -0
  367. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.ts +695 -0
  368. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.js +525 -0
  369. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.ts +685 -0
  370. package/dist/contracts/factories/contracts/base/index.js +61 -0
  371. package/dist/contracts/factories/contracts/base/index.ts +12 -0
  372. package/dist/contracts/factories/contracts/index.js +39 -0
  373. package/dist/contracts/factories/contracts/index.ts +12 -0
  374. package/dist/contracts/factories/contracts/interfaces/IERC721MetadataUpgradeable__factory.js +137 -0
  375. package/dist/contracts/factories/contracts/interfaces/IERC721MetadataUpgradeable__factory.ts +185 -0
  376. package/dist/contracts/factories/contracts/interfaces/ISBTUpgradeable__factory.js +103 -0
  377. package/dist/contracts/factories/contracts/interfaces/ISBTUpgradeable__factory.ts +136 -0
  378. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowFactory__factory.js +81 -0
  379. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowFactory__factory.ts +111 -0
  380. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.js +630 -0
  381. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.ts +803 -0
  382. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.js +515 -0
  383. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.ts +652 -0
  384. package/dist/contracts/factories/contracts/interfaces/ITradeTrustSBT__factory.js +179 -0
  385. package/dist/contracts/factories/contracts/interfaces/ITradeTrustSBT__factory.ts +234 -0
  386. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenBurnable__factory.js +33 -0
  387. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenBurnable__factory.ts +48 -0
  388. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.js +45 -0
  389. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.ts +64 -0
  390. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenRestorable__factory.js +37 -0
  391. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenRestorable__factory.ts +54 -0
  392. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.js +237 -0
  393. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.ts +310 -0
  394. package/dist/contracts/factories/contracts/interfaces/RegistryAccessErrors__factory.js +23 -0
  395. package/dist/contracts/factories/contracts/interfaces/RegistryAccessErrors__factory.ts +35 -0
  396. package/dist/contracts/factories/contracts/interfaces/SigHelperErrors__factory.js +23 -0
  397. package/dist/contracts/factories/contracts/interfaces/SigHelperErrors__factory.ts +31 -0
  398. package/dist/contracts/factories/contracts/interfaces/TDocDeployerErrors__factory.js +39 -0
  399. package/dist/contracts/factories/contracts/interfaces/TDocDeployerErrors__factory.ts +52 -0
  400. package/dist/contracts/factories/contracts/interfaces/TitleEscrowErrors__factory.js +103 -0
  401. package/dist/contracts/factories/contracts/interfaces/TitleEscrowErrors__factory.ts +134 -0
  402. package/dist/contracts/factories/contracts/interfaces/TitleEscrowFactoryErrors__factory.js +23 -0
  403. package/dist/contracts/factories/contracts/interfaces/TitleEscrowFactoryErrors__factory.ts +35 -0
  404. package/dist/contracts/factories/contracts/interfaces/TitleEscrowSignableErrors__factory.js +63 -0
  405. package/dist/contracts/factories/contracts/interfaces/TitleEscrowSignableErrors__factory.ts +88 -0
  406. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.js +39 -0
  407. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.ts +55 -0
  408. package/dist/contracts/factories/contracts/interfaces/index.js +124 -0
  409. package/dist/contracts/factories/contracts/interfaces/index.ts +21 -0
  410. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.js +109 -0
  411. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.ts +158 -0
  412. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.js +262 -0
  413. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.ts +367 -0
  414. package/dist/contracts/factories/contracts/mocks/SigHelperMock__factory.js +167 -0
  415. package/dist/contracts/factories/contracts/mocks/SigHelperMock__factory.ts +243 -0
  416. package/dist/contracts/factories/contracts/mocks/SimpleCaller__factory.js +56 -0
  417. package/dist/contracts/factories/contracts/mocks/SimpleCaller__factory.ts +92 -0
  418. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryCallerMock__factory.js +52 -0
  419. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryCallerMock__factory.ts +92 -0
  420. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryGetterMock__factory.js +80 -0
  421. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryGetterMock__factory.ts +129 -0
  422. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.js +714 -0
  423. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.ts +926 -0
  424. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.js +658 -0
  425. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.ts +901 -0
  426. package/dist/contracts/factories/contracts/mocks/index.js +61 -0
  427. package/dist/contracts/factories/contracts/mocks/index.ts +12 -0
  428. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.js +915 -0
  429. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.ts +1195 -0
  430. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.js +628 -0
  431. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.ts +838 -0
  432. package/dist/contracts/factories/contracts/presets/index.js +19 -0
  433. package/dist/contracts/factories/contracts/presets/index.ts +6 -0
  434. package/dist/contracts/factories/contracts/utils/SigHelper__factory.js +61 -0
  435. package/dist/contracts/factories/contracts/utils/SigHelper__factory.ts +79 -0
  436. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.js +340 -0
  437. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.ts +459 -0
  438. package/dist/contracts/factories/contracts/utils/index.js +19 -0
  439. package/dist/contracts/factories/contracts/utils/index.ts +6 -0
  440. package/dist/contracts/factories/index.js +12 -0
  441. package/dist/contracts/factories/index.ts +6 -0
  442. package/dist/contracts/hardhat.d.js +5 -0
  443. package/dist/contracts/hardhat.d.ts +1144 -0
  444. package/dist/contracts/index.js +430 -0
  445. package/dist/contracts/index.ts +129 -0
  446. package/dist/index.js +12 -0
  447. package/dist/types/constants/contract-address.d.ts +11 -0
  448. package/dist/types/constants/contract-interface-id.d.ts +10 -0
  449. package/dist/types/constants/contract-interfaces.d.ts +11 -0
  450. package/dist/types/constants/default-address.d.ts +4 -0
  451. package/dist/types/constants/index.d.ts +4 -0
  452. package/dist/types/constants/role-hash.d.ts +9 -0
  453. package/dist/types/hardhat.config.d.ts +8 -0
  454. package/dist/types/index.d.ts +2 -0
  455. package/dist/types/utils/compute-interface-id.d.ts +1 -0
  456. package/dist/types/utils/compute-title-escrow-address.d.ts +10 -0
  457. package/dist/types/utils/encode-init-params.d.ts +6 -0
  458. package/dist/types/utils/get-event-from-receipt.d.ts +29 -0
  459. package/dist/types/utils/index.d.ts +4 -0
  460. package/dist/utils/compute-interface-id.js +28 -0
  461. package/dist/utils/compute-title-escrow-address.js +31 -0
  462. package/dist/utils/encode-init-params.js +24 -0
  463. package/dist/utils/get-event-from-receipt.js +62 -0
  464. package/dist/utils/index.js +49 -0
  465. package/package.json +145 -0
@@ -0,0 +1,1132 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TitleEscrowSignable",
4
+ "sourceName": "contracts/presets/TitleEscrowSignable.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "CallerNotBeneficiary",
9
+ "type": "error"
10
+ },
11
+ {
12
+ "inputs": [],
13
+ "name": "CallerNotEndorser",
14
+ "type": "error"
15
+ },
16
+ {
17
+ "inputs": [],
18
+ "name": "CallerNotHolder",
19
+ "type": "error"
20
+ },
21
+ {
22
+ "inputs": [],
23
+ "name": "DualRoleRejectionRequired",
24
+ "type": "error"
25
+ },
26
+ {
27
+ "inputs": [],
28
+ "name": "ECDSAInvalidSignature",
29
+ "type": "error"
30
+ },
31
+ {
32
+ "inputs": [
33
+ {
34
+ "internalType": "uint256",
35
+ "name": "length",
36
+ "type": "uint256"
37
+ }
38
+ ],
39
+ "name": "ECDSAInvalidSignatureLength",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "inputs": [
44
+ {
45
+ "internalType": "bytes32",
46
+ "name": "s",
47
+ "type": "bytes32"
48
+ }
49
+ ],
50
+ "name": "ECDSAInvalidSignatureS",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "EmptyReceivingData",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "InactiveTitleEscrow",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [],
65
+ "name": "InvalidEndorsement",
66
+ "type": "error"
67
+ },
68
+ {
69
+ "inputs": [],
70
+ "name": "InvalidInitialization",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "InvalidNominee",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [
80
+ {
81
+ "internalType": "address",
82
+ "name": "registry",
83
+ "type": "address"
84
+ }
85
+ ],
86
+ "name": "InvalidRegistry",
87
+ "type": "error"
88
+ },
89
+ {
90
+ "inputs": [],
91
+ "name": "InvalidSignature",
92
+ "type": "error"
93
+ },
94
+ {
95
+ "inputs": [
96
+ {
97
+ "internalType": "uint256",
98
+ "name": "tokenId",
99
+ "type": "uint256"
100
+ }
101
+ ],
102
+ "name": "InvalidTokenId",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [
107
+ {
108
+ "internalType": "address",
109
+ "name": "beneficiary",
110
+ "type": "address"
111
+ },
112
+ {
113
+ "internalType": "address",
114
+ "name": "holder",
115
+ "type": "address"
116
+ }
117
+ ],
118
+ "name": "InvalidTokenTransferToZeroAddressOwners",
119
+ "type": "error"
120
+ },
121
+ {
122
+ "inputs": [],
123
+ "name": "InvalidTransferToZeroAddress",
124
+ "type": "error"
125
+ },
126
+ {
127
+ "inputs": [
128
+ {
129
+ "internalType": "address",
130
+ "name": "endorsedBeneficiary",
131
+ "type": "address"
132
+ },
133
+ {
134
+ "internalType": "address",
135
+ "name": "currentBeneficiary",
136
+ "type": "address"
137
+ }
138
+ ],
139
+ "name": "MismatchedEndorsedBeneficiaryAndCurrentBeneficiary",
140
+ "type": "error"
141
+ },
142
+ {
143
+ "inputs": [
144
+ {
145
+ "internalType": "address",
146
+ "name": "endorsedNominee",
147
+ "type": "address"
148
+ },
149
+ {
150
+ "internalType": "address",
151
+ "name": "onChainNominee",
152
+ "type": "address"
153
+ }
154
+ ],
155
+ "name": "MismatchedEndorsedNomineeAndOnChainNominee",
156
+ "type": "error"
157
+ },
158
+ {
159
+ "inputs": [],
160
+ "name": "NomineeAlreadyNominated",
161
+ "type": "error"
162
+ },
163
+ {
164
+ "inputs": [],
165
+ "name": "NotInitializing",
166
+ "type": "error"
167
+ },
168
+ {
169
+ "inputs": [],
170
+ "name": "RecipientAlreadyHolder",
171
+ "type": "error"
172
+ },
173
+ {
174
+ "inputs": [],
175
+ "name": "RegistryContractPaused",
176
+ "type": "error"
177
+ },
178
+ {
179
+ "inputs": [],
180
+ "name": "RemarkLengthExceeded",
181
+ "type": "error"
182
+ },
183
+ {
184
+ "inputs": [],
185
+ "name": "SignatureAlreadyCancelled",
186
+ "type": "error"
187
+ },
188
+ {
189
+ "inputs": [
190
+ {
191
+ "internalType": "uint256",
192
+ "name": "currentTimestamp",
193
+ "type": "uint256"
194
+ }
195
+ ],
196
+ "name": "SignatureExpired",
197
+ "type": "error"
198
+ },
199
+ {
200
+ "inputs": [],
201
+ "name": "TargetNomineeAlreadyBeneficiary",
202
+ "type": "error"
203
+ },
204
+ {
205
+ "inputs": [],
206
+ "name": "TitleEscrowNotHoldingToken",
207
+ "type": "error"
208
+ },
209
+ {
210
+ "inputs": [],
211
+ "name": "TokenNotReturnedToIssuer",
212
+ "type": "error"
213
+ },
214
+ {
215
+ "anonymous": false,
216
+ "inputs": [
217
+ {
218
+ "indexed": true,
219
+ "internalType": "address",
220
+ "name": "fromBeneficiary",
221
+ "type": "address"
222
+ },
223
+ {
224
+ "indexed": true,
225
+ "internalType": "address",
226
+ "name": "toBeneficiary",
227
+ "type": "address"
228
+ },
229
+ {
230
+ "indexed": false,
231
+ "internalType": "address",
232
+ "name": "registry",
233
+ "type": "address"
234
+ },
235
+ {
236
+ "indexed": false,
237
+ "internalType": "uint256",
238
+ "name": "tokenId",
239
+ "type": "uint256"
240
+ },
241
+ {
242
+ "indexed": false,
243
+ "internalType": "bytes",
244
+ "name": "remark",
245
+ "type": "bytes"
246
+ }
247
+ ],
248
+ "name": "BeneficiaryTransfer",
249
+ "type": "event"
250
+ },
251
+ {
252
+ "anonymous": false,
253
+ "inputs": [
254
+ {
255
+ "indexed": true,
256
+ "internalType": "bytes32",
257
+ "name": "hash",
258
+ "type": "bytes32"
259
+ },
260
+ {
261
+ "indexed": true,
262
+ "internalType": "address",
263
+ "name": "endorser",
264
+ "type": "address"
265
+ },
266
+ {
267
+ "indexed": true,
268
+ "internalType": "uint256",
269
+ "name": "tokenId",
270
+ "type": "uint256"
271
+ }
272
+ ],
273
+ "name": "CancelBeneficiaryTransferEndorsement",
274
+ "type": "event"
275
+ },
276
+ {
277
+ "anonymous": false,
278
+ "inputs": [
279
+ {
280
+ "indexed": true,
281
+ "internalType": "address",
282
+ "name": "fromHolder",
283
+ "type": "address"
284
+ },
285
+ {
286
+ "indexed": true,
287
+ "internalType": "address",
288
+ "name": "toHolder",
289
+ "type": "address"
290
+ },
291
+ {
292
+ "indexed": false,
293
+ "internalType": "address",
294
+ "name": "registry",
295
+ "type": "address"
296
+ },
297
+ {
298
+ "indexed": false,
299
+ "internalType": "uint256",
300
+ "name": "tokenId",
301
+ "type": "uint256"
302
+ },
303
+ {
304
+ "indexed": false,
305
+ "internalType": "bytes",
306
+ "name": "remark",
307
+ "type": "bytes"
308
+ }
309
+ ],
310
+ "name": "HolderTransfer",
311
+ "type": "event"
312
+ },
313
+ {
314
+ "anonymous": false,
315
+ "inputs": [
316
+ {
317
+ "indexed": false,
318
+ "internalType": "uint64",
319
+ "name": "version",
320
+ "type": "uint64"
321
+ }
322
+ ],
323
+ "name": "Initialized",
324
+ "type": "event"
325
+ },
326
+ {
327
+ "anonymous": false,
328
+ "inputs": [
329
+ {
330
+ "indexed": true,
331
+ "internalType": "address",
332
+ "name": "prevNominee",
333
+ "type": "address"
334
+ },
335
+ {
336
+ "indexed": true,
337
+ "internalType": "address",
338
+ "name": "nominee",
339
+ "type": "address"
340
+ },
341
+ {
342
+ "indexed": false,
343
+ "internalType": "address",
344
+ "name": "registry",
345
+ "type": "address"
346
+ },
347
+ {
348
+ "indexed": false,
349
+ "internalType": "uint256",
350
+ "name": "tokenId",
351
+ "type": "uint256"
352
+ },
353
+ {
354
+ "indexed": false,
355
+ "internalType": "bytes",
356
+ "name": "remark",
357
+ "type": "bytes"
358
+ }
359
+ ],
360
+ "name": "Nomination",
361
+ "type": "event"
362
+ },
363
+ {
364
+ "anonymous": false,
365
+ "inputs": [
366
+ {
367
+ "indexed": true,
368
+ "internalType": "address",
369
+ "name": "fromBeneficiary",
370
+ "type": "address"
371
+ },
372
+ {
373
+ "indexed": true,
374
+ "internalType": "address",
375
+ "name": "toBeneficiary",
376
+ "type": "address"
377
+ },
378
+ {
379
+ "indexed": false,
380
+ "internalType": "address",
381
+ "name": "registry",
382
+ "type": "address"
383
+ },
384
+ {
385
+ "indexed": false,
386
+ "internalType": "uint256",
387
+ "name": "tokenId",
388
+ "type": "uint256"
389
+ },
390
+ {
391
+ "indexed": false,
392
+ "internalType": "bytes",
393
+ "name": "remark",
394
+ "type": "bytes"
395
+ }
396
+ ],
397
+ "name": "RejectTransferBeneficiary",
398
+ "type": "event"
399
+ },
400
+ {
401
+ "anonymous": false,
402
+ "inputs": [
403
+ {
404
+ "indexed": true,
405
+ "internalType": "address",
406
+ "name": "fromHolder",
407
+ "type": "address"
408
+ },
409
+ {
410
+ "indexed": true,
411
+ "internalType": "address",
412
+ "name": "toHolder",
413
+ "type": "address"
414
+ },
415
+ {
416
+ "indexed": false,
417
+ "internalType": "address",
418
+ "name": "registry",
419
+ "type": "address"
420
+ },
421
+ {
422
+ "indexed": false,
423
+ "internalType": "uint256",
424
+ "name": "tokenId",
425
+ "type": "uint256"
426
+ },
427
+ {
428
+ "indexed": false,
429
+ "internalType": "bytes",
430
+ "name": "remark",
431
+ "type": "bytes"
432
+ }
433
+ ],
434
+ "name": "RejectTransferHolder",
435
+ "type": "event"
436
+ },
437
+ {
438
+ "anonymous": false,
439
+ "inputs": [
440
+ {
441
+ "indexed": true,
442
+ "internalType": "address",
443
+ "name": "fromBeneficiary",
444
+ "type": "address"
445
+ },
446
+ {
447
+ "indexed": true,
448
+ "internalType": "address",
449
+ "name": "toBeneficiary",
450
+ "type": "address"
451
+ },
452
+ {
453
+ "indexed": true,
454
+ "internalType": "address",
455
+ "name": "fromHolder",
456
+ "type": "address"
457
+ },
458
+ {
459
+ "indexed": false,
460
+ "internalType": "address",
461
+ "name": "toHolder",
462
+ "type": "address"
463
+ },
464
+ {
465
+ "indexed": false,
466
+ "internalType": "address",
467
+ "name": "registry",
468
+ "type": "address"
469
+ },
470
+ {
471
+ "indexed": false,
472
+ "internalType": "uint256",
473
+ "name": "tokenId",
474
+ "type": "uint256"
475
+ },
476
+ {
477
+ "indexed": false,
478
+ "internalType": "bytes",
479
+ "name": "remark",
480
+ "type": "bytes"
481
+ }
482
+ ],
483
+ "name": "RejectTransferOwners",
484
+ "type": "event"
485
+ },
486
+ {
487
+ "anonymous": false,
488
+ "inputs": [
489
+ {
490
+ "indexed": true,
491
+ "internalType": "address",
492
+ "name": "caller",
493
+ "type": "address"
494
+ },
495
+ {
496
+ "indexed": false,
497
+ "internalType": "address",
498
+ "name": "registry",
499
+ "type": "address"
500
+ },
501
+ {
502
+ "indexed": false,
503
+ "internalType": "uint256",
504
+ "name": "tokenId",
505
+ "type": "uint256"
506
+ },
507
+ {
508
+ "indexed": false,
509
+ "internalType": "bytes",
510
+ "name": "remark",
511
+ "type": "bytes"
512
+ }
513
+ ],
514
+ "name": "ReturnToIssuer",
515
+ "type": "event"
516
+ },
517
+ {
518
+ "anonymous": false,
519
+ "inputs": [
520
+ {
521
+ "indexed": false,
522
+ "internalType": "address",
523
+ "name": "registry",
524
+ "type": "address"
525
+ },
526
+ {
527
+ "indexed": false,
528
+ "internalType": "uint256",
529
+ "name": "tokenId",
530
+ "type": "uint256"
531
+ },
532
+ {
533
+ "indexed": false,
534
+ "internalType": "bytes",
535
+ "name": "remark",
536
+ "type": "bytes"
537
+ }
538
+ ],
539
+ "name": "Shred",
540
+ "type": "event"
541
+ },
542
+ {
543
+ "anonymous": false,
544
+ "inputs": [
545
+ {
546
+ "indexed": true,
547
+ "internalType": "address",
548
+ "name": "beneficiary",
549
+ "type": "address"
550
+ },
551
+ {
552
+ "indexed": true,
553
+ "internalType": "address",
554
+ "name": "holder",
555
+ "type": "address"
556
+ },
557
+ {
558
+ "indexed": true,
559
+ "internalType": "bool",
560
+ "name": "isMinting",
561
+ "type": "bool"
562
+ },
563
+ {
564
+ "indexed": false,
565
+ "internalType": "address",
566
+ "name": "registry",
567
+ "type": "address"
568
+ },
569
+ {
570
+ "indexed": false,
571
+ "internalType": "uint256",
572
+ "name": "tokenId",
573
+ "type": "uint256"
574
+ },
575
+ {
576
+ "indexed": false,
577
+ "internalType": "bytes",
578
+ "name": "remark",
579
+ "type": "bytes"
580
+ }
581
+ ],
582
+ "name": "TokenReceived",
583
+ "type": "event"
584
+ },
585
+ {
586
+ "inputs": [],
587
+ "name": "BENEFICIARY_TRANSFER_TYPEHASH",
588
+ "outputs": [
589
+ {
590
+ "internalType": "bytes32",
591
+ "name": "",
592
+ "type": "bytes32"
593
+ }
594
+ ],
595
+ "stateMutability": "view",
596
+ "type": "function"
597
+ },
598
+ {
599
+ "inputs": [],
600
+ "name": "DOMAIN_SEPARATOR",
601
+ "outputs": [
602
+ {
603
+ "internalType": "bytes32",
604
+ "name": "",
605
+ "type": "bytes32"
606
+ }
607
+ ],
608
+ "stateMutability": "view",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [],
613
+ "name": "active",
614
+ "outputs": [
615
+ {
616
+ "internalType": "bool",
617
+ "name": "",
618
+ "type": "bool"
619
+ }
620
+ ],
621
+ "stateMutability": "view",
622
+ "type": "function"
623
+ },
624
+ {
625
+ "inputs": [],
626
+ "name": "beneficiary",
627
+ "outputs": [
628
+ {
629
+ "internalType": "address",
630
+ "name": "",
631
+ "type": "address"
632
+ }
633
+ ],
634
+ "stateMutability": "view",
635
+ "type": "function"
636
+ },
637
+ {
638
+ "inputs": [
639
+ {
640
+ "components": [
641
+ {
642
+ "internalType": "address",
643
+ "name": "beneficiary",
644
+ "type": "address"
645
+ },
646
+ {
647
+ "internalType": "address",
648
+ "name": "holder",
649
+ "type": "address"
650
+ },
651
+ {
652
+ "internalType": "address",
653
+ "name": "nominee",
654
+ "type": "address"
655
+ },
656
+ {
657
+ "internalType": "address",
658
+ "name": "registry",
659
+ "type": "address"
660
+ },
661
+ {
662
+ "internalType": "uint256",
663
+ "name": "tokenId",
664
+ "type": "uint256"
665
+ },
666
+ {
667
+ "internalType": "uint256",
668
+ "name": "deadline",
669
+ "type": "uint256"
670
+ },
671
+ {
672
+ "internalType": "uint256",
673
+ "name": "nonce",
674
+ "type": "uint256"
675
+ }
676
+ ],
677
+ "internalType": "struct BeneficiaryTransferEndorsement",
678
+ "name": "endorsement",
679
+ "type": "tuple"
680
+ }
681
+ ],
682
+ "name": "cancelBeneficiaryTransfer",
683
+ "outputs": [],
684
+ "stateMutability": "nonpayable",
685
+ "type": "function"
686
+ },
687
+ {
688
+ "inputs": [
689
+ {
690
+ "internalType": "bytes32",
691
+ "name": "",
692
+ "type": "bytes32"
693
+ }
694
+ ],
695
+ "name": "cancelled",
696
+ "outputs": [
697
+ {
698
+ "internalType": "bool",
699
+ "name": "",
700
+ "type": "bool"
701
+ }
702
+ ],
703
+ "stateMutability": "view",
704
+ "type": "function"
705
+ },
706
+ {
707
+ "inputs": [],
708
+ "name": "holder",
709
+ "outputs": [
710
+ {
711
+ "internalType": "address",
712
+ "name": "",
713
+ "type": "address"
714
+ }
715
+ ],
716
+ "stateMutability": "view",
717
+ "type": "function"
718
+ },
719
+ {
720
+ "inputs": [
721
+ {
722
+ "internalType": "address",
723
+ "name": "_registry",
724
+ "type": "address"
725
+ },
726
+ {
727
+ "internalType": "uint256",
728
+ "name": "_tokenId",
729
+ "type": "uint256"
730
+ }
731
+ ],
732
+ "name": "initialize",
733
+ "outputs": [],
734
+ "stateMutability": "nonpayable",
735
+ "type": "function"
736
+ },
737
+ {
738
+ "inputs": [],
739
+ "name": "isHoldingToken",
740
+ "outputs": [
741
+ {
742
+ "internalType": "bool",
743
+ "name": "",
744
+ "type": "bool"
745
+ }
746
+ ],
747
+ "stateMutability": "view",
748
+ "type": "function"
749
+ },
750
+ {
751
+ "inputs": [],
752
+ "name": "name",
753
+ "outputs": [
754
+ {
755
+ "internalType": "string",
756
+ "name": "",
757
+ "type": "string"
758
+ }
759
+ ],
760
+ "stateMutability": "view",
761
+ "type": "function"
762
+ },
763
+ {
764
+ "inputs": [
765
+ {
766
+ "internalType": "address",
767
+ "name": "_nominee",
768
+ "type": "address"
769
+ },
770
+ {
771
+ "internalType": "bytes",
772
+ "name": "_remark",
773
+ "type": "bytes"
774
+ }
775
+ ],
776
+ "name": "nominate",
777
+ "outputs": [],
778
+ "stateMutability": "nonpayable",
779
+ "type": "function"
780
+ },
781
+ {
782
+ "inputs": [],
783
+ "name": "nominee",
784
+ "outputs": [
785
+ {
786
+ "internalType": "address",
787
+ "name": "",
788
+ "type": "address"
789
+ }
790
+ ],
791
+ "stateMutability": "view",
792
+ "type": "function"
793
+ },
794
+ {
795
+ "inputs": [
796
+ {
797
+ "internalType": "address",
798
+ "name": "",
799
+ "type": "address"
800
+ }
801
+ ],
802
+ "name": "nonces",
803
+ "outputs": [
804
+ {
805
+ "internalType": "uint256",
806
+ "name": "",
807
+ "type": "uint256"
808
+ }
809
+ ],
810
+ "stateMutability": "view",
811
+ "type": "function"
812
+ },
813
+ {
814
+ "inputs": [
815
+ {
816
+ "internalType": "address",
817
+ "name": "",
818
+ "type": "address"
819
+ },
820
+ {
821
+ "internalType": "address",
822
+ "name": "",
823
+ "type": "address"
824
+ },
825
+ {
826
+ "internalType": "uint256",
827
+ "name": "_tokenId",
828
+ "type": "uint256"
829
+ },
830
+ {
831
+ "internalType": "bytes",
832
+ "name": "data",
833
+ "type": "bytes"
834
+ }
835
+ ],
836
+ "name": "onERC721Received",
837
+ "outputs": [
838
+ {
839
+ "internalType": "bytes4",
840
+ "name": "",
841
+ "type": "bytes4"
842
+ }
843
+ ],
844
+ "stateMutability": "nonpayable",
845
+ "type": "function"
846
+ },
847
+ {
848
+ "inputs": [],
849
+ "name": "prevBeneficiary",
850
+ "outputs": [
851
+ {
852
+ "internalType": "address",
853
+ "name": "",
854
+ "type": "address"
855
+ }
856
+ ],
857
+ "stateMutability": "view",
858
+ "type": "function"
859
+ },
860
+ {
861
+ "inputs": [],
862
+ "name": "prevHolder",
863
+ "outputs": [
864
+ {
865
+ "internalType": "address",
866
+ "name": "",
867
+ "type": "address"
868
+ }
869
+ ],
870
+ "stateMutability": "view",
871
+ "type": "function"
872
+ },
873
+ {
874
+ "inputs": [],
875
+ "name": "registry",
876
+ "outputs": [
877
+ {
878
+ "internalType": "address",
879
+ "name": "",
880
+ "type": "address"
881
+ }
882
+ ],
883
+ "stateMutability": "view",
884
+ "type": "function"
885
+ },
886
+ {
887
+ "inputs": [
888
+ {
889
+ "internalType": "bytes",
890
+ "name": "_remark",
891
+ "type": "bytes"
892
+ }
893
+ ],
894
+ "name": "rejectTransferBeneficiary",
895
+ "outputs": [],
896
+ "stateMutability": "nonpayable",
897
+ "type": "function"
898
+ },
899
+ {
900
+ "inputs": [
901
+ {
902
+ "internalType": "bytes",
903
+ "name": "_remark",
904
+ "type": "bytes"
905
+ }
906
+ ],
907
+ "name": "rejectTransferHolder",
908
+ "outputs": [],
909
+ "stateMutability": "nonpayable",
910
+ "type": "function"
911
+ },
912
+ {
913
+ "inputs": [
914
+ {
915
+ "internalType": "bytes",
916
+ "name": "_remark",
917
+ "type": "bytes"
918
+ }
919
+ ],
920
+ "name": "rejectTransferOwners",
921
+ "outputs": [],
922
+ "stateMutability": "nonpayable",
923
+ "type": "function"
924
+ },
925
+ {
926
+ "inputs": [],
927
+ "name": "remark",
928
+ "outputs": [
929
+ {
930
+ "internalType": "bytes",
931
+ "name": "",
932
+ "type": "bytes"
933
+ }
934
+ ],
935
+ "stateMutability": "view",
936
+ "type": "function"
937
+ },
938
+ {
939
+ "inputs": [
940
+ {
941
+ "internalType": "bytes",
942
+ "name": "_remark",
943
+ "type": "bytes"
944
+ }
945
+ ],
946
+ "name": "returnToIssuer",
947
+ "outputs": [],
948
+ "stateMutability": "nonpayable",
949
+ "type": "function"
950
+ },
951
+ {
952
+ "inputs": [
953
+ {
954
+ "internalType": "bytes",
955
+ "name": "_remark",
956
+ "type": "bytes"
957
+ }
958
+ ],
959
+ "name": "shred",
960
+ "outputs": [],
961
+ "stateMutability": "nonpayable",
962
+ "type": "function"
963
+ },
964
+ {
965
+ "inputs": [
966
+ {
967
+ "internalType": "bytes4",
968
+ "name": "interfaceId",
969
+ "type": "bytes4"
970
+ }
971
+ ],
972
+ "name": "supportsInterface",
973
+ "outputs": [
974
+ {
975
+ "internalType": "bool",
976
+ "name": "",
977
+ "type": "bool"
978
+ }
979
+ ],
980
+ "stateMutability": "view",
981
+ "type": "function"
982
+ },
983
+ {
984
+ "inputs": [],
985
+ "name": "tokenId",
986
+ "outputs": [
987
+ {
988
+ "internalType": "uint256",
989
+ "name": "",
990
+ "type": "uint256"
991
+ }
992
+ ],
993
+ "stateMutability": "view",
994
+ "type": "function"
995
+ },
996
+ {
997
+ "inputs": [
998
+ {
999
+ "internalType": "address",
1000
+ "name": "_nominee",
1001
+ "type": "address"
1002
+ },
1003
+ {
1004
+ "internalType": "bytes",
1005
+ "name": "_remark",
1006
+ "type": "bytes"
1007
+ }
1008
+ ],
1009
+ "name": "transferBeneficiary",
1010
+ "outputs": [],
1011
+ "stateMutability": "nonpayable",
1012
+ "type": "function"
1013
+ },
1014
+ {
1015
+ "inputs": [
1016
+ {
1017
+ "components": [
1018
+ {
1019
+ "internalType": "address",
1020
+ "name": "beneficiary",
1021
+ "type": "address"
1022
+ },
1023
+ {
1024
+ "internalType": "address",
1025
+ "name": "holder",
1026
+ "type": "address"
1027
+ },
1028
+ {
1029
+ "internalType": "address",
1030
+ "name": "nominee",
1031
+ "type": "address"
1032
+ },
1033
+ {
1034
+ "internalType": "address",
1035
+ "name": "registry",
1036
+ "type": "address"
1037
+ },
1038
+ {
1039
+ "internalType": "uint256",
1040
+ "name": "tokenId",
1041
+ "type": "uint256"
1042
+ },
1043
+ {
1044
+ "internalType": "uint256",
1045
+ "name": "deadline",
1046
+ "type": "uint256"
1047
+ },
1048
+ {
1049
+ "internalType": "uint256",
1050
+ "name": "nonce",
1051
+ "type": "uint256"
1052
+ }
1053
+ ],
1054
+ "internalType": "struct BeneficiaryTransferEndorsement",
1055
+ "name": "endorsement",
1056
+ "type": "tuple"
1057
+ },
1058
+ {
1059
+ "components": [
1060
+ {
1061
+ "internalType": "bytes32",
1062
+ "name": "r",
1063
+ "type": "bytes32"
1064
+ },
1065
+ {
1066
+ "internalType": "bytes32",
1067
+ "name": "s",
1068
+ "type": "bytes32"
1069
+ },
1070
+ {
1071
+ "internalType": "uint8",
1072
+ "name": "v",
1073
+ "type": "uint8"
1074
+ }
1075
+ ],
1076
+ "internalType": "struct SigHelper.Sig",
1077
+ "name": "sig",
1078
+ "type": "tuple"
1079
+ }
1080
+ ],
1081
+ "name": "transferBeneficiaryWithSig",
1082
+ "outputs": [],
1083
+ "stateMutability": "nonpayable",
1084
+ "type": "function"
1085
+ },
1086
+ {
1087
+ "inputs": [
1088
+ {
1089
+ "internalType": "address",
1090
+ "name": "newHolder",
1091
+ "type": "address"
1092
+ },
1093
+ {
1094
+ "internalType": "bytes",
1095
+ "name": "_remark",
1096
+ "type": "bytes"
1097
+ }
1098
+ ],
1099
+ "name": "transferHolder",
1100
+ "outputs": [],
1101
+ "stateMutability": "nonpayable",
1102
+ "type": "function"
1103
+ },
1104
+ {
1105
+ "inputs": [
1106
+ {
1107
+ "internalType": "address",
1108
+ "name": "_nominee",
1109
+ "type": "address"
1110
+ },
1111
+ {
1112
+ "internalType": "address",
1113
+ "name": "newHolder",
1114
+ "type": "address"
1115
+ },
1116
+ {
1117
+ "internalType": "bytes",
1118
+ "name": "_remark",
1119
+ "type": "bytes"
1120
+ }
1121
+ ],
1122
+ "name": "transferOwners",
1123
+ "outputs": [],
1124
+ "stateMutability": "nonpayable",
1125
+ "type": "function"
1126
+ }
1127
+ ],
1128
+ "bytecode": "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000234565b60405180910390a15b505050505062000251565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200021c620002166200021084620001d3565b620001f1565b620001dd565b9050919050565b6200022e81620001fb565b82525050565b60006020820190506200024b600083018462000223565b92915050565b615c7980620002616000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063452736fd11610104578063baf13975116100a2578063cd6dc68711610071578063cd6dc687146104f8578063e3d79a6e14610514578063e534155d14610530578063e9bc1b0b1461054e576101cf565b8063baf1397514610484578063bd1d07b5146104a0578063c9437e5e146104be578063cb3cfb29146104dc576101cf565b80637ecebe00116100de5780637ecebe00146103fe57806383d38fcb1461042e5780638fb33c3c1461044a578063a47d1f5e14610466576101cf565b8063452736fd146103a8578063589a30eb146103c45780637b103999146103e0576101cf565b806320f99c0a11610171578063308f8e1c1161014b578063308f8e1c1461033457806334427f61146103505780633644e5151461036c57806338af3eed1461038a576101cf565b806320f99c0a146102c85780632ac12622146102e65780632ce2637a14610316576101cf565b806305de0a2e116101ad57806305de0a2e1461024057806306fdde031461025c578063150b7a021461027a57806317d70f7c146102aa576101cf565b806301ffc9a7146101d457806302fb0c5e14610204578063035aedfa14610222575b600080fd5b6101ee60048036038101906101e991906148fd565b61056a565b6040516101fb9190614945565b60405180910390f35b61020c6105e4565b6040516102199190614945565b60405180910390f35b61022a6105f7565b60405161023791906149a1565b60405180910390f35b61025a60048036038101906102559190614a21565b61061d565b005b610264610aee565b6040516102719190614afe565b60405180910390f35b610294600480360381019061028f9190614b82565b610b27565b6040516102a19190614c19565b60405180910390f35b6102b261102a565b6040516102bf9190614c43565b60405180910390f35b6102d0611030565b6040516102dd91906149a1565b60405180910390f35b61030060048036038101906102fb9190614c94565b611056565b60405161030d9190614945565b60405180910390f35b61031e611076565b60405161032b9190614cd0565b60405180910390f35b61034e60048036038101906103499190614ceb565b61109d565b005b61036a60048036038101906103659190614d4b565b611529565b005b610374611545565b6040516103819190614cd0565b60405180910390f35b61039261154b565b60405161039f91906149a1565b60405180910390f35b6103c260048036038101906103bd9190614a21565b611571565b005b6103de60048036038101906103d99190614f90565b611b73565b005b6103e8612221565b6040516103f591906149a1565b60405180910390f35b61041860048036038101906104139190614fd1565b612247565b6040516104259190614c43565b60405180910390f35b61044860048036038101906104439190614a21565b61225f565b005b610464600480360381019061045f9190614a21565b6126e2565b005b61046e6129cf565b60405161047b9190615053565b60405180910390f35b61049e60048036038101906104999190614ceb565b612a5d565b005b6104a8612ee7565b6040516104b591906149a1565b60405180910390f35b6104c6612f0d565b6040516104d39190614945565b60405180910390f35b6104f660048036038101906104f19190614a21565b612f1c565b005b610512600480360381019061050d9190615075565b6133ed565b005b61052e60048036038101906105299190614ceb565b61357e565b005b610538613a08565b60405161054591906149a1565b60405180910390f35b610568600480360381019061056391906150b5565b613a2e565b005b600061057582613c12565b806105dd57507fb1262be0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600960149054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b0919061510e565b905080156106ea576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610730576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b7576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bf613c7c565b6107f5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115610835576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108bd576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610966576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182610977929190615352565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a148188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f279c68b511f19d28a79afc0687d9909fc941d6f7551e4b0e333a1171cc2eea5f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548b8b604051610add949392919061545e565b60405180910390a350505050505050565b6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f7700000000000000000081525081565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb919061510e565b90508015610bf5576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610c3b576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004548514610c8157846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610c789190614c43565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1357336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610d0a91906149a1565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dbf5750600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f145760008585905003610e01576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610e159190615582565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e825750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ec65782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610ebd9291906155f1565b60405180910390fd5b610edf8360405180602001604052806000815250613dd2565b610ef88260405180602001604052806000815250613d4f565b80600a9081610f07919061561a565b5060019350505050610f27565b8484600a9182610f25929190615352565b505b801515600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f44fc4ffe7e585a241451c67b41553546c65c2b07de6e9d33405e53f75357293b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600a604051610ff493929190615770565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b7fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611130919061510e565b9050801561116a576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166111b0576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611237576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123f613c7c565b611275576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156112b5576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361131b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806113e657508573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61141c576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a91826114d2929190615352565b506115218686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b505050505050565b61153484838361109d565b61153f838383612a5d565b50505050565b60005481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061510e565b9050801561163e576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611684576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61168c613c7c565b6116c2576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611749576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d0576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611810576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118bb5750600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156118f2576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182611903929190615352565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506119ee818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b611a3c838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2812f41a966386b432bd1d43d72b6613f5eca9adf4ed9e193f95f5c91a1b662686600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548f8f604051611b609594939291906157ae565b60405180910390a4505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c06919061510e565b90508015611c40576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611c86576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0d576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d15613c7c565b611d4b576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428360a001511015611d9457426040517fcd21db4f000000000000000000000000000000000000000000000000000000008152600401611d8b9190614c43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161480611e245750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16145b80611e815750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614155b80611e925750600454836080015114155b80611eef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff1614155b15611f26576040517f46ad276700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161461203a578260400151600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517fbcac228f0000000000000000000000000000000000000000000000000000000081526004016120319291906155f1565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16146120f9578260000151600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f20904a940000000000000000000000000000000000000000000000000000000081526004016120f09291906155f1565b60405180910390fd5b61212e61210584613f5d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684614019565b612164576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546121d29061582b565b9190508190555061221c83604001516040518060400160405280600381526020017f3078300000000000000000000000000000000000000000000000000000000000815250613dd2565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f2919061510e565b9050801561232c576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612372576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123f9576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612480576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612488613c7c565b6124be576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156124fe576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61251860006040518060200160405280600081525061415a565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa5830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546040518463ffffffff1660e01b815260040161259b93929190615899565b600060405180830381600087803b1580156125b557600080fd5b505af11580156125c9573d6000803e3d6000fd5b505050508484600a91826125de929190615352565b506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045488886040516126d3949392919061545e565b60405180910390a25050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612751573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612775919061510e565b905080156127af576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166127f5576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612835576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61283d613c7c565b15612874576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461290657336040517f540b96010000000000000000000000000000000000000000000000000000000081526004016128fd91906149a1565b60405180910390fd5b612920600060405180602001604052806000815250613dd2565b61293a600060405180602001604052806000815250613d4f565b6000600960146101000a81548160ff0219169083151502179055508484600a9182612966929190615352565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045487876040516129c0949392919061545e565b60405180910390a15050505050565b600a80546129dc90615175565b80601f0160208091040260200160405190810160405280929190818152602001828054612a0890615175565b8015612a555780601f10612a2a57610100808354040283529160200191612a55565b820191906000526020600020905b815481529060010190602001808311612a3857829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af0919061510e565b90508015612b2a576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612b70576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bff613c7c565b612c35576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612c75576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612cdb576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612d62576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612e1c576000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a9182612e90929190615352565b50612edf8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b505050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612f17613c7c565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faf919061510e565b90508015612fe9576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff1661302f576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146130b6576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130be613c7c565b6130f4576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613134576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131bc576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613265576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182613276929190615352565b506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506133138188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26cb5b08a00ade9c3c65737592d8344548bf60664af05af8ed04720b893eca27600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548b8b6040516133dc949392919061545e565b60405180910390a350505050505050565b60006133f761424e565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156134455750825b9050600060018367ffffffffffffffff1614801561347a575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015613488575080155b156134bf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561350f5760018560000160086101000a81548160ff0219169083151502179055505b6135198787614276565b83156135755760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161356c9190615932565b60405180910390a15b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613611919061510e565b9050801561364b576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613691576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613718576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613720613c7c565b613756576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613796576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361381d576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036138a4576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036139a0576000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8484600a91826139b1929190615352565b50613a008686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061415a565b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac1919061510e565b90508015613afb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613b41576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613baa576040517fae04d15600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613bb583613f5d565b9050613bc081614300565b8260800151836020015173ffffffffffffffffffffffffffffffffffffffff16827fd6566b41f60aeb5bb4f55d9f58999096b6540c620fee372223774561e6d3854160405160405180910390a4505050565b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60003073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6004546040518263ffffffff1660e01b8152600401613cf29190614c43565b602060405180830381865afa158015613d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d339190615962565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154613dbd9061582b565b91905081905550613dce8282614387565b5050565b8173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9081b884d1178ac5e4855291131f541f64a88854f90b8df23412ffd63c39be1d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045485604051613e799392919061598f565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613f1857613f1760006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525061415a565b5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b826000015183602001518460400151856060015186608001518760a00151600160008a6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001613ffc9897969594939291906159cd565b604051602081830303815290604052805190602001209050919050565b60006002600085815260200190815260200160002060009054906101000a900460ff1615614073576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805485604051602001614089929190615ac3565b60405160208183030381529060405280519060200120905060006140e58460000151856020015186604001516040516020016140c793929190615b30565b6040516020818303038152906040528361447b90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561414f57508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b925050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbe262229f456b8d55f1e1887503540dc0a1efcb4b048b6b739117e66d031214600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454856040516142019392919061598f565b60405180910390a381600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61427e6144a7565b61428882826144e7565b6142fc6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f770000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250614556565b5050565b6002600082815260200190815260200160002060009054906101000a900460ff1615614358576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016002600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f30426d047f8ae6511337356e511764b12f79993bd73501d0e993b3da7a780a4d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548560405161442e9392919061598f565b60405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060008061448b86866145bd565b92509250925061449b8282614619565b82935050505092915050565b6144af61477d565b6144e5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6144ef6144a7565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806004819055506001600960146101000a81548160ff0219169083151502179055505050565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82805190602001208280519060200120463060405160200161459d959493929190615b6d565b604051602081830303815290604052805190602001206000819055505050565b600080600060418451036146025760008060006020870151925060408701519150606087015160001a90506145f48882858561479d565b955095509550505050614612565b60006002855160001b9250925092505b9250925092565b6000600381111561462d5761462c615bc0565b5b8260038111156146405761463f615bc0565b5b0315614779576001600381111561465a57614659615bc0565b5b82600381111561466d5761466c615bc0565b5b036146a4576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156146b8576146b7615bc0565b5b8260038111156146cb576146ca615bc0565b5b03614710578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016147079190614c43565b60405180910390fd5b60038081111561472357614722615bc0565b5b82600381111561473657614735615bc0565b5b0361477857806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161476f9190614cd0565b60405180910390fd5b5b5050565b600061478761424e565b60000160089054906101000a900460ff16905090565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156147dd576000600385925092509250614887565b6000600188888888604051600081526020016040526040516148029493929190615bfe565b6020604051602081039080840390855afa158015614824573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361487857600060016000801b93509350935050614887565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6148da816148a5565b81146148e557600080fd5b50565b6000813590506148f7816148d1565b92915050565b6000602082840312156149135761491261489b565b5b6000614921848285016148e8565b91505092915050565b60008115159050919050565b61493f8161492a565b82525050565b600060208201905061495a6000830184614936565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061498b82614960565b9050919050565b61499b81614980565b82525050565b60006020820190506149b66000830184614992565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126149e1576149e06149bc565b5b8235905067ffffffffffffffff8111156149fe576149fd6149c1565b5b602083019150836001820283011115614a1a57614a196149c6565b5b9250929050565b60008060208385031215614a3857614a3761489b565b5b600083013567ffffffffffffffff811115614a5657614a556148a0565b5b614a62858286016149cb565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614aa8578082015181840152602081019050614a8d565b60008484015250505050565b6000601f19601f8301169050919050565b6000614ad082614a6e565b614ada8185614a79565b9350614aea818560208601614a8a565b614af381614ab4565b840191505092915050565b60006020820190508181036000830152614b188184614ac5565b905092915050565b614b2981614980565b8114614b3457600080fd5b50565b600081359050614b4681614b20565b92915050565b6000819050919050565b614b5f81614b4c565b8114614b6a57600080fd5b50565b600081359050614b7c81614b56565b92915050565b600080600080600060808688031215614b9e57614b9d61489b565b5b6000614bac88828901614b37565b9550506020614bbd88828901614b37565b9450506040614bce88828901614b6d565b935050606086013567ffffffffffffffff811115614bef57614bee6148a0565b5b614bfb888289016149cb565b92509250509295509295909350565b614c13816148a5565b82525050565b6000602082019050614c2e6000830184614c0a565b92915050565b614c3d81614b4c565b82525050565b6000602082019050614c586000830184614c34565b92915050565b6000819050919050565b614c7181614c5e565b8114614c7c57600080fd5b50565b600081359050614c8e81614c68565b92915050565b600060208284031215614caa57614ca961489b565b5b6000614cb884828501614c7f565b91505092915050565b614cca81614c5e565b82525050565b6000602082019050614ce56000830184614cc1565b92915050565b600080600060408486031215614d0457614d0361489b565b5b6000614d1286828701614b37565b935050602084013567ffffffffffffffff811115614d3357614d326148a0565b5b614d3f868287016149cb565b92509250509250925092565b60008060008060608587031215614d6557614d6461489b565b5b6000614d7387828801614b37565b9450506020614d8487828801614b37565b935050604085013567ffffffffffffffff811115614da557614da46148a0565b5b614db1878288016149cb565b925092505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614dfc82614ab4565b810181811067ffffffffffffffff82111715614e1b57614e1a614dc4565b5b80604052505050565b6000614e2e614891565b9050614e3a8282614df3565b919050565b600060e08284031215614e5557614e54614dbf565b5b614e5f60e0614e24565b90506000614e6f84828501614b37565b6000830152506020614e8384828501614b37565b6020830152506040614e9784828501614b37565b6040830152506060614eab84828501614b37565b6060830152506080614ebf84828501614b6d565b60808301525060a0614ed384828501614b6d565b60a08301525060c0614ee784828501614b6d565b60c08301525092915050565b600060ff82169050919050565b614f0981614ef3565b8114614f1457600080fd5b50565b600081359050614f2681614f00565b92915050565b600060608284031215614f4257614f41614dbf565b5b614f4c6060614e24565b90506000614f5c84828501614c7f565b6000830152506020614f7084828501614c7f565b6020830152506040614f8484828501614f17565b60408301525092915050565b6000806101408385031215614fa857614fa761489b565b5b6000614fb685828601614e3f565b92505060e0614fc785828601614f2c565b9150509250929050565b600060208284031215614fe757614fe661489b565b5b6000614ff584828501614b37565b91505092915050565b600081519050919050565b600082825260208201905092915050565b600061502582614ffe565b61502f8185615009565b935061503f818560208601614a8a565b61504881614ab4565b840191505092915050565b6000602082019050818103600083015261506d818461501a565b905092915050565b6000806040838503121561508c5761508b61489b565b5b600061509a85828601614b37565b92505060206150ab85828601614b6d565b9150509250929050565b600060e082840312156150cb576150ca61489b565b5b60006150d984828501614e3f565b91505092915050565b6150eb8161492a565b81146150f657600080fd5b50565b600081519050615108816150e2565b92915050565b6000602082840312156151245761512361489b565b5b6000615132848285016150f9565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061518d57607f821691505b6020821081036151a05761519f615146565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584614b4c565b61522a565b614b4c565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361513b565b67ffffffffffffffff81111561537557615374614dc4565b5b61537f8254615175565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b600061543d8385615009565b935061544a838584615422565b61545383614ab4565b840190509392505050565b60006060820190506154736000830187614992565b6154806020830186614c34565b8181036040830152615493818486615431565b905095945050505050565b60006154a982614960565b9050919050565b6154b98161549e565b81146154c457600080fd5b50565b6000813590506154d6816154b0565b92915050565b600080fd5b600067ffffffffffffffff8211156154fc576154fb614dc4565b5b61550582614ab4565b9050602081019050919050565b6000615525615520846154e1565b614e24565b905082815260208101848484011115615541576155406154dc565b5b61554c848285615422565b509392505050565b600082601f830112615569576155686149bc565b5b8135615579848260208601615512565b91505092915050565b60008060006060848603121561559b5761559a61489b565b5b60006155a9868287016154c7565b93505060206155ba868287016154c7565b925050604084013567ffffffffffffffff8111156155db576155da6148a0565b5b6155e786828701615554565b9150509250925092565b60006040820190506156066000830185614992565b6156136020830184614992565b9392505050565b61562382614ffe565b67ffffffffffffffff81111561563c5761563b614dc4565b5b6156468254615175565b6156518282856152c5565b600060209050601f8311600181146156845760008415615672578287015190505b61567c8582615336565b8655506156e4565b601f198416615692866151a6565b60005b828110156156ba57848901518255600182019150602085019450602081019050615695565b868310156156d757848901516156d3601f891682615318565b8355505b6001600288020188555050505b505050505050565b600081546156f981615175565b6157038186615009565b9450600182166000811461571e576001811461573457615767565b60ff198316865281151560200286019350615767565b61573d856151a6565b60005b8381101561575f57815481890152600182019150602081019050615740565b808801955050505b50505092915050565b60006060820190506157856000830186614992565b6157926020830185614c34565b81810360408301526157a481846156ec565b9050949350505050565b60006080820190506157c36000830188614992565b6157d06020830187614992565b6157dd6040830186614c34565b81810360608301526157f0818486615431565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061583682614b4c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615868576158676157fc565b5b600182019050919050565b50565b6000615883600083615009565b915061588e82615873565b600082019050919050565b60006080820190506158ae6000830186614992565b6158bb6020830185614992565b6158c86040830184614c34565b81810360608301526158d981615876565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061591c615917615912846158e3565b61522a565b6158ed565b9050919050565b61592c81615901565b82525050565b60006020820190506159476000830184615923565b92915050565b60008151905061595c81614b20565b92915050565b6000602082840312156159785761597761489b565b5b60006159868482850161594d565b91505092915050565b60006060820190506159a46000830186614992565b6159b16020830185614c34565b81810360408301526159c3818461501a565b9050949350505050565b6000610100820190506159e3600083018b614cc1565b6159f0602083018a614992565b6159fd6040830189614992565b615a0a6060830188614992565b615a176080830187614992565b615a2460a0830186614c34565b615a3160c0830185614c34565b615a3e60e0830184614c34565b9998505050505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000615a8c600283615a4b565b9150615a9782615a56565b600282019050919050565b6000819050919050565b615abd615ab882614c5e565b615aa2565b82525050565b6000615ace82615a7f565b9150615ada8285615aac565b602082019150615aea8284615aac565b6020820191508190509392505050565b60008160f81b9050919050565b6000615b1282615afa565b9050919050565b615b2a615b2582614ef3565b615b07565b82525050565b6000615b3c8286615aac565b602082019150615b4c8285615aac565b602082019150615b5c8284615b19565b600182019150819050949350505050565b600060a082019050615b826000830188614cc1565b615b8f6020830187614cc1565b615b9c6040830186614cc1565b615ba96060830185614c34565b615bb66080830184614992565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b615bf881614ef3565b82525050565b6000608082019050615c136000830187614cc1565b615c206020830186615bef565b615c2d6040830185614cc1565b615c3a6060830184614cc1565b9594505050505056fea2646970667358221220b5f565ff2767b83545845c53e30883cd071dd10550b0f2d182659b79edc481c564736f6c63430008160033",
1129
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063452736fd11610104578063baf13975116100a2578063cd6dc68711610071578063cd6dc687146104f8578063e3d79a6e14610514578063e534155d14610530578063e9bc1b0b1461054e576101cf565b8063baf1397514610484578063bd1d07b5146104a0578063c9437e5e146104be578063cb3cfb29146104dc576101cf565b80637ecebe00116100de5780637ecebe00146103fe57806383d38fcb1461042e5780638fb33c3c1461044a578063a47d1f5e14610466576101cf565b8063452736fd146103a8578063589a30eb146103c45780637b103999146103e0576101cf565b806320f99c0a11610171578063308f8e1c1161014b578063308f8e1c1461033457806334427f61146103505780633644e5151461036c57806338af3eed1461038a576101cf565b806320f99c0a146102c85780632ac12622146102e65780632ce2637a14610316576101cf565b806305de0a2e116101ad57806305de0a2e1461024057806306fdde031461025c578063150b7a021461027a57806317d70f7c146102aa576101cf565b806301ffc9a7146101d457806302fb0c5e14610204578063035aedfa14610222575b600080fd5b6101ee60048036038101906101e991906148fd565b61056a565b6040516101fb9190614945565b60405180910390f35b61020c6105e4565b6040516102199190614945565b60405180910390f35b61022a6105f7565b60405161023791906149a1565b60405180910390f35b61025a60048036038101906102559190614a21565b61061d565b005b610264610aee565b6040516102719190614afe565b60405180910390f35b610294600480360381019061028f9190614b82565b610b27565b6040516102a19190614c19565b60405180910390f35b6102b261102a565b6040516102bf9190614c43565b60405180910390f35b6102d0611030565b6040516102dd91906149a1565b60405180910390f35b61030060048036038101906102fb9190614c94565b611056565b60405161030d9190614945565b60405180910390f35b61031e611076565b60405161032b9190614cd0565b60405180910390f35b61034e60048036038101906103499190614ceb565b61109d565b005b61036a60048036038101906103659190614d4b565b611529565b005b610374611545565b6040516103819190614cd0565b60405180910390f35b61039261154b565b60405161039f91906149a1565b60405180910390f35b6103c260048036038101906103bd9190614a21565b611571565b005b6103de60048036038101906103d99190614f90565b611b73565b005b6103e8612221565b6040516103f591906149a1565b60405180910390f35b61041860048036038101906104139190614fd1565b612247565b6040516104259190614c43565b60405180910390f35b61044860048036038101906104439190614a21565b61225f565b005b610464600480360381019061045f9190614a21565b6126e2565b005b61046e6129cf565b60405161047b9190615053565b60405180910390f35b61049e60048036038101906104999190614ceb565b612a5d565b005b6104a8612ee7565b6040516104b591906149a1565b60405180910390f35b6104c6612f0d565b6040516104d39190614945565b60405180910390f35b6104f660048036038101906104f19190614a21565b612f1c565b005b610512600480360381019061050d9190615075565b6133ed565b005b61052e60048036038101906105299190614ceb565b61357e565b005b610538613a08565b60405161054591906149a1565b60405180910390f35b610568600480360381019061056391906150b5565b613a2e565b005b600061057582613c12565b806105dd57507fb1262be0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600960149054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b0919061510e565b905080156106ea576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610730576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b7576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bf613c7c565b6107f5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115610835576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108bd576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610966576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182610977929190615352565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a148188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f279c68b511f19d28a79afc0687d9909fc941d6f7551e4b0e333a1171cc2eea5f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548b8b604051610add949392919061545e565b60405180910390a350505050505050565b6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f7700000000000000000081525081565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb919061510e565b90508015610bf5576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16610c3b576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004548514610c8157846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610c789190614c43565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1357336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610d0a91906149a1565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dbf5750600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f145760008585905003610e01576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610e159190615582565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e825750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ec65782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610ebd9291906155f1565b60405180910390fd5b610edf8360405180602001604052806000815250613dd2565b610ef88260405180602001604052806000815250613d4f565b80600a9081610f07919061561a565b5060019350505050610f27565b8484600a9182610f25929190615352565b505b801515600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f44fc4ffe7e585a241451c67b41553546c65c2b07de6e9d33405e53f75357293b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454600a604051610ff493929190615770565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b7fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611130919061510e565b9050801561116a576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166111b0576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611237576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123f613c7c565b611275576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156112b5576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361131b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806113e657508573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61141c576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a91826114d2929190615352565b506115218686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b505050505050565b61153484838361109d565b61153f838383612a5d565b50505050565b60005481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061510e565b9050801561163e576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611684576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61168c613c7c565b6116c2576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611749576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d0576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611810576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118bb5750600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156118f2576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182611903929190615352565b506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506119ee818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b611a3c838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2812f41a966386b432bd1d43d72b6613f5eca9adf4ed9e193f95f5c91a1b662686600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548f8f604051611b609594939291906157ae565b60405180910390a4505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c06919061510e565b90508015611c40576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16611c86576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0d576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d15613c7c565b611d4b576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428360a001511015611d9457426040517fcd21db4f000000000000000000000000000000000000000000000000000000008152600401611d8b9190614c43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161480611e245750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff16145b80611e815750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614155b80611e925750600454836080015114155b80611eef5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff1614155b15611f26576040517f46ad276700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff161461203a578260400151600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517fbcac228f0000000000000000000000000000000000000000000000000000000081526004016120319291906155f1565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16146120f9578260000151600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f20904a940000000000000000000000000000000000000000000000000000000081526004016120f09291906155f1565b60405180910390fd5b61212e61210584613f5d565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684614019565b612164576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546121d29061582b565b9190508190555061221c83604001516040518060400160405280600381526020017f3078300000000000000000000000000000000000000000000000000000000000815250613dd2565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f2919061510e565b9050801561232c576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612372576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123f9576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612480576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612488613c7c565b6124be576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156124fe576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61251860006040518060200160405280600081525061415a565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa5830600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546040518463ffffffff1660e01b815260040161259b93929190615899565b600060405180830381600087803b1580156125b557600080fd5b505af11580156125c9573d6000803e3d6000fd5b505050508484600a91826125de929190615352565b506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045488886040516126d3949392919061545e565b60405180910390a25050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612751573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612775919061510e565b905080156127af576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff166127f5576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612835576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61283d613c7c565b15612874576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461290657336040517f540b96010000000000000000000000000000000000000000000000000000000081526004016128fd91906149a1565b60405180910390fd5b612920600060405180602001604052806000815250613dd2565b61293a600060405180602001604052806000815250613d4f565b6000600960146101000a81548160ff0219169083151502179055508484600a9182612966929190615352565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045487876040516129c0949392919061545e565b60405180910390a15050505050565b600a80546129dc90615175565b80601f0160208091040260200160405190810160405280929190818152602001828054612a0890615175565b8015612a555780601f10612a2a57610100808354040283529160200191612a55565b820191906000526020600020905b815481529060010190602001808311612a3857829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af0919061510e565b90508015612b2a576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16612b70576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bf7576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bff613c7c565b612c35576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612c75576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612cdb576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612d62576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612e1c576000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600a9182612e90929190615352565b50612edf8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613d4f565b505050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612f17613c7c565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faf919061510e565b90508015612fe9576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff1661302f576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146130b6576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130be613c7c565b6130f4576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613134576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131bc576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613265576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600a9182613276929190615352565b506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506133138188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613dd2565b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26cb5b08a00ade9c3c65737592d8344548bf60664af05af8ed04720b893eca27600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548b8b6040516133dc949392919061545e565b60405180910390a350505050505050565b60006133f761424e565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156134455750825b9050600060018367ffffffffffffffff1614801561347a575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015613488575080155b156134bf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561350f5760018560000160086101000a81548160ff0219169083151502179055505b6135198787614276565b83156135755760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161356c9190615932565b60405180910390a15b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613611919061510e565b9050801561364b576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613691576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613718576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613720613c7c565b613756576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613796576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361381d576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036138a4576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036139a0576000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8484600a91826139b1929190615352565b50613a008686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061415a565b505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac1919061510e565b90508015613afb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600960149054906101000a900460ff16613b41576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613baa576040517fae04d15600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613bb583613f5d565b9050613bc081614300565b8260800151836020015173ffffffffffffffffffffffffffffffffffffffff16827fd6566b41f60aeb5bb4f55d9f58999096b6540c620fee372223774561e6d3854160405160405180910390a4505050565b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60003073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6004546040518263ffffffff1660e01b8152600401613cf29190614c43565b602060405180830381865afa158015613d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d339190615962565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154613dbd9061582b565b91905081905550613dce8282614387565b5050565b8173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9081b884d1178ac5e4855291131f541f64a88854f90b8df23412ffd63c39be1d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045485604051613e799392919061598f565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613f1857613f1760006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525061415a565b5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007fdc8ea80c045a9b675c73cb328c225cc3f099d01bd9b7820947ac10cba8661cf160001b826000015183602001518460400151856060015186608001518760a00151600160008a6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001613ffc9897969594939291906159cd565b604051602081830303815290604052805190602001209050919050565b60006002600085815260200190815260200160002060009054906101000a900460ff1615614073576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805485604051602001614089929190615ac3565b60405160208183030381529060405280519060200120905060006140e58460000151856020015186604001516040516020016140c793929190615b30565b6040516020818303038152906040528361447b90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561414f57508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b925050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbe262229f456b8d55f1e1887503540dc0a1efcb4b048b6b739117e66d031214600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454856040516142019392919061598f565b60405180910390a381600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61427e6144a7565b61428882826144e7565b6142fc6040518060400160405280601781526020017f54726164655472757374205469746c6520457363726f770000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250614556565b5050565b6002600082815260200190815260200160002060009054906101000a900460ff1615614358576040517f8f7b286b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016002600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f30426d047f8ae6511337356e511764b12f79993bd73501d0e993b3da7a780a4d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004548560405161442e9392919061598f565b60405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060008061448b86866145bd565b92509250925061449b8282614619565b82935050505092915050565b6144af61477d565b6144e5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6144ef6144a7565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806004819055506001600960146101000a81548160ff0219169083151502179055505050565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82805190602001208280519060200120463060405160200161459d959493929190615b6d565b604051602081830303815290604052805190602001206000819055505050565b600080600060418451036146025760008060006020870151925060408701519150606087015160001a90506145f48882858561479d565b955095509550505050614612565b60006002855160001b9250925092505b9250925092565b6000600381111561462d5761462c615bc0565b5b8260038111156146405761463f615bc0565b5b0315614779576001600381111561465a57614659615bc0565b5b82600381111561466d5761466c615bc0565b5b036146a4576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156146b8576146b7615bc0565b5b8260038111156146cb576146ca615bc0565b5b03614710578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016147079190614c43565b60405180910390fd5b60038081111561472357614722615bc0565b5b82600381111561473657614735615bc0565b5b0361477857806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161476f9190614cd0565b60405180910390fd5b5b5050565b600061478761424e565b60000160089054906101000a900460ff16905090565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c11156147dd576000600385925092509250614887565b6000600188888888604051600081526020016040526040516148029493929190615bfe565b6020604051602081039080840390855afa158015614824573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361487857600060016000801b93509350935050614887565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6148da816148a5565b81146148e557600080fd5b50565b6000813590506148f7816148d1565b92915050565b6000602082840312156149135761491261489b565b5b6000614921848285016148e8565b91505092915050565b60008115159050919050565b61493f8161492a565b82525050565b600060208201905061495a6000830184614936565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061498b82614960565b9050919050565b61499b81614980565b82525050565b60006020820190506149b66000830184614992565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126149e1576149e06149bc565b5b8235905067ffffffffffffffff8111156149fe576149fd6149c1565b5b602083019150836001820283011115614a1a57614a196149c6565b5b9250929050565b60008060208385031215614a3857614a3761489b565b5b600083013567ffffffffffffffff811115614a5657614a556148a0565b5b614a62858286016149cb565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614aa8578082015181840152602081019050614a8d565b60008484015250505050565b6000601f19601f8301169050919050565b6000614ad082614a6e565b614ada8185614a79565b9350614aea818560208601614a8a565b614af381614ab4565b840191505092915050565b60006020820190508181036000830152614b188184614ac5565b905092915050565b614b2981614980565b8114614b3457600080fd5b50565b600081359050614b4681614b20565b92915050565b6000819050919050565b614b5f81614b4c565b8114614b6a57600080fd5b50565b600081359050614b7c81614b56565b92915050565b600080600080600060808688031215614b9e57614b9d61489b565b5b6000614bac88828901614b37565b9550506020614bbd88828901614b37565b9450506040614bce88828901614b6d565b935050606086013567ffffffffffffffff811115614bef57614bee6148a0565b5b614bfb888289016149cb565b92509250509295509295909350565b614c13816148a5565b82525050565b6000602082019050614c2e6000830184614c0a565b92915050565b614c3d81614b4c565b82525050565b6000602082019050614c586000830184614c34565b92915050565b6000819050919050565b614c7181614c5e565b8114614c7c57600080fd5b50565b600081359050614c8e81614c68565b92915050565b600060208284031215614caa57614ca961489b565b5b6000614cb884828501614c7f565b91505092915050565b614cca81614c5e565b82525050565b6000602082019050614ce56000830184614cc1565b92915050565b600080600060408486031215614d0457614d0361489b565b5b6000614d1286828701614b37565b935050602084013567ffffffffffffffff811115614d3357614d326148a0565b5b614d3f868287016149cb565b92509250509250925092565b60008060008060608587031215614d6557614d6461489b565b5b6000614d7387828801614b37565b9450506020614d8487828801614b37565b935050604085013567ffffffffffffffff811115614da557614da46148a0565b5b614db1878288016149cb565b925092505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614dfc82614ab4565b810181811067ffffffffffffffff82111715614e1b57614e1a614dc4565b5b80604052505050565b6000614e2e614891565b9050614e3a8282614df3565b919050565b600060e08284031215614e5557614e54614dbf565b5b614e5f60e0614e24565b90506000614e6f84828501614b37565b6000830152506020614e8384828501614b37565b6020830152506040614e9784828501614b37565b6040830152506060614eab84828501614b37565b6060830152506080614ebf84828501614b6d565b60808301525060a0614ed384828501614b6d565b60a08301525060c0614ee784828501614b6d565b60c08301525092915050565b600060ff82169050919050565b614f0981614ef3565b8114614f1457600080fd5b50565b600081359050614f2681614f00565b92915050565b600060608284031215614f4257614f41614dbf565b5b614f4c6060614e24565b90506000614f5c84828501614c7f565b6000830152506020614f7084828501614c7f565b6020830152506040614f8484828501614f17565b60408301525092915050565b6000806101408385031215614fa857614fa761489b565b5b6000614fb685828601614e3f565b92505060e0614fc785828601614f2c565b9150509250929050565b600060208284031215614fe757614fe661489b565b5b6000614ff584828501614b37565b91505092915050565b600081519050919050565b600082825260208201905092915050565b600061502582614ffe565b61502f8185615009565b935061503f818560208601614a8a565b61504881614ab4565b840191505092915050565b6000602082019050818103600083015261506d818461501a565b905092915050565b6000806040838503121561508c5761508b61489b565b5b600061509a85828601614b37565b92505060206150ab85828601614b6d565b9150509250929050565b600060e082840312156150cb576150ca61489b565b5b60006150d984828501614e3f565b91505092915050565b6150eb8161492a565b81146150f657600080fd5b50565b600081519050615108816150e2565b92915050565b6000602082840312156151245761512361489b565b5b6000615132848285016150f9565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061518d57607f821691505b6020821081036151a05761519f615146565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584614b4c565b61522a565b614b4c565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361513b565b67ffffffffffffffff81111561537557615374614dc4565b5b61537f8254615175565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b600061543d8385615009565b935061544a838584615422565b61545383614ab4565b840190509392505050565b60006060820190506154736000830187614992565b6154806020830186614c34565b8181036040830152615493818486615431565b905095945050505050565b60006154a982614960565b9050919050565b6154b98161549e565b81146154c457600080fd5b50565b6000813590506154d6816154b0565b92915050565b600080fd5b600067ffffffffffffffff8211156154fc576154fb614dc4565b5b61550582614ab4565b9050602081019050919050565b6000615525615520846154e1565b614e24565b905082815260208101848484011115615541576155406154dc565b5b61554c848285615422565b509392505050565b600082601f830112615569576155686149bc565b5b8135615579848260208601615512565b91505092915050565b60008060006060848603121561559b5761559a61489b565b5b60006155a9868287016154c7565b93505060206155ba868287016154c7565b925050604084013567ffffffffffffffff8111156155db576155da6148a0565b5b6155e786828701615554565b9150509250925092565b60006040820190506156066000830185614992565b6156136020830184614992565b9392505050565b61562382614ffe565b67ffffffffffffffff81111561563c5761563b614dc4565b5b6156468254615175565b6156518282856152c5565b600060209050601f8311600181146156845760008415615672578287015190505b61567c8582615336565b8655506156e4565b601f198416615692866151a6565b60005b828110156156ba57848901518255600182019150602085019450602081019050615695565b868310156156d757848901516156d3601f891682615318565b8355505b6001600288020188555050505b505050505050565b600081546156f981615175565b6157038186615009565b9450600182166000811461571e576001811461573457615767565b60ff198316865281151560200286019350615767565b61573d856151a6565b60005b8381101561575f57815481890152600182019150602081019050615740565b808801955050505b50505092915050565b60006060820190506157856000830186614992565b6157926020830185614c34565b81810360408301526157a481846156ec565b9050949350505050565b60006080820190506157c36000830188614992565b6157d06020830187614992565b6157dd6040830186614c34565b81810360608301526157f0818486615431565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061583682614b4c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615868576158676157fc565b5b600182019050919050565b50565b6000615883600083615009565b915061588e82615873565b600082019050919050565b60006080820190506158ae6000830186614992565b6158bb6020830185614992565b6158c86040830184614c34565b81810360608301526158d981615876565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061591c615917615912846158e3565b61522a565b6158ed565b9050919050565b61592c81615901565b82525050565b60006020820190506159476000830184615923565b92915050565b60008151905061595c81614b20565b92915050565b6000602082840312156159785761597761489b565b5b60006159868482850161594d565b91505092915050565b60006060820190506159a46000830186614992565b6159b16020830185614c34565b81810360408301526159c3818461501a565b9050949350505050565b6000610100820190506159e3600083018b614cc1565b6159f0602083018a614992565b6159fd6040830189614992565b615a0a6060830188614992565b615a176080830187614992565b615a2460a0830186614c34565b615a3160c0830185614c34565b615a3e60e0830184614c34565b9998505050505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000615a8c600283615a4b565b9150615a9782615a56565b600282019050919050565b6000819050919050565b615abd615ab882614c5e565b615aa2565b82525050565b6000615ace82615a7f565b9150615ada8285615aac565b602082019150615aea8284615aac565b6020820191508190509392505050565b60008160f81b9050919050565b6000615b1282615afa565b9050919050565b615b2a615b2582614ef3565b615b07565b82525050565b6000615b3c8286615aac565b602082019150615b4c8285615aac565b602082019150615b5c8284615b19565b600182019150819050949350505050565b600060a082019050615b826000830188614cc1565b615b8f6020830187614cc1565b615b9c6040830186614cc1565b615ba96060830185614c34565b615bb66080830184614992565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b615bf881614ef3565b82525050565b6000608082019050615c136000830187614cc1565b615c206020830186615bef565b615c2d6040830185614cc1565b615c3a6060830184614cc1565b9594505050505056fea2646970667358221220b5f565ff2767b83545845c53e30883cd071dd10550b0f2d182659b79edc481c564736f6c63430008160033",
1130
+ "linkReferences": {},
1131
+ "deployedLinkReferences": {}
1132
+ }