@latticexyz/world-modules 2.0.0-transaction-context-324984c5 → 2.0.1-main-4a6b4598

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 (393) hide show
  1. package/dist/mud.config.d.ts +700 -222
  2. package/dist/mud.config.js +1 -1
  3. package/dist/mud.config.js.map +1 -1
  4. package/out/AccessControl.sol/AccessControl.json +1 -1
  5. package/out/AccessControlLib.sol/AccessControlLib.json +1 -1
  6. package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json +0 -13
  7. package/out/AccessManagementSystem.sol/AccessManagementSystem.abi.json.d.ts +0 -13
  8. package/out/AccessManagementSystem.sol/AccessManagementSystem.json +1 -1
  9. package/out/AddressArray.sol/AddressArray.json +1 -1
  10. package/out/Allowances.sol/Allowances.json +1 -1
  11. package/out/ArrayLib.sol/ArrayLib.json +1 -1
  12. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json +0 -24
  13. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.abi.json.d.ts +0 -24
  14. package/out/BalanceTransferSystem.sol/BalanceTransferSystem.json +1 -1
  15. package/out/Balances.sol/Balances.json +1 -1
  16. package/out/Base.sol/CommonBase.json +1 -1
  17. package/out/Base.sol/ScriptBase.json +1 -1
  18. package/out/Base.sol/TestBase.json +1 -1
  19. package/out/BatchCallSystem.sol/BatchCallSystem.abi.json +0 -13
  20. package/out/BatchCallSystem.sol/BatchCallSystem.abi.json.d.ts +0 -13
  21. package/out/BatchCallSystem.sol/BatchCallSystem.json +1 -1
  22. package/out/Bool.sol/Bool.json +1 -1
  23. package/out/Bytes.sol/Bytes.json +1 -1
  24. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.abi.json +0 -13
  25. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.abi.json.d.ts +0 -13
  26. package/out/CallboundDelegationControl.sol/CallboundDelegationControl.json +1 -1
  27. package/out/CallboundDelegations.sol/CallboundDelegations.json +1 -1
  28. package/out/DecodeSlice.sol/DecodeSlice.json +1 -1
  29. package/out/Delegation.sol/Delegation.json +1 -1
  30. package/out/DelegationControl.sol/DelegationControl.abi.json +0 -13
  31. package/out/DelegationControl.sol/DelegationControl.abi.json.d.ts +0 -13
  32. package/out/DelegationControl.sol/DelegationControl.json +1 -1
  33. package/out/DelegationControlMock.sol/DelegationControlMock.abi.json +0 -13
  34. package/out/DelegationControlMock.sol/DelegationControlMock.abi.json.d.ts +0 -13
  35. package/out/DelegationControlMock.sol/DelegationControlMock.json +1 -1
  36. package/out/ERC165Checker.sol/ERC165Checker.json +1 -1
  37. package/out/ERC20.t.sol/ERC20Test.json +1 -1
  38. package/out/ERC20Metadata.sol/ERC20Metadata.json +1 -1
  39. package/out/ERC20Module.sol/ERC20Module.abi.json +10 -23
  40. package/out/ERC20Module.sol/ERC20Module.abi.json.d.ts +10 -23
  41. package/out/ERC20Module.sol/ERC20Module.json +1 -1
  42. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.abi.json +10 -10
  43. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.abi.json.d.ts +10 -10
  44. package/out/ERC20Module.sol/ERC20ModuleRegistrationLibrary.json +1 -1
  45. package/out/ERC20Registry.sol/ERC20Registry.json +1 -1
  46. package/out/ERC20System.sol/ERC20System.abi.json +0 -13
  47. package/out/ERC20System.sol/ERC20System.abi.json.d.ts +0 -13
  48. package/out/ERC20System.sol/ERC20System.json +1 -1
  49. package/out/ERC721.t.sol/ERC721Recipient.json +1 -1
  50. package/out/ERC721.t.sol/ERC721Test.json +1 -1
  51. package/out/ERC721.t.sol/ERC721TokenReceiver.json +1 -1
  52. package/out/ERC721.t.sol/NonERC721Recipient.json +1 -1
  53. package/out/ERC721.t.sol/RevertingERC721Recipient.json +1 -1
  54. package/out/ERC721.t.sol/WrongReturnDataERC721Recipient.json +1 -1
  55. package/out/ERC721Metadata.sol/ERC721Metadata.json +1 -1
  56. package/out/ERC721Module.sol/ERC721Module.abi.json +10 -23
  57. package/out/ERC721Module.sol/ERC721Module.abi.json.d.ts +10 -23
  58. package/out/ERC721Module.sol/ERC721Module.json +1 -1
  59. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.abi.json +10 -10
  60. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.abi.json.d.ts +10 -10
  61. package/out/ERC721Module.sol/ERC721ModuleRegistrationLibrary.json +1 -1
  62. package/out/ERC721Registry.sol/ERC721Registry.json +1 -1
  63. package/out/ERC721System.sol/ERC721System.abi.json +0 -13
  64. package/out/ERC721System.sol/ERC721System.abi.json.d.ts +0 -13
  65. package/out/ERC721System.sol/ERC721System.json +1 -1
  66. package/out/EchoSubscriber.sol/EchoSubscriber.abi.json +4 -4
  67. package/out/EchoSubscriber.sol/EchoSubscriber.abi.json.d.ts +4 -4
  68. package/out/EchoSubscriber.sol/EchoSubscriber.json +1 -1
  69. package/out/EncodeArray.sol/EncodeArray.json +1 -1
  70. package/out/EncodedLengths.sol/EncodedLengthsInstance.json +1 -0
  71. package/out/EncodedLengths.sol/EncodedLengthsLib.json +1 -0
  72. package/out/FieldLayout.sol/FieldLayoutInstance.json +1 -1
  73. package/out/FieldLayout.sol/FieldLayoutLib.abi.json +1 -88
  74. package/out/FieldLayout.sol/FieldLayoutLib.json +1 -1
  75. package/out/FieldLayoutEncodeHelper.sol/FieldLayoutEncodeHelper.json +1 -1
  76. package/out/FunctionSelectors.sol/FunctionSelectors.json +1 -1
  77. package/out/FunctionSignatures.sol/FunctionSignatures.json +1 -1
  78. package/out/GasReporter.sol/GasReporter.json +1 -1
  79. package/out/Hook.sol/HookInstance.json +1 -1
  80. package/out/Hook.sol/HookLib.json +1 -1
  81. package/out/Hooks.sol/Hooks.json +1 -1
  82. package/out/IAccessManagementSystem.sol/IAccessManagementSystem.json +1 -1
  83. package/out/IBalanceTransferSystem.sol/IBalanceTransferSystem.json +1 -1
  84. package/out/IBaseWorld.sol/IBaseWorld.abi.json +171 -16
  85. package/out/IBaseWorld.sol/IBaseWorld.abi.json.d.ts +171 -16
  86. package/out/IBaseWorld.sol/IBaseWorld.json +1 -1
  87. package/out/IBatchCallSystem.sol/IBatchCallSystem.json +1 -1
  88. package/out/IDelegationControl.sol/IDelegationControl.abi.json +0 -13
  89. package/out/IDelegationControl.sol/IDelegationControl.abi.json.d.ts +0 -13
  90. package/out/IDelegationControl.sol/IDelegationControl.json +1 -1
  91. package/out/IERC20.sol/IERC20.json +1 -1
  92. package/out/IERC20Errors.sol/IERC20Errors.json +1 -1
  93. package/out/IERC20Events.sol/IERC20Events.json +1 -1
  94. package/out/IERC20Mintable.sol/IERC20Mintable.json +1 -1
  95. package/out/IERC20System.sol/IERC20System.json +1 -1
  96. package/out/IERC721.sol/IERC721.json +1 -1
  97. package/out/IERC721Errors.sol/IERC721Errors.json +1 -1
  98. package/out/IERC721Events.sol/IERC721Events.json +1 -1
  99. package/out/IERC721Metadata.sol/IERC721Metadata.json +1 -1
  100. package/out/IERC721Mintable.sol/IERC721Mintable.json +1 -1
  101. package/out/IERC721Receiver.sol/IERC721Receiver.json +1 -1
  102. package/out/{PackedCounter.sol/PackedCounterInstance.abi.json → IEncodedLengthsErrors.sol/IEncodedLengthsErrors.abi.json} +1 -1
  103. package/out/{PackedCounter.sol/PackedCounterInstance.abi.json.d.ts → IEncodedLengthsErrors.sol/IEncodedLengthsErrors.abi.json.d.ts} +1 -1
  104. package/out/IEncodedLengthsErrors.sol/IEncodedLengthsErrors.json +1 -0
  105. package/out/IFieldLayoutErrors.sol/IFieldLayoutErrors.abi.json +88 -0
  106. package/out/{FieldLayout.sol/FieldLayoutLib.abi.json.d.ts → IFieldLayoutErrors.sol/IFieldLayoutErrors.abi.json.d.ts} +7 -7
  107. package/out/IFieldLayoutErrors.sol/IFieldLayoutErrors.json +1 -0
  108. package/out/IModule.sol/IModule.json +1 -1
  109. package/out/IModuleErrors.sol/IModuleErrors.abi.json +28 -0
  110. package/out/IModuleErrors.sol/IModuleErrors.abi.json.d.ts +28 -0
  111. package/out/IModuleErrors.sol/IModuleErrors.json +1 -0
  112. package/out/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +1 -1
  113. package/out/IMulticall3.sol/IMulticall3.json +1 -1
  114. package/out/IPuppetFactorySystem.sol/IPuppetFactorySystem.json +1 -1
  115. package/out/IRegistrationSystem.sol/IRegistrationSystem.json +1 -1
  116. package/out/ISchemaErrors.sol/ISchemaErrors.abi.json +18 -0
  117. package/out/{Schema.sol/SchemaLib.abi.json.d.ts → ISchemaErrors.sol/ISchemaErrors.abi.json.d.ts} +2 -2
  118. package/out/ISchemaErrors.sol/ISchemaErrors.json +1 -0
  119. package/out/ISliceErrors.sol/ISliceErrors.abi.json +23 -0
  120. package/out/ISliceErrors.sol/ISliceErrors.json +1 -0
  121. package/out/IStore.sol/IStore.abi.json +145 -5
  122. package/out/IStore.sol/IStore.abi.json.d.ts +145 -5
  123. package/out/IStore.sol/IStore.json +1 -1
  124. package/out/IStoreErrors.sol/IStoreErrors.json +1 -1
  125. package/out/IStoreEvents.sol/IStoreEvents.abi.json +21 -2
  126. package/out/IStoreEvents.sol/IStoreEvents.abi.json.d.ts +21 -2
  127. package/out/IStoreEvents.sol/IStoreEvents.json +1 -1
  128. package/out/IStoreHook.sol/IStoreHook.abi.json +4 -4
  129. package/out/IStoreHook.sol/IStoreHook.abi.json.d.ts +4 -4
  130. package/out/IStoreHook.sol/IStoreHook.json +1 -1
  131. package/out/{IStoreData.sol/IStoreData.abi.json → IStoreKernel.sol/IStoreKernel.abi.json} +347 -5
  132. package/out/{IStoreData.sol/IStoreData.abi.json.d.ts → IStoreKernel.sol/IStoreKernel.abi.json.d.ts} +347 -5
  133. package/out/IStoreKernel.sol/IStoreKernel.json +1 -0
  134. package/out/IStoreRead.sol/IStoreRead.abi.json +2 -2
  135. package/out/IStoreRead.sol/IStoreRead.abi.json.d.ts +2 -2
  136. package/out/IStoreRead.sol/IStoreRead.json +1 -1
  137. package/out/IStoreRegistration.sol/IStoreRegistration.json +1 -1
  138. package/out/IStoreWrite.sol/IStoreWrite.abi.json +22 -3
  139. package/out/IStoreWrite.sol/IStoreWrite.abi.json.d.ts +22 -3
  140. package/out/IStoreWrite.sol/IStoreWrite.json +1 -1
  141. package/out/ISystemHook.sol/ISystemHook.json +1 -1
  142. package/out/IWorldContextConsumer.sol/IWorldContextConsumer.abi.json +0 -13
  143. package/out/IWorldContextConsumer.sol/IWorldContextConsumer.abi.json.d.ts +0 -13
  144. package/out/IWorldContextConsumer.sol/IWorldContextConsumer.json +1 -1
  145. package/out/IWorldErrors.sol/IWorldErrors.abi.json +0 -11
  146. package/out/IWorldErrors.sol/IWorldErrors.abi.json.d.ts +0 -11
  147. package/out/IWorldErrors.sol/IWorldErrors.json +1 -1
  148. package/out/IWorldEvents.sol/IWorldEvents.abi.json +15 -0
  149. package/out/IWorldEvents.sol/IWorldEvents.abi.json.d.ts +15 -0
  150. package/out/IWorldEvents.sol/IWorldEvents.json +1 -0
  151. package/out/IWorldKernel.sol/IWorldCall.json +1 -1
  152. package/out/IWorldKernel.sol/IWorldKernel.abi.json +26 -11
  153. package/out/IWorldKernel.sol/IWorldKernel.abi.json.d.ts +26 -11
  154. package/out/IWorldKernel.sol/IWorldKernel.json +1 -1
  155. package/out/IWorldKernel.sol/IWorldModuleInstallation.json +1 -1
  156. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.abi.json +3 -3
  157. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.abi.json.d.ts +3 -3
  158. package/out/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +1 -1
  159. package/out/InitModule.sol/InitModule.abi.json +10 -23
  160. package/out/InitModule.sol/InitModule.abi.json.d.ts +10 -23
  161. package/out/InitModule.sol/InitModule.json +1 -1
  162. package/out/InitModuleAddress.sol/InitModuleAddress.json +1 -1
  163. package/out/InstalledModules.sol/InstalledModules.json +1 -1
  164. package/out/KeysInTable.sol/KeysInTable.json +1 -1
  165. package/out/KeysInTableHook.sol/KeysInTableHook.abi.json +13 -7
  166. package/out/KeysInTableHook.sol/KeysInTableHook.abi.json.d.ts +13 -7
  167. package/out/KeysInTableHook.sol/KeysInTableHook.json +1 -1
  168. package/out/KeysInTableModule.sol/KeysInTableModule.abi.json +0 -29
  169. package/out/KeysInTableModule.sol/KeysInTableModule.abi.json.d.ts +0 -29
  170. package/out/KeysInTableModule.sol/KeysInTableModule.json +1 -1
  171. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.abi.json +6 -6
  172. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.abi.json.d.ts +6 -6
  173. package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.json +1 -1
  174. package/out/KeysWithValue.sol/KeysWithValue.json +1 -1
  175. package/out/KeysWithValueHook.sol/KeysWithValueHook.abi.json +12 -6
  176. package/out/KeysWithValueHook.sol/KeysWithValueHook.abi.json.d.ts +12 -6
  177. package/out/KeysWithValueHook.sol/KeysWithValueHook.json +1 -1
  178. package/out/KeysWithValueModule.sol/KeysWithValueModule.abi.json +0 -29
  179. package/out/KeysWithValueModule.sol/KeysWithValueModule.abi.json.d.ts +0 -29
  180. package/out/KeysWithValueModule.sol/KeysWithValueModule.json +1 -1
  181. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.abi.json +6 -6
  182. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.abi.json.d.ts +6 -6
  183. package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.json +1 -1
  184. package/out/LimitedCallContext.sol/LimitedCallContext.json +1 -1
  185. package/out/Memory.sol/Memory.json +1 -1
  186. package/out/Module.sol/Module.abi.json +0 -13
  187. package/out/Module.sol/Module.abi.json.d.ts +0 -13
  188. package/out/Module.sol/Module.json +1 -1
  189. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json +0 -13
  190. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.abi.json.d.ts +0 -13
  191. package/out/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +1 -1
  192. package/out/NamespaceDelegationControl.sol/NamespaceDelegationControl.json +1 -1
  193. package/out/NamespaceOwner.sol/NamespaceOwner.json +1 -1
  194. package/out/OperatorApproval.sol/OperatorApproval.json +1 -1
  195. package/out/Owners.sol/Owners.json +1 -1
  196. package/out/Puppet.sol/Puppet.json +1 -1
  197. package/out/PuppetDelegationControl.sol/PuppetDelegationControl.abi.json +0 -13
  198. package/out/PuppetDelegationControl.sol/PuppetDelegationControl.abi.json.d.ts +0 -13
  199. package/out/PuppetDelegationControl.sol/PuppetDelegationControl.json +1 -1
  200. package/out/PuppetFactorySystem.sol/PuppetFactorySystem.abi.json +0 -13
  201. package/out/PuppetFactorySystem.sol/PuppetFactorySystem.abi.json.d.ts +0 -13
  202. package/out/PuppetFactorySystem.sol/PuppetFactorySystem.json +1 -1
  203. package/out/PuppetMaster.sol/PuppetMaster.json +1 -1
  204. package/out/PuppetModule.sol/PuppetModule.abi.json +10 -23
  205. package/out/PuppetModule.sol/PuppetModule.abi.json.d.ts +10 -23
  206. package/out/PuppetModule.sol/PuppetModule.json +1 -1
  207. package/out/PuppetModule.t.sol/PuppetModuleTest.json +1 -1
  208. package/out/PuppetModule.t.sol/PuppetTestSystem.abi.json +0 -13
  209. package/out/PuppetModule.t.sol/PuppetTestSystem.abi.json.d.ts +0 -13
  210. package/out/PuppetModule.t.sol/PuppetTestSystem.json +1 -1
  211. package/out/PuppetRegistry.sol/PuppetRegistry.json +1 -1
  212. package/out/RegistrationSystem.sol/RegistrationSystem.abi.json +31 -49
  213. package/out/RegistrationSystem.sol/RegistrationSystem.abi.json.d.ts +31 -49
  214. package/out/RegistrationSystem.sol/RegistrationSystem.json +1 -1
  215. package/out/ResourceAccess.sol/ResourceAccess.json +1 -1
  216. package/out/ResourceId.sol/ResourceIdInstance.json +1 -1
  217. package/out/ResourceId.sol/ResourceIdLib.json +1 -1
  218. package/out/ResourceIds.sol/ResourceIds.json +1 -1
  219. package/out/RevertSubscriber.sol/RevertSubscriber.abi.json +4 -4
  220. package/out/RevertSubscriber.sol/RevertSubscriber.abi.json.d.ts +4 -4
  221. package/out/RevertSubscriber.sol/RevertSubscriber.json +1 -1
  222. package/out/Schema.sol/SchemaInstance.json +1 -1
  223. package/out/Schema.sol/SchemaLib.abi.json +1 -18
  224. package/out/Schema.sol/SchemaLib.json +1 -1
  225. package/out/SchemaEncodeHelper.sol/SchemaEncodeHelper.json +1 -1
  226. package/out/Slice.sol/SliceInstance.json +1 -1
  227. package/out/Slice.sol/SliceLib.abi.json +1 -23
  228. package/out/Slice.sol/SliceLib.json +1 -1
  229. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.abi.json +10 -23
  230. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.abi.json.d.ts +10 -23
  231. package/out/StandardDelegationsModule.sol/StandardDelegationsModule.json +1 -1
  232. package/out/StandardDelegationsModule.t.sol/StandardDelegationsModuleTest.json +1 -1
  233. package/out/StdAssertions.sol/StdAssertions.json +1 -1
  234. package/out/StdChains.sol/StdChains.json +1 -1
  235. package/out/StdCheats.sol/StdCheats.json +1 -1
  236. package/out/StdCheats.sol/StdCheatsSafe.json +1 -1
  237. package/out/StdError.sol/stdError.json +1 -1
  238. package/out/StdInvariant.sol/StdInvariant.json +1 -1
  239. package/out/StdJson.sol/stdJson.json +1 -1
  240. package/out/StdMath.sol/stdMath.json +1 -1
  241. package/out/StdStorage.sol/stdStorage.json +1 -1
  242. package/out/StdStorage.sol/stdStorageSafe.json +1 -1
  243. package/out/StdStyle.sol/StdStyle.json +1 -1
  244. package/out/StdUtils.sol/StdUtils.json +1 -1
  245. package/out/Storage.sol/Storage.json +1 -1
  246. package/out/StoreCore.sol/StoreCore.abi.json +1 -132
  247. package/out/StoreCore.sol/StoreCore.json +1 -1
  248. package/out/StoreCore.sol/StoreCoreInternal.json +1 -1
  249. package/out/StoreHook.sol/StoreHook.abi.json +4 -4
  250. package/out/StoreHook.sol/StoreHook.abi.json.d.ts +4 -4
  251. package/out/StoreHook.sol/StoreHook.json +1 -1
  252. package/out/StoreHooks.sol/StoreHooks.json +1 -1
  253. package/out/{StoreData.sol/StoreData.abi.json → StoreKernel.sol/StoreKernel.abi.json} +299 -5
  254. package/out/{StoreData.sol/StoreData.abi.json.d.ts → StoreKernel.sol/StoreKernel.abi.json.d.ts} +299 -5
  255. package/out/StoreKernel.sol/StoreKernel.json +1 -0
  256. package/out/StoreRead.sol/StoreRead.abi.json +2 -2
  257. package/out/StoreRead.sol/StoreRead.abi.json.d.ts +2 -2
  258. package/out/StoreRead.sol/StoreRead.json +1 -1
  259. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json +28 -46
  260. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.abi.json.d.ts +28 -46
  261. package/out/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +1 -1
  262. package/out/StoreSwitch.sol/StoreSwitch.json +1 -1
  263. package/out/System.sol/System.abi.json +0 -13
  264. package/out/System.sol/System.abi.json.d.ts +0 -13
  265. package/out/System.sol/System.json +1 -1
  266. package/out/SystemCall.sol/SystemCall.json +1 -1
  267. package/out/SystemHook.sol/SystemHook.json +1 -1
  268. package/out/SystemHooks.sol/SystemHooks.json +1 -1
  269. package/out/SystemRegistry.sol/SystemRegistry.json +1 -1
  270. package/out/SystemSwitch.sol/SystemSwitch.json +1 -1
  271. package/out/SystemSwitch.t.sol/EchoSystem.abi.json +0 -13
  272. package/out/SystemSwitch.t.sol/EchoSystem.abi.json.d.ts +0 -13
  273. package/out/SystemSwitch.t.sol/EchoSystem.json +1 -1
  274. package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json +0 -16
  275. package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json.d.ts +0 -16
  276. package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
  277. package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.abi.json +0 -13
  278. package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.abi.json.d.ts +0 -13
  279. package/out/SystemboundDelegationControl.sol/SystemboundDelegationControl.json +1 -1
  280. package/out/SystemboundDelegations.sol/SystemboundDelegations.json +1 -1
  281. package/out/Systems.sol/Systems.json +1 -1
  282. package/out/Tables.sol/Tables.json +1 -1
  283. package/out/Test.sol/Test.json +1 -1
  284. package/out/TightCoder.sol/TightCoder.json +1 -1
  285. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.abi.json +0 -13
  286. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.abi.json.d.ts +0 -13
  287. package/out/TimeboundDelegationControl.sol/TimeboundDelegationControl.json +1 -1
  288. package/out/TimeboundDelegations.sol/TimeboundDelegations.json +1 -1
  289. package/out/TokenApproval.sol/TokenApproval.json +1 -1
  290. package/out/TokenURI.sol/TokenURI.json +1 -1
  291. package/out/TotalSupply.sol/TotalSupply.json +1 -1
  292. package/out/TwoFields.sol/TwoFields.json +1 -1
  293. package/out/UniqueEntity.sol/UniqueEntity.json +1 -1
  294. package/out/UniqueEntityModule.sol/UniqueEntityModule.abi.json +10 -23
  295. package/out/UniqueEntityModule.sol/UniqueEntityModule.abi.json.d.ts +10 -23
  296. package/out/UniqueEntityModule.sol/UniqueEntityModule.json +1 -1
  297. package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
  298. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json +0 -13
  299. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json.d.ts +0 -13
  300. package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
  301. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.abi.json +0 -13
  302. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.abi.json.d.ts +0 -13
  303. package/out/UniqueEntitySystem.sol/UniqueEntitySystem.json +1 -1
  304. package/out/UsedKeysIndex.sol/UsedKeysIndex.json +1 -1
  305. package/out/UserDelegationControl.sol/UserDelegationControl.json +1 -1
  306. package/out/Vm.sol/Vm.json +1 -1
  307. package/out/Vm.sol/VmSafe.json +1 -1
  308. package/out/World.sol/World.abi.json +232 -127
  309. package/out/World.sol/World.abi.json.d.ts +232 -127
  310. package/out/World.sol/World.json +1 -1
  311. package/out/World.t.sol/EchoSystemHook.json +1 -1
  312. package/out/World.t.sol/IWorldTestSystem.json +1 -1
  313. package/out/World.t.sol/PayableFallbackSystem.abi.json +0 -13
  314. package/out/World.t.sol/PayableFallbackSystem.abi.json.d.ts +0 -13
  315. package/out/World.t.sol/PayableFallbackSystem.json +1 -1
  316. package/out/World.t.sol/RevertSystemHook.json +1 -1
  317. package/out/World.t.sol/WorldTest.abi.json +7 -7
  318. package/out/World.t.sol/WorldTest.abi.json.d.ts +7 -7
  319. package/out/World.t.sol/WorldTest.json +1 -1
  320. package/out/World.t.sol/WorldTestSystem.abi.json +1 -14
  321. package/out/World.t.sol/WorldTestSystem.abi.json.d.ts +1 -14
  322. package/out/World.t.sol/WorldTestSystem.json +1 -1
  323. package/out/WorldContext.sol/WorldContextConsumer.abi.json +0 -13
  324. package/out/WorldContext.sol/WorldContextConsumer.abi.json.d.ts +0 -13
  325. package/out/WorldContext.sol/WorldContextConsumer.json +1 -1
  326. package/out/WorldContext.sol/WorldContextConsumerLib.json +1 -1
  327. package/out/WorldContext.sol/WorldContextProviderLib.json +1 -1
  328. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json +12 -30
  329. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.abi.json.d.ts +12 -30
  330. package/out/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1 -1
  331. package/out/WorldResourceId.sol/WorldResourceIdInstance.json +1 -1
  332. package/out/WorldResourceId.sol/WorldResourceIdLib.json +1 -1
  333. package/out/console.sol/console.json +1 -1
  334. package/out/console2.sol/console2.json +1 -1
  335. package/out/constants.sol/LayoutOffsets.json +1 -1
  336. package/out/interfaces/IBaseWorld.sol/IBaseWorld.abi.json +174 -19
  337. package/out/interfaces/IBaseWorld.sol/IBaseWorld.abi.json.d.ts +174 -19
  338. package/out/interfaces/IBaseWorld.sol/IBaseWorld.json +1 -1
  339. package/out/query.t.sol/QueryTest.abi.json +6 -6
  340. package/out/query.t.sol/QueryTest.abi.json.d.ts +6 -6
  341. package/out/query.t.sol/QueryTest.json +1 -1
  342. package/out/safeconsole.sol/safeconsole.json +1 -1
  343. package/out/src/IERC165.sol/IERC165.json +1 -1
  344. package/out/tables/Balances.sol/Balances.json +1 -1
  345. package/out/test.sol/DSTest.json +1 -1
  346. package/out/world/src/IERC165.sol/IERC165.json +1 -1
  347. package/package.json +8 -9
  348. package/src/index.sol +5 -5
  349. package/src/interfaces/IBaseWorld.sol +2 -3
  350. package/src/interfaces/IERC20System.sol +1 -0
  351. package/src/interfaces/IPuppetFactorySystem.sol +1 -0
  352. package/src/modules/erc20-puppet/ERC20Module.sol +1 -3
  353. package/src/modules/erc20-puppet/tables/Allowances.sol +13 -43
  354. package/src/modules/erc20-puppet/tables/ERC20Metadata.sol +24 -54
  355. package/src/modules/erc20-puppet/tables/ERC20Registry.sol +13 -42
  356. package/src/modules/erc20-puppet/tables/TotalSupply.sol +13 -41
  357. package/src/modules/erc721-puppet/ERC721Module.sol +1 -3
  358. package/src/modules/erc721-puppet/IERC721Metadata.sol +1 -0
  359. package/src/modules/erc721-puppet/IERC721Receiver.sol +1 -0
  360. package/src/modules/erc721-puppet/tables/ERC721Metadata.sol +23 -53
  361. package/src/modules/erc721-puppet/tables/ERC721Registry.sol +13 -42
  362. package/src/modules/erc721-puppet/tables/OperatorApproval.sol +13 -43
  363. package/src/modules/erc721-puppet/tables/Owners.sol +13 -42
  364. package/src/modules/erc721-puppet/tables/TokenApproval.sol +13 -42
  365. package/src/modules/erc721-puppet/tables/TokenURI.sol +15 -44
  366. package/src/modules/keysintable/KeysInTableHook.sol +3 -3
  367. package/src/modules/keysintable/KeysInTableModule.sol +13 -13
  368. package/src/modules/keysintable/query.sol +7 -7
  369. package/src/modules/keysintable/tables/KeysInTable.sol +47 -63
  370. package/src/modules/keysintable/tables/UsedKeysIndex.sol +25 -57
  371. package/src/modules/keyswithvalue/KeysWithValueHook.sol +5 -5
  372. package/src/modules/keyswithvalue/KeysWithValueModule.sol +3 -3
  373. package/src/modules/keyswithvalue/getKeysWithValue.sol +3 -3
  374. package/src/modules/keyswithvalue/tables/KeysWithValue.sol +16 -45
  375. package/src/modules/puppet/tables/PuppetRegistry.sol +13 -42
  376. package/src/modules/std-delegations/tables/CallboundDelegations.sol +15 -48
  377. package/src/modules/std-delegations/tables/SystemboundDelegations.sol +15 -47
  378. package/src/modules/std-delegations/tables/TimeboundDelegations.sol +15 -46
  379. package/src/modules/tokens/tables/Balances.sol +13 -42
  380. package/src/modules/uniqueentity/tables/UniqueEntity.sol +14 -42
  381. package/src/utils/AccessControlLib.sol +1 -0
  382. package/src/utils/SystemSwitch.sol +1 -0
  383. package/ts/scripts/tablegen.ts +2 -2
  384. package/ts/scripts/worldgen.ts +6 -5
  385. package/out/IStoreData.sol/IStoreData.json +0 -1
  386. package/out/PackedCounter.sol/PackedCounterInstance.json +0 -1
  387. package/out/PackedCounter.sol/PackedCounterLib.json +0 -1
  388. package/out/StoreCore.sol/StoreCore.abi.json.d.ts +0 -132
  389. package/out/StoreData.sol/StoreData.json +0 -1
  390. package/out/TransactionContext.sol/TransactionContext.json +0 -1
  391. /package/out/{PackedCounter.sol/PackedCounterLib.abi.json → EncodedLengths.sol/EncodedLengthsInstance.abi.json} +0 -0
  392. /package/out/{TransactionContext.sol/TransactionContext.abi.json → EncodedLengths.sol/EncodedLengthsLib.abi.json} +0 -0
  393. /package/out/{Slice.sol/SliceLib.abi.json.d.ts → ISliceErrors.sol/ISliceErrors.abi.json.d.ts} +0 -0
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testCallFromCallboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromSystemDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromTimeboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556200005061737960f01b686e616d65737061636560b81b697465737453797374656d60b01b62000089565b602055602180546001600160a01b03199081166001179091556022805490911660021790553480156200008257600080fd5b50620000f6565b60006200009960706010620000ce565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b80820180821115620000f057634e487b7160e01b600052601160045260246000fd5b92915050565b6202149f80620001076000396000f3fe60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a69604051806060016040528060288152602001620214416028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f604051806060016040528060218152602001620213f86021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a815260200162021469602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd9604051806060016040528060288152602001620214196028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6179d5806200376083390190565b611889806200b13583390190565b61061f806200c9be83390190565b6155e4806200cfdd83390190565b611dc580620125c183390190565b61193c806201438683390190565b610e6c8062015cc283390190565b6159638062016b2e83390190565b614f67806201c49183390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b611a81806200321783390190565b6119bb8062004c9883390190565b611382806200665383390190565b60805160a05160c05160e0516130f2620001256000396000610626015260006104a4015260006103230152600050506130f26000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780637c5b0335146100ff5780639081c75814610112578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004612b79565b610122565b60405190151581526020015b60405180910390f35b6100b2610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004612bd1565b610216565b005b604051601f1936013581526020016100a1565b6100ea61010d366004612bd1565b610248565b6100b26106fc565b6100b2610706565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b8061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610211610710565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610252610706565b905061025c610742565b6102646107ad565b61026c610809565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261030190612c82565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161039f9250612cca565b600060405180830381855af49150503d80600081146103da576040519150601f19603f3d011682016040523d82523d6000602084013e6103df565b606091505b5091509150816103f2576103f28161086d565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261048290612c82565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105209250612cca565b600060405180830381855af49150503d806000811461055b576040519150601f19603f3d011682016040523d82523d6000602084013e610560565b606091505b50909250905081610574576105748161086d565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261060490612c82565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106a29250612cca565b600060405180830381855af49150503d80600081146106dd576040519150601f19603f3d011682016040523d82523d6000602084013e6106e2565b606091505b509092509050816106f6576106f68161086d565b50505050565b6000610211610875565b600061021161087f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061073f5750335b90565b6107ab7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e2001002000000000000000000000000000000000000000000000000000000061078e610889565b6107966109d1565b61079e610a0b565b6107a6610b8d565b610c04565b565b6107ab7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000006107f9610cd8565b6108016109d1565b61079e610d9d565b6107ab7f7462000000000000000000000000000054696d65626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610855610ebd565b61085d6109d1565b610865610f3c565b6107a6611006565b805160208201fd5b600061021161107d565b60006102116110e4565b60408051600480825260a08201909252600091829190602082016080803683370190505090506061816000815181106108c4576108c4612ce6565b602002602001019060c58111156108dd576108dd612cfc565b908160c58111156108f0576108f0612cfc565b8152505060618160018151811061090957610909612ce6565b602002602001019060c581111561092257610922612cfc565b908160c581111561093557610935612cfc565b81525050605f8160028151811061094e5761094e612ce6565b602002602001019060c581111561096757610967612cfc565b908160c581111561097a5761097a612cfc565b81525050605f8160038151811061099357610993612ce6565b602002602001019060c58111156109ac576109ac612cfc565b908160c58111156109bf576109bf612cfc565b9052506109cb81611130565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061099357610993612ce6565b60408051600480825260a08201909252606091816020015b6060815260200190600190039081610a235790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610a8357610a83612ce6565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610ad757610ad7612ce6565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b2b57610b2b612ce6565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610b7f57610b7f612ce6565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ba45790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610b7f57610b7f612ce6565b6000610c0e6110e4565b90503073ffffffffffffffffffffffffffffffffffffffff821603610c4057610c3b8787878787876112f4565b610ccf565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610c9c908a908a908a908a908a908a90600401612d98565b600060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610d1357610d13612ce6565b602002602001019060c5811115610d2c57610d2c612cfc565b908160c5811115610d3f57610d3f612cfc565b81525050606181600181518110610d5857610d58612ce6565b602002602001019060c5811115610d7157610d71612cfc565b908160c5811115610d8457610d84612cfc565b81525050605f8160028151811061099357610993612ce6565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610db55790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610e1557610e15612ce6565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610e6957610e69612ce6565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b7f57610b7f612ce6565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610ef757610ef7612ce6565b602002602001019060c5811115610f1057610f10612cfc565b908160c5811115610f2357610f23612cfc565b8152505060618160018151811061099357610993612ce6565b6040805160028082526060828101909352816020015b6060815260200190600190039081610f525790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610fb257610fb2612ce6565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610b7f57610b7f612ce6565b604080516001808252818301909252606091816020015b606081526020019060019003908161101d5790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610b7f57610b7f612ce6565b6040805160008082526020820190925260006110da7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000611788565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061112b573391505090565b919050565b6000601c82511115611163578151604051635318beb960e01b815260040161115a91815260200190565b60405180910390fd5b60008080805b855181101561123e5760006111a787838151811061118957611189612ce6565b602002602001015160c58111156111a2576111a2612cfc565b611867565b9050806000036111bc576001909201916111f4565b82156111f4576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061121557611215612ce6565b602002602001015160c581111561122e5761122e612cfc565b901b949094179350600101611169565b50600581111561126457604051635318beb960e01b81526004810182905260240161115a565b8451819003600861127760026020612df8565b6112819190612e0b565b83901b93909317926008600161129960026020612df8565b6112a39190612df8565b6112ad9190612e0b565b81901b939093179260086001806112c660026020612df8565b6112d09190612df8565b6112da9190612df8565b6112e49190612e0b565b9190911b92909217949350505050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061138857507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15611404577f746200000000000000000000000000000000000000000000000000000000000086876040516020016113c291815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261115a939291600401612e22565b61140d856118c7565b611418846001611b0e565b611423836000611b0e565b60e084901c60e885901c0160ff168251146114835760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b60e085901c60e886901c0160ff168151146114e35760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461155b5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b61156485611caa565b61156d84611caa565b146115bf5761157b85611caa565b61158484611caa565b6040517f65cc0adf0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b6115c885611cdc565b6115d184611cdc565b14611623576115df85611cdc565b6115e884611cdc565b6040517fedea95870000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b60005b61162f86611caa565b8110156116c5576116546116438583611cf9565b60c58111156111a2576111a2612cfc565b6008601b8390030287901c60ff16146116bd576008601b8290030286901c60ff166116826116438684611cf9565b6040517f254c7db40000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b600101611626565b506116cf86611d21565b156117295785866040516020016116e891815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261115a9291600401612e63565b61177586868686866040516020016117419190612e7c565b604051602081830303815290604052866040516020016117619190612e7c565b604051602081830303815290604052611dbe565b611780866001611ea1565b505050505050565b6000806117936110e4565b90503073ffffffffffffffffffffffffffffffffffffffff8216036117c6576117be86868686611f5f565b91505061185f565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061181e908990899089908990600401612ecb565b602060405180830381865afa15801561183b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190612efa565b949350505050565b6000808260c581111561187c5761187c612cfc565b60ff169050606181101561189657601f1660010192915050565b60618360c58111156118aa576118aa612cfc565b036118b85750601492915050565b50600092915050565b50919050565b806118fe576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061190982611cdc565b90506005811115611950576040517f7f2372c3000000000000000000000000000000000000000000000000000000008152600481018290526005602482015260440161115a565b600061195b83611caa565b905060006119698383612f13565b9050601c8111156119b0576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c602482015260440161115a565b6000805b83811015611a5b5760ff601b82900360080287901c166000819003611a08576040517f01f2a07c0000000000000000000000000000000000000000000000000000000081526004810183905260240161115a565b6020811115611a46576040517f24c85d580000000000000000000000000000000000000000000000000000000081526004810183905260240161115a565b611a508184612f13565b9250506001016119b4565b50611a6585611f95565b8114611ab157611a7485611f95565b6040517f9365944a00000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260440161115a565b825b601c8110156117805760ff601b82900360080287901c168015611b05576040517fbb68821a0000000000000000000000000000000000000000000000000000000081526004810183905260240161115a565b50600101611ab3565b80158015611b1a575081155b15611b3b57604051635318beb960e01b81526000600482015260240161115a565b6000611b4683611cdc565b90506005811115611b6d57604051635318beb960e01b81526004810182905260240161115a565b6000611b7884611caa565b90506000611b868383612f13565b9050601c811115611bad57604051635318beb960e01b81526004810182905260240161115a565b6000805b83811015611c19576000611bc86116438984611cf9565b905080600003611c04576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c0e8184612f13565b925050600101611bb1565b50611c2386611f95565b8114611c4e57611c3286611f95565b604051635318beb960e01b815260040161115a91815260200190565b825b82811015610ccf576000611c676116438984611cf9565b90508015611ca1576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611c50565b600060086001611cbc60026020612df8565b611cc69190612df8565b611cd09190612e0b565b8260ff911c1692915050565b60006008600180611cef60026020612df8565b611cbc9190612df8565b6000601b8290036008028360ff911c1660c5811115611d1a57611d1a612cfc565b9392505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d5a57611d5a612ce6565b60209081029190910101526000611db27f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611f5f565b905061185f8160f81c90565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611df58484611fb8565b90506000611e038585611fd5565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611e3d57611e3d612ce6565b6020908102919091010152611e957f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612001565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611ed757611ed7612ce6565b602002602001018181525050611f5a7f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611f2591151560f81b815260010190565b60408051601f198184030181529190527e0101000100000000000000000000000000000000000000000000000000000061233a565b505050565b6000611f8c611f6e8686612356565b60ff858116601b0360080285901c16611f8785876123ac565b6123e5565b95945050505050565b60006008611fa560026020612df8565b611faf9190612e0b565b9190911c919050565b8151815160009181810160389190911b1760609190911b17611d1a565b60608282604051602001611fea929190612f26565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361208d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516120809493929190612f55565b60405180910390a2611780565b600061209887612436565b905060005b81518110156121715760008282815181106120ba576120ba612ce6565b602002602001015190506120e66001826affffffffffffffffffffff19166124bf90919063ffffffff16565b15612168576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612135908c908c908c908c908c908c90600401612f9f565b600060405180830381600087803b15801561214f57600080fd5b505af1158015612163573d6000803e3d6000fd5b505050505b5060010161209d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516121a89493929190612f55565b60405180910390a260006121bc8888612356565b905060006020870190506121d48260008951846124dd565b60006121df85611cdc565b11156122635760006121f18a8a61259c565b878155905060208601915060008060005b61220b88611cdc565b8160ff16101561225e576122208d8d836125f2565b925061223b8a8260ff166028026038011c64ffffffffff1690565b915061224a83600084886124dd565b6122548286612f13565b9450600101612202565b505050505b60005b8351811015611e9557600084828151811061228357612283612ce6565b602002602001015190506122af6002826affffffffffffffffffffff19166124bf90919063ffffffff16565b15612331576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906122fe908e908e908e908e908e908e90600401612f9f565b600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b505050505b50600101612266565b61234f858561234984876123ac565b85612672565b5050505050565b6000828260405160200161236b929190612ff8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156123dd576123d360ff601b83900360080287901c1683612f13565b91506001016123b1565b509392505050565b60006020821061240b5760208204840193506020828161240757612407613034565b0691505b508254600882021b6020829003808411156123dd576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061247057612470612ce6565b602090810291909101015260006124a87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361290d565b905061185f6124ba8260008451612947565b6129d5565b60008160ff16826124d08560581c90565b1660ff1614905092915050565b821561255757602083106125075760208304840193506020838161250357612503613034565b0692505b82156125575760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116125485750506106f6565b50600194909401939182900391015b5b602082106125795780518455600190930192601f1990910190602001612558565b81156106f6576000600019600884021c8554835182191691161785555050505050565b600082826040516020016125b1929190612ff8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612607929190612ff8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036126fc57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516126ef9392919061304a565b60405180910390a26106f6565b60006127088585612356565b9050600061271586612436565b905060005b81518110156127ea57600082828151811061273757612737612ce6565b602002602001015190506127636004826affffffffffffffffffffff19166124bf90919063ffffffff16565b156127e1576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906127ae908b908b908b908b90600401613087565b600060405180830381600087803b1580156127c857600080fd5b505af11580156127dc573d6000803e3d6000fd5b505050505b5060010161271a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161281f9392919061304a565b60405180910390a261283a828565ffffffffffff16856129e6565b60005b8151811015610ccf57600082828151811061285a5761285a612ce6565b602002602001015190506128866008826affffffffffffffffffffff19166124bf90919063ffffffff16565b15612904576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906128d1908b908b908b908b90600401613087565b600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b505050505b5060010161283d565b606061185f61291d8585856125f2565b60006129428561292d89896129fc565b9060ff166028026038011c64ffffffffff1690565b612a0f565b6000818311806129575750835182115b15612994578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161115a939291906130c0565b602084016129a28482612f13565b905060006129b08585612df8565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611d1a8360156000612a32565b611f5a838383516129f78560200190565b6124dd565b6000611d1a612a0b848461259c565b5490565b60405160208101601f19603f84840101166040528282526123dd85858584612aad565b60606000612a408560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612a6657612a66613034565b04905060405193506020840160208202810160405281855260005b82811015612aa1578451871c825293870193602090910190600101612a81565b50505050509392505050565b8215612b345760208310612ad757602083048401935060208381612ad357612ad3613034565b0692505b8215612b34576020839003600081841015612afa5750600019600884021c612b04565b50600019600882021c5b8554600886021b818451168219821617845250818411612b255750506106f6565b50600194909401939182900391015b5b60208210612b565783548152600190930192601f1990910190602001612b35565b81156106f6576000600019600884021c8251865482191691161782525050505050565b600060208284031215612b8b57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215612be357600080fd5b813567ffffffffffffffff80821115612bfb57600080fd5b818401915084601f830112612c0f57600080fd5b813581811115612c2157612c21612bbb565b604051601f8201601f19908116603f01168101908382118183101715612c4957612c49612bbb565b81604052828152876020848701011115612c6257600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156118c15760001960209190910360031b1b16919050565b60005b83811015612cc1578181015183820152602001612ca9565b50506000910152565b60008251612cdc818460208701612ca6565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612d2a816020860160208601612ca6565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612d8b57601f19868403018952612d79838351612d12565b98840198925090830190600101612d5d565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612dc360c0830185612d3e565b82810360a0840152612dd58185612d3e565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561020157610201612de2565b808202811582820484141761020157610201612de2565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611f8c6060830184612d12565b82815260406020820152600061185f6040830184612d12565b602081526000611d1a6020830184612d3e565b60008151808452602080850194506020840160005b83811015612ec057815187529582019590820190600101612ea4565b509495945050505050565b848152608060208201526000612ee46080830186612e8f565b60ff949094166040830152506060015292915050565b600060208284031215612f0c57600080fd5b5051919050565b8082018082111561020157610201612de2565b60008351612f38818460208801612ca6565b835190830190612f4c818360208801612ca6565b01949350505050565b608081526000612f686080830187612e8f565b8281036020840152612f7a8187612d12565b90508460408401528281036060840152612f948185612d12565b979650505050505050565b86815260c060208201526000612fb860c0830188612e8f565b8281036040840152612fca8188612d12565b90508560608401528281036080840152612fe48186612d12565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b828110156130275781518452928401929084019060010161300b565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60608152600061305d6060830186612e8f565b65ffffffffffff85166020840152828103604084015261307d8185612d12565b9695505050505050565b8481526080602082015260006130a06080830186612e8f565b65ffffffffffff851660408401528281036060840152612f948185612d12565b6060815260006130d36060830186612d12565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50611a61806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806332c0520f1161005b57806332c0520f146100dd57806345ec9354146100f25780639081c75814610105578063e1af802c1461010d57600080fd5b806301ffc9a714610082578063119df25f146100aa5780631a86b550146100ca575b600080fd5b6100956100903660046115b9565b610115565b60405190151581526020015b60405180910390f35b6100b26101fa565b6040516001600160a01b0390911681526020016100a1565b6100956100d83660046116b5565b610209565b6100f06100eb36600461170c565b61027b565b005b604051601f1936013581526020016100a1565b6100b261029c565b6100b26102a6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a857507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b806101f457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006102046102b0565b905090565b8051602082012060009081610227866102206101fa565b87856102e2565b90508060010361024f576102448661023d6101fa565b87856103f9565b600192505050610274565b801561026d5760001901610244866102656101fa565b8785856104e4565b6000925050505b9392505050565b6102966102866101fa565b85858580519060200120856104e4565b50505050565b6000610204610619565b6000610204610623565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102df5750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b816000815181106103285761032861176b565b602002602001018181525050846001600160a01b031660001b816001815181106103545761035461176b565b60200260200101818152505083816002815181106103745761037461176b565b60200260200101818152505082816003815181106103945761039461176b565b602090810291909101015260006103ec7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e2001002000000000000000000000000000000000000000000000000000000061062d565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061043c5761043c61176b565b602002602001018181525050836001600160a01b031660001b816001815181106104685761046861176b565b60200260200101818152505082816002815181106104885761048861176b565b60200260200101818152505081816003815181106104a8576104a861176b565b60209081029190910101526104dd7f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106ea565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b816000815181106105275761052761176b565b602002602001018181525050846001600160a01b031660001b816001815181106105535761055361176b565b60200260200101818152505083816002815181106105735761057361176b565b60200260200101818152505082816003815181106105935761059361176b565b6020026020010181815250506106117f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105dc91815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610793565b505050505050565b6000610204610848565b60006102046108af565b6000806106386108af565b9050306001600160a01b0382160361065e57610656868686866108ee565b9150506103f1565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906106a99089908990899089906004016117bd565b602060405180830381865afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065691906117ec565b60006106f46108af565b9050306001600160a01b03821603610715576107108383610924565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061075c9086908690600401611805565b600060405180830381600087803b15801561077657600080fd5b505af115801561078a573d6000803e3d6000fd5b50505050505050565b600061079d6108af565b9050306001600160a01b038216036107c1576107bc868686868661093b565b610611565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061080e9089908990899089908990600401611864565b600060405180830381600087803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b50505050505050505050565b6040805160008082526020820190925260006108a57f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e1401001400000000000000000000000000000000000000000000000000000061062d565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806108e9573391505090565b919050565b600061091b6108fd8686610950565b60ff858116601b0360080285901c1661091685876109a6565b6109df565b95945050505050565b610937828261093285610a30565b610ab5565b5050565b6104dd858561094a84876109a6565b85610db4565b600082826040516020016109659291906118ab565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109d7576109cd60ff601b83900360080287901c16836118fd565b91506001016109ab565b509392505050565b600060208210610a0557602082048401935060208281610a0157610a01611910565b0691505b508254600882021b6020829003808411156109d7576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201610a7f57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101f4610aac7f746273746f72650000000000000000005461626c6573000000000000000000008461104f565b602060006109df565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b3b57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b2e9190611926565b60405180910390a2505050565b6000610b468461106b565b905060005b8151811015610c19576000828281518110610b6857610b6861176b565b60200260200101519050610b946040826affffffffffffffffffffff19166110f490919063ffffffff16565b15610c10576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bdd90899089908990600401611939565b600060405180830381600087803b158015610bf757600080fd5b505af1158015610c0b573d6000803e3d6000fd5b505050505b50600101610b4b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c4a9190611926565b60405180910390a26000610c5e8585610950565b9050610cb7816000610c6f86611112565b67ffffffffffffffff811115610c8757610c87611612565b6040519080825280601f01601f191660200182016040528015610cb1576020820181803683370190505b50611135565b6000610cc28461114b565b1115610ce3576000610cd48686611188565b9050610ce18160206111de565b505b60005b8251811015610611576000838281518110610d0357610d0361176b565b60200260200101519050610d2f6080826affffffffffffffffffffff19166110f490919063ffffffff16565b15610dab576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d78908a908a908a90600401611939565b600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b505050505b50600101610ce6565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610e3e57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610e3193929190611962565b60405180910390a2610296565b6000610e4a8585610950565b90506000610e578661106b565b905060005b8151811015610f2c576000828281518110610e7957610e7961176b565b60200260200101519050610ea56004826affffffffffffffffffffff19166110f490919063ffffffff16565b15610f23576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ef0908b908b908b908b9060040161199f565b600060405180830381600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050505b50600101610e5c565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f6193929190611962565b60405180910390a2610f7c828565ffffffffffff1685611135565b60005b815181101561078a576000828281518110610f9c57610f9c61176b565b60200260200101519050610fc86008826affffffffffffffffffffff19166110f490919063ffffffff16565b15611046576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611013908b908b908b908b9060040161199f565b600060405180830381600087803b15801561102d57600080fd5b505af1158015611041573d6000803e3d6000fd5b505050505b50600101610f7f565b6040805160208101849052908101829052600090606001610965565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106110a5576110a561176b565b602090810291909101015260006110dd7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361121b565b90506103f16110ef8260008451611255565b6112ec565b60008160ff16826111058560581c90565b1660ff1614905092915050565b60006008611122600260206119e3565b61112c91906119f6565b9190911c919050565b610710838383516111468560200190565b6112fd565b6000600860018061115e600260206119e3565b61116891906119e3565b61117291906119e3565b61117c91906119f6565b8260ff911c1692915050565b6000828260405160200161119d9291906118ab565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206111ed83601f6118fd565b6111f79190611a0d565b61120190846118fd565b90505b808310156107105760008355600183019250611204565b60606103f161122b8585856113bc565b60006112508561123b898961143c565b9060ff166028026038011c64ffffffffff1690565b61144f565b6000818311806112655750835182115b156112ab578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016112a293929190611a2f565b60405180910390fd5b602084016112b984826118fd565b905060006112c785856119e3565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006102748360156000611472565b821561137757602083106113275760208304840193506020838161132357611323611910565b0692505b82156113775760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611368575050610296565b50600194909401939182900391015b5b602082106113995780518455600190930192601f1990910190602001611378565b8115610296576000600019600884021c8554835182191691161785555050505050565b600083836040516020016113d19291906118ab565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061027461144b8484611188565b5490565b60405160208101601f19603f84840101166040528282526109d7858585846114ed565b606060006114808560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816114a6576114a6611910565b04905060405193506020840160208202810160405281855260005b828110156114e1578451871c8252938701936020909101906001016114c1565b50505050509392505050565b821561157457602083106115175760208304840193506020838161151357611513611910565b0692505b821561157457602083900360008184101561153a5750600019600884021c611544565b50600019600882021c5b8554600886021b818451168219821617845250818411611565575050610296565b50600194909401939182900391015b5b602082106115965783548152600190930192601f1990910190602001611575565b8115610296576000600019600884021c8251865482191691161782525050505050565b6000602082840312156115cb57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461027457600080fd5b80356001600160a01b03811681146108e957600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261163957600080fd5b813567ffffffffffffffff8082111561165457611654611612565b604051601f8301601f19908116603f0116810190828211818310171561167c5761167c611612565b8160405283815286602085880101111561169557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156116ca57600080fd5b6116d3846115fb565b925060208401359150604084013567ffffffffffffffff8111156116f657600080fd5b61170286828701611628565b9150509250925092565b6000806000806080858703121561172257600080fd5b61172b856115fb565b935060208501359250604085013567ffffffffffffffff81111561174e57600080fd5b61175a87828801611628565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156117b257815187529582019590820190600101611796565b509495945050505050565b8481526080602082015260006117d66080830186611781565b60ff949094166040830152506060015292915050565b6000602082840312156117fe57600080fd5b5051919050565b8281526040602082015260006103f16040830184611781565b6000815180845260005b8181101561184457602081850181015186830182015201611828565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061187d60a0830187611781565b60ff861660408401528281036060840152611898818661181e565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156118da578151845292840192908401906001016118be565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101f4576101f46118e7565b634e487b7160e01b600052601260045260246000fd5b6020815260006102746020830184611781565b8381526060602082015260006119526060830185611781565b9050826040830152949350505050565b6060815260006119756060830186611781565b65ffffffffffff851660208401528281036040840152611995818561181e565b9695505050505050565b8481526080602082015260006119b86080830186611781565b65ffffffffffff8516604084015282810360608401526119d8818561181e565b979650505050505050565b818103818111156101f4576101f46118e7565b80820281158282048414176101f4576101f46118e7565b600082611a2a57634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a42606083018661181e565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061199b806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100dd5780639081c758146100f057806393b94f61146100f8578063e1af802c1461010d57600080fd5b806301ffc9a714610082578063119df25f146100aa5780631a86b550146100ca575b600080fd5b610095610090366004611542565b610115565b60405190151581526020015b60405180910390f35b6100b26101fa565b6040516001600160a01b0390911681526020016100a1565b6100956100d83660046115b1565b610209565b604051601f1936013581526020016100a1565b6100b261026e565b61010b61010636600461167c565b610278565b005b6100b2610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a857507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b806101f457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061020461029a565b905090565b60008061021e856102186101fa565b866102cc565b9050806001036102445761023a856102346101fa565b866103c0565b6001915050610267565b8015610261576000190161023a8561025a6101fa565b868461048a565b60009150505b9392505050565b600061020461059e565b61028b6102836101fa565b84848461048a565b505050565b60006102046105a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c95750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b81600081518110610312576103126116af565b602002602001018181525050836001600160a01b031660001b8160018151811061033e5761033e6116af565b602002602001018181525050828160028151811061035e5761035e6116af565b602090810291909101015260006103b67f7462000000000000000000000000000053797374656d626f756e6444656c656783837e200100200000000000000000000000000000000000000000000000000000006105b2565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b81600081518110610403576104036116af565b602002602001018181525050826001600160a01b031660001b8160018151811061042f5761042f6116af565b602002602001018181525050818160028151811061044f5761044f6116af565b60209081029190910101526104847f7462000000000000000000000000000053797374656d626f756e6444656c656782610677565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104cd576104cd6116af565b602002602001018181525050836001600160a01b031660001b816001815181106104f9576104f96116af565b6020026020010181815250508281600281518110610519576105196116af565b6020026020010181815250506105977f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161056291815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061071b565b5050505050565b60006102046107d1565b6000610204610838565b6000806105bd610838565b9050306001600160a01b038216036105e3576105db86868686610877565b91505061066f565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061062e908990899089908990600401611701565b602060405180830381865afa15801561064b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105db9190611730565b949350505050565b6000610681610838565b9050306001600160a01b0382160361069d5761028b83836108ad565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106e49086908690600401611749565b600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50505050505050565b6000610725610838565b9050306001600160a01b038216036107495761074486868686866108c4565b6107c9565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061079690899089908990899089906004016117a8565b600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050505b505050505050565b60408051600080825260208201909252600061082e7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e140100140000000000000000000000000000000000000000000000000000006105b2565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610872573391505090565b919050565b60006108a461088686866108d9565b60ff858116601b0360080285901c1661089f858761092f565b610968565b95945050505050565b6108c082826108bb856109b9565b610a3e565b5050565b61059785856108d3848761092f565b85610d3d565b600082826040516020016108ee9291906117ef565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109605761095660ff601b83900360080287901c1683611841565b9150600101610934565b509392505050565b60006020821061098e5760208204840193506020828161098a5761098a611854565b0691505b508254600882021b602082900380841115610960576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201610a0857507e60030220202000000000000000000000000000000000000000000000000000919050565b6101f4610a357f746273746f72650000000000000000005461626c65730000000000000000000084610fd8565b60206000610968565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610ac457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610ab7919061186a565b60405180910390a2505050565b6000610acf84610ff4565b905060005b8151811015610ba2576000828281518110610af157610af16116af565b60200260200101519050610b1d6040826affffffffffffffffffffff191661107d90919063ffffffff16565b15610b99576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b669089908990899060040161187d565b600060405180830381600087803b158015610b8057600080fd5b505af1158015610b94573d6000803e3d6000fd5b505050505b50600101610ad4565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bd3919061186a565b60405180910390a26000610be785856108d9565b9050610c40816000610bf88661109b565b67ffffffffffffffff811115610c1057610c1061159b565b6040519080825280601f01601f191660200182016040528015610c3a576020820181803683370190505b506110be565b6000610c4b846110d4565b1115610c6c576000610c5d8686611111565b9050610c6a816020611167565b505b60005b82518110156107c9576000838281518110610c8c57610c8c6116af565b60200260200101519050610cb86080826affffffffffffffffffffff191661107d90919063ffffffff16565b15610d34576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d01908a908a908a9060040161187d565b600060405180830381600087803b158015610d1b57600080fd5b505af1158015610d2f573d6000803e3d6000fd5b505050505b50600101610c6f565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610dc757837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dba939291906118a6565b60405180910390a2610484565b6000610dd385856108d9565b90506000610de086610ff4565b905060005b8151811015610eb5576000828281518110610e0257610e026116af565b60200260200101519050610e2e6004826affffffffffffffffffffff191661107d90919063ffffffff16565b15610eac576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e79908b908b908b908b906004016118d9565b600060405180830381600087803b158015610e9357600080fd5b505af1158015610ea7573d6000803e3d6000fd5b505050505b50600101610de5565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610eea939291906118a6565b60405180910390a2610f05828565ffffffffffff16856110be565b60005b8151811015610712576000828281518110610f2557610f256116af565b60200260200101519050610f516008826affffffffffffffffffffff191661107d90919063ffffffff16565b15610fcf576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f9c908b908b908b908b906004016118d9565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050505b50600101610f08565b60408051602081018490529081018290526000906060016108ee565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061102e5761102e6116af565b602090810291909101015260006110667f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836111a4565b905061066f61107882600084516111de565b611275565b60008160ff168261108e8560581c90565b1660ff1614905092915050565b600060086110ab6002602061191d565b6110b59190611930565b9190911c919050565b61028b838383516110cf8560200190565b611286565b600060086001806110e76002602061191d565b6110f1919061191d565b6110fb919061191d565b6111059190611930565b8260ff911c1692915050565b600082826040516020016111269291906117ef565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061117683601f611841565b6111809190611947565b61118a9084611841565b90505b8083101561028b576000835560018301925061118d565b606061066f6111b4858585611345565b60006111d9856111c489896113c5565b9060ff166028026038011c64ffffffffff1690565b6113d8565b6000818311806111ee5750835182115b15611234578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161122b93929190611969565b60405180910390fd5b602084016112428482611841565b90506000611250858561191d565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026783601560006113fb565b821561130057602083106112b0576020830484019350602083816112ac576112ac611854565b0692505b82156113005760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112f1575050610484565b50600194909401939182900391015b5b602082106113225780518455600190930192601f1990910190602001611301565b8115610484576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161135a9291906117ef565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102676113d48484611111565b5490565b60405160208101601f19603f848401011660405282825261096085858584611476565b606060006114098560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161142f5761142f611854565b04905060405193506020840160208202810160405281855260005b8281101561146a578451871c82529387019360209091019060010161144a565b50505050509392505050565b82156114fd57602083106114a05760208304840193506020838161149c5761149c611854565b0692505b82156114fd5760208390036000818410156114c35750600019600884021c6114cd565b50600019600882021c5b8554600886021b8184511682198216178452508184116114ee575050610484565b50600194909401939182900391015b5b6020821061151f5783548152600190930192601f19909101906020016114fe565b8115610484576000600019600884021c8251865482191691161782525050505050565b60006020828403121561155457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026757600080fd5b80356001600160a01b038116811461087257600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156115c657600080fd5b6115cf84611584565b925060208401359150604084013567ffffffffffffffff808211156115f357600080fd5b818601915086601f83011261160757600080fd5b8135818111156116195761161961159b565b604051601f8201601f19908116603f011681019083821181831017156116415761164161159b565b8160405282815289602084870101111561165a57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561169157600080fd5b61169a84611584565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116f6578151875295820195908201906001016116da565b509495945050505050565b84815260806020820152600061171a60808301866116c5565b60ff949094166040830152506060015292915050565b60006020828403121561174257600080fd5b5051919050565b82815260406020820152600061066f60408301846116c5565b6000815180845260005b818110156117885760208185018101518683018201520161176c565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117c160a08301876116c5565b60ff8616604084015282810360608401526117dc8186611762565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561181e57815184529284019290840190600101611802565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101f4576101f461182b565b634e487b7160e01b600052601260045260246000fd5b60208152600061026760208301846116c5565b83815260606020820152600061189660608301856116c5565b9050826040830152949350505050565b6060815260006118b960608301866116c5565b65ffffffffffff8516602084015282810360408401526103b68185611762565b8481526080602082015260006118f260808301866116c5565b65ffffffffffff8516604084015282810360608401526119128185611762565b979650505050505050565b818103818111156101f4576101f461182b565b80820281158282048414176101f4576101f461182b565b60008261196457634e487b7160e01b600052601260045260246000fd5b500490565b60608152600061197c6060830186611762565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50611362806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ea5780639081c758146100fd578063d043756a14610105578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa5780631a86b550146100d7575b600080fd5b610095610090366004610f89565b610122565b60405190151581526020015b60405180910390f35b6100b2610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100956100e5366004611005565b610216565b604051601f1936013581526020016100a1565b6100b2610236565b6101186101133660046110d0565b610240565b005b6100b2610256565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b8061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610211610260565b905090565b60008061022a85610225610207565b610292565b42111595945050505050565b600061021161037e565b61025261024b610207565b8383610388565b5050565b6000610211610493565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061028f5750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102e4576102e46110fa565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061031d5761031d6110fa565b602090810291909101015260006103757f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e2001002000000000000000000000000000000000000000000000000000000061049d565b95945050505050565b600061021161057c565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103d6576103d66110fa565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061040f5761040f6110fa565b60200260200101818152505061048d7f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161045891815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006105e3565b50505050565b60006102116106b3565b6000806104a86106b3565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104db576104d3868686866106ff565b915050610574565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061053390899089908990899060040161114c565b602060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d3919061117b565b949350505050565b6040805160008082526020820190925260006105d97f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e1401001400000000000000000000000000000000000000000000000000000061049d565b60601c9392505050565b60006105ed6106b3565b90503073ffffffffffffffffffffffffffffffffffffffff82160361061e57610619868686868661072c565b6106ab565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae09061067890899089908990899089906004016111da565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806106fa573391505090565b919050565b600061037561070e8686610748565b60ff858116601b0360080285901c16610727858761079e565b6107d7565b610741858561073b848761079e565b85610828565b5050505050565b6000828260405160200161075d929190611221565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107cf576107c560ff601b83900360080287901c1683611273565b91506001016107a3565b509392505050565b6000602082106107fd576020820484019350602082816107f9576107f9611286565b0691505b508254600882021b6020829003808411156107cf576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036108b257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108a59392919061129c565b60405180910390a261048d565b60006108be8585610748565b905060006108cb86610acc565b905060005b81518110156109a05760008282815181106108ed576108ed6110fa565b602002602001015190506109196004826affffffffffffffffffffff1916610b5590919063ffffffff16565b15610997576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610964908b908b908b908b906004016112d9565b600060405180830381600087803b15801561097e57600080fd5b505af1158015610992573d6000803e3d6000fd5b505050505b506001016108d0565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109d59392919061129c565b60405180910390a26109f0828565ffffffffffff1685610b73565b60005b8151811015610ac3576000828281518110610a1057610a106110fa565b60200260200101519050610a3c6008826affffffffffffffffffffff1916610b5590919063ffffffff16565b15610aba576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610a87908b908b908b908b906004016112d9565b600060405180830381600087803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b505050505b506001016109f3565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b0657610b066110fa565b60209081029190910101526000610b3e7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b8e565b9050610574610b508260008451610bc8565b610c5f565b60008160ff1682610b668560581c90565b1660ff1614905092915050565b610b8983838351610b848560200190565b610c77565b505050565b6060610574610b9e858585610d36565b6000610bc385610bae8989610db6565b9060ff166028026038011c64ffffffffff1690565b610dc9565b600081831180610bd85750835182115b15610c1e578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610c159392919061131d565b60405180910390fd5b60208401610c2c8482611273565b90506000610c3a8585611342565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610c708360156000610dec565b9392505050565b8215610cf15760208310610ca157602083048401935060208381610c9d57610c9d611286565b0692505b8215610cf15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610ce257505061048d565b50600194909401939182900391015b5b60208210610d135780518455600190930192601f1990910190602001610cf2565b811561048d576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610d4b929190611221565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610c70610dc58484610e67565b5490565b60405160208101601f19603f84840101166040528282526107cf85858584610ebd565b60606000610dfa8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610e2057610e20611286565b04905060405193506020840160208202810160405281855260005b82811015610e5b578451871c825293870193602090910190600101610e3b565b50505050509392505050565b60008282604051602001610e7c929190611221565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610f445760208310610ee757602083048401935060208381610ee357610ee3611286565b0692505b8215610f44576020839003600081841015610f0a5750600019600884021c610f14565b50600019600882021c5b8554600886021b818451168219821617845250818411610f3557505061048d565b50600194909401939182900391015b5b60208210610f665783548152600190930192601f1990910190602001610f45565b811561048d576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f9b57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c7057600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561101a57600080fd5b61102384610fcb565b925060208401359150604084013567ffffffffffffffff8082111561104757600080fd5b818601915086601f83011261105b57600080fd5b81358181111561106d5761106d610fef565b604051601f8201601f19908116603f0116810190838211818310171561109557611095610fef565b816040528281528960208487010111156110ae57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080604083850312156110e357600080fd5b6110ec83610fcb565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561114157815187529582019590820190600101611125565b509495945050505050565b8481526080602082015260006111656080830186611110565b60ff949094166040830152506060015292915050565b60006020828403121561118d57600080fd5b5051919050565b6000815180845260005b818110156111ba5760208185018101518683018201520161119e565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006111f360a0830187611110565b60ff86166040840152828103606084015261120e8186611194565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561125057815184529284019290840190600101611234565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102015761020161125d565b634e487b7160e01b600052601260045260246000fd5b6060815260006112af6060830186611110565b65ffffffffffff8516602084015282810360408401526112cf8185611194565b9695505050505050565b8481526080602082015260006112f26080830186611110565b65ffffffffffff8516604084015282810360608401526113128185611194565b979650505050505050565b6060815260006113306060830186611194565b60208301949094525060400152919050565b818103818111156102015761020161125d56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611869806100206000396000f3fe6080604052600436106100d25760003560e01c8063a3912ec81161007f578063c36e144811610059578063c36e1448146102a1578063d737d0c7146102c1578063e1af802c146102d6578063ea29e3ba146102eb576100d2565b8063a3912ec814610204578063b07ed3a91461023b578063b5531d2114610250576100d2565b806334875054116100b057806334875054146101e457806345ec9354146102065780639081c75814610226576100d2565b806301ffc9a714610148578063119df25f1461017d57806325775aa2146101b7575b3480156100de57600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f867857160405161013e9060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561015457600080fd5b5061016861016336600461133e565b610300565b60405190151581526020015b60405180910390f35b34801561018957600080fd5b50610192610399565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610174565b3480156101c357600080fd5b506101d76101d236600461140c565b6103a8565b60405161017491906114d9565b3480156101f057600080fd5b506102046101ff3660046114ec565b61042c565b005b34801561021257600080fd5b50604051601f193601358152602001610174565b34801561023257600080fd5b50610192610579565b34801561024757600080fd5b50610192610583565b34801561025c57600080fd5b5061027061026b366004611586565b61058d565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610174565b3480156102ad57600080fd5b506102046102bc36600461159f565b6105d7565b3480156102cd57600080fd5b50610192610614565b3480156102e257600080fd5b5061019261061e565b3480156102f757600080fd5b50610204610628565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000148061039357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103a3610714565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103d291906115e8565b600060405180830381855af49150503d806000811461040d576040519150601f19603f3d011682016040523d82523d6000602084013e610412565b606091505b50915091508161042457805181602001fd5b949350505050565b60408051600080825260208201909252906104687f74620000000000000000000000000000000000000000000000000000000000008686610746565b9050306104736107cd565b73ffffffffffffffffffffffffffffffffffffffff16036104cf576104ca8183856040516020016104ab91151560f81b815260010190565b60408051808303601f1901815260008084526020840190925291610819565b610572565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb82848660405160200161050591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161053f959493929190611640565b600060405180830381600087803b15801561055957600080fd5b505af115801561056d573d6000803e3d6000fd5b505050505b5050505050565b60006103a361082f565b60006103a36107cd565b604080518082019091526000808252602082015260405180604001604052806105b4610399565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f7930027300000000000000000000000000000000000000000000000000000000815260040161060b91906114d9565b60405180910390fd5b60006103a3610399565b60006103a3610583565b306106316107cd565b73ffffffffffffffffffffffffffffffffffffffff16036106b5577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106ab906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106ab9060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107435750335b90565b6000610754607060106116a7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610814573391505090565b919050565b610572858585858561082a8b610839565b6108be565b60006103a3610c04565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161088857507e60030220202000000000000000000000000000000000000000000000000000919050565b6103936108b57f746273746f72650000000000000000005461626c65730000000000000000000084610c6b565b60206000610cc4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361094a57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161093d94939291906116ba565b60405180910390a2610bfc565b600061095587610d16565b905060005b8151811015610a2e57600082828151811061097757610977611704565b602002602001015190506109a36001826affffffffffffffffffffff1916610d9f90919063ffffffff16565b15610a25576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109f2908c908c908c908c908c908c9060040161171a565b600060405180830381600087803b158015610a0c57600080fd5b505af1158015610a20573d6000803e3d6000fd5b505050505b5060010161095a565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a6594939291906116ba565b60405180910390a26000610a798888610dbd565b90506000602087019050610a91826000895184610dd2565b6000610a9c85610e90565b1115610b20576000610aae8a8a610ecd565b878155905060208601915060008060005b610ac888610e90565b8160ff161015610b1b57610add8d8d83610f23565b9250610af88a8260ff166028026038011c64ffffffffff1690565b9150610b078360008488610dd2565b610b1182866116a7565b9450600101610abf565b505050505b60005b8351811015610bf7576000848281518110610b4057610b40611704565b60200260200101519050610b6c6002826affffffffffffffffffffff1916610d9f90919063ffffffff16565b15610bee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610bbb908e908e908e908e908e908e9060040161171a565b600060405180830381600087803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b505050505b50600101610b23565b505050505b505050505050565b604080516000808252602082019092526000610c617f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610fa3565b60601c9392505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610cea57602082048401935060208281610ce657610ce6611773565b0691505b508254600882021b602082900380841115610d0e576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d5057610d50611704565b60209081029190910101526000610d887f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361107a565b9050610424610d9a82600084516110b4565b611142565b60008160ff1682610db08560581c90565b1660ff1614905092915050565b60008282604051602001610c83929190611789565b8215610e4c5760208310610dfc57602083048401935060208381610df857610df8611773565b0692505b8215610e4c5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610e3d575050610e8a565b50600194909401939182900391015b5b60208210610e6e5780518455600190930192601f1990910190602001610e4d565b8115610e8a5783548151600019600885021c9182169119161784555b50505050565b60006008600180610ea3600260206117c5565b610ead91906117c5565b610eb791906117c5565b610ec191906117d8565b8260ff911c1692915050565b60008282604051602001610ee2929190611789565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610f38929190611789565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600080610fae6107cd565b90503073ffffffffffffffffffffffffffffffffffffffff821603610fe157610fd98686868661115a565b915050610424565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906110399089908990899089906004016117ef565b602060405180830381865afa158015611056573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd9919061181e565b606061042461108a858585610f23565b60006110af8561109a8989611190565b9060ff166028026038011c64ffffffffff1690565b6111a3565b6000818311806110c45750835182115b15611101578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161060b93929190611837565b6020840161110f84826116a7565b9050600061111d85856117c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061115383601560006111c6565b9392505050565b60006111876111698686610dbd565b60ff858116601b0360080285901c166111828587611241565b610cc4565b95945050505050565b600061115361119f8484610ecd565b5490565b60405160208101601f19603f8484010116604052828252610d0e85858584611272565b606060006111d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111fa576111fa611773565b04905060405193506020840160208202810160405281855260005b82811015611235578451871c825293870193602090910190600101611215565b50505050509392505050565b600080805b8360ff16811015610d0e5761126860ff601b83900360080287901c16836116a7565b9150600101611246565b82156112f9576020831061129c5760208304840193506020838161129857611298611773565b0692505b82156112f95760208390036000818410156112bf5750600019600884021c6112c9565b50600019600882021c5b8554600886021b8184511682198216178452508184116112ea575050610e8a565b50600194909401939182900391015b5b6020821061131b5783548152600190930192601f19909101906020016112fa565b8115610e8a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561135057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461115357600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156113b1576113b1611380565b604051601f8501601f19908116603f011681019082821181831017156113d9576113d9611380565b816040528093508581528686860111156113f257600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561141f57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461144357600080fd5b9150602083013567ffffffffffffffff81111561145f57600080fd5b8301601f8101851361147057600080fd5b61147f85823560208401611396565b9150509250929050565b60005b838110156114a457818101518382015260200161148c565b50506000910152565b600081518084526114c5816020860160208601611489565b601f01601f19169290920160200192915050565b60208152600061115360208301846114ad565b60008060006060848603121561150157600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461153157600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461156657600080fd5b91506040840135801515811461157b57600080fd5b809150509250925092565b60006020828403121561159857600080fd5b5035919050565b6000602082840312156115b157600080fd5b813567ffffffffffffffff8111156115c857600080fd5b8201601f810184136115d957600080fd5b61042484823560208401611396565b600082516115fa818460208701611489565b9190910192915050565b60008151808452602080850194506020840160005b8381101561163557815187529582019590820190600101611619565b509495945050505050565b85815260a06020820152600061165960a0830187611604565b828103604084015261166b81876114ad565b9050846060840152828103608084015261168581856114ad565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039357610393611691565b6080815260006116cd6080830187611604565b82810360208401526116df81876114ad565b905084604084015282810360608401526116f981856114ad565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061173360c0830188611604565b828103604084015261174581886114ad565b9050856060840152828103608084015261175f81866114ad565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156117b85781518452928401929084019060010161179c565b5091979650505050505050565b8181038181111561039357610393611691565b808202811582820484141761039357610393611691565b8481526080602082015260006118086080830186611604565b60ff949094166040830152506060015292915050565b60006020828403121561183057600080fd5b5051919050565b60608152600061184a60608301866114ad565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506105ff806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c15780639081c758146100d4578063e1af802c146100dc57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a36600461048e565b6100e4565b60405190151581526020015b60405180910390f35b61009c61017d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b604051601f19360135815260200161008b565b61009c61018c565b61009c610196565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000148061017757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101876101a0565b905090565b60006101876101d2565b60006101876101dc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101cf5750335b90565b60006101876101e6565b600061018761024d565b6040805160008082526020820190925260006102437f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610299565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610294573391505090565b919050565b6000806102a461024d565b90503073ffffffffffffffffffffffffffffffffffffffff8216036102d7576102cf86868686610378565b915050610370565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061032f9089908990899089906004016104d7565b602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cf9190610534565b949350505050565b60006103a561038786866103ae565b60ff858116601b0360080285901c166103a08587610404565b61043d565b95945050505050565b600082826040516020016103c392919061054d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156104355761042b60ff601b83900360080287901c1683610589565b9150600101610409565b509392505050565b6000602082106104635760208204840193506020828161045f5761045f6105c3565b0691505b508254600882021b602082900380841115610435576001850154600882021c82179150509392505050565b6000602082840312156104a057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104d057600080fd5b9392505050565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b8181101561051a578451835293830193918301916001016104fe565b505060ff9690961660408501525050506060015292915050565b60006020828403121561054657600080fd5b5051919050565b8281526000602080830184516020860160005b8281101561057c57815184529284019290840190600101610560565b5091979650505050505050565b80820180821115610177577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a26080516154fc620000e8600039600081816103ee01526115ac01526154fc6000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a0414610750578063dbbf0e2114610650578063e228a4a314610770578063ef6ea8621461079057610266565b8063c4d66de8146106d0578063cc49db7e146106f0578063d03edb8c14610710578063d4285dc21461073057610266565b8063af068c9e116100d1578063af068c9e14610670578063b047c1eb14610690578063c0a2895a146106b0578063c1122229146105ca57610266565b80638c364d59146106105780639f1fcf0a14610630578063a53417ed1461065057610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461058a578063505a181d146105aa5780636951955d146105ca578063894ecc58146105fd57610266565b8063390baae0146104fa5780633a77c2c21461051a5780633ae7af0814610548578063419b58fd1461055b57610266565b8063150f3262116101ab578063150f32621461047a5780631e7889771461049a578063298314fb146104ba5780633708196e146104da57610266565b806302d05d3f146103dc57806305242d2f1461042d578063114a72661461045a57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614616565b6107b0565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614616565b61025f3484614653565b610831565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b60008080806102a66108d2565b6001600160a01b0316036103185760006102bf33610921565b146102f8576040517f58c7e8d6000000000000000000000000000000000000000000000000000000008152336004820152602401610290565b506001821561030f5761030a826109a6565b610318565b610318336109a6565b6000806103306000356001600160e01b031916610a1f565b91509150816000801b0361037e576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103c26000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610aef9050565b905060006103d233858434610b22565b9050805160208201f35b3480156103e857600080fd5b506104107f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043957600080fd5b5061044d6104483660046146c3565b610b4f565b6040516104249190614779565b34801561046657600080fd5b506102646104753660046147ce565b610b92565b34801561048657600080fd5b506102646104953660046147ce565b610c45565b3480156104a657600080fd5b5061044d6104b536600461485b565b610cf0565b3480156104c657600080fd5b506102646104d53660046148b9565b610d3a565b3480156104e657600080fd5b506102646104f5366004614966565b610e23565b34801561050657600080fd5b50610264610515366004614966565b610ed9565b34801561052657600080fd5b5061053a6105353660046149fc565b610f86565b604051908152602001610424565b61044d610556366004614acc565b610f97565b34801561056757600080fd5b5061057b610576366004614b13565b611071565b60405161042493929190614b66565b34801561059657600080fd5b5061044d6105a5366004614c06565b6110c6565b3480156105b657600080fd5b506102646105c5366004614c6f565b6110d5565b3480156105d657600080fd5b507f312e302e302d756e61756469746564000000000000000000000000000000000061053a565b61044d61060b366004614cd0565b61114a565b34801561061c57600080fd5b5061053a61062b3660046146c3565b611344565b34801561063c57600080fd5b5061053a61064b366004614d29565b611387565b34801561065c57600080fd5b5061053a61066b366004614d88565b611395565b34801561067c57600080fd5b5061026461068b366004614ddf565b6113a2565b34801561069c57600080fd5b506102646106ab366004614e19565b61141a565b3480156106bc57600080fd5b506102646106cb366004614ea8565b6114c5565b3480156106dc57600080fd5b506102646106eb366004614f35565b611573565b3480156106fc57600080fd5b5061057b61070b366004614c6f565b6116b5565b34801561071c57600080fd5b5061044d61072b36600461485b565b611707565b34801561073c57600080fd5b5061053a61074b3660046149fc565b611748565b34801561075c57600080fd5b5061026461076b3660046146c3565b611753565b34801561077c57600080fd5b5061053a61078b3660046149fc565b6117d3565b34801561079c57600080fd5b506102646107ab3660046147ce565b6117de565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106107e9576107e9614f52565b602090810291909101015260006108297f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611889565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061086757610867614f52565b6020026020010181815250506108cd7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b826000856040516020016108b091815260200190565b60408051601f19818403018152919052630100080160dd1b6118b6565b505050565b6040805160008082526020820190925260006109177f7462776f726c640000000000000000005472616e73616374696f6e436f6e74658383630500400560da1b6118cb565b60601c9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b8160008151811061096657610966614f52565b602090810291909101015260006108297f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b6118cb565b604080516000808252602082018352606084901b6bffffffffffffffffffffffff19169282019290925290610a1b907f7462776f726c640000000000000000005472616e73616374696f6e436f6e7465908390605482015b60408051601f19818403018152919052630500400560da1b611988565b5050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110610a7857610a78614f52565b602090810291909101015260008080610ad17f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e24020020040000000000000000000000000000000000000000000000000000611a3d565b925092509250610ae2838383611b45565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610b3387878787611b5d565b9150915081610b4557610b4581611d2d565b9695505050505050565b6060610b4586868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250879150611d359050565b303303610bc0576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610bca8633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611dc692505050565b505050505050565b303303610c73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c7d8633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611de192505050565b6060610d3185858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611e1c915050565b95945050505050565b303303610d68576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d728833611d7a565b610e198888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611e5692505050565b5050505050505050565b303303610e51576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e5b8733611d7a565b610ed08787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611e6c915050565b50505050505050565b303303610f07576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f118733611d7a565b610ed08787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506118b6915050565b6000610f9182611eaf565b92915050565b6060303303610fc7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6000808080610fd46108d2565b6001600160a01b031603611046576000610fed33610921565b14611026576040517f58c7e8d6000000000000000000000000000000000000000000000000000000008152336004820152602401610290565b506001821561103d57611038826109a6565b611046565b611046336109a6565b61105233878734610b22565b93508015156001036110685761106860006109a6565b50505092915050565b6060600060606110b687878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250611a3d915050565b9250925092509450945094915050565b6060610b458686868686611f34565b303303611103576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61110d8333611d7a565b6108cd8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061203792505050565b606030330361117a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6001846000806111886108d2565b6001600160a01b0316036111fa5760006111a133610921565b146111da576040517f58c7e8d6000000000000000000000000000000000000000000000000000000008152336004820152602401610290565b50600182156111f1576111ec826109a6565b6111fa565b6111fa336109a6565b336001600160a01b0388160361121d5761121633878734610b22565b9350611326565b6000611229883361204a565b90506112388189338a8a6120fb565b156112515761124988888834610b22565b945050611326565b600061125e89600061204a565b905061126d818a338b8b6120fb565b156112875761127e89898934610b22565b95505050611326565b60006112b9616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008b16176121d0565b90506112c8818b338c8c6120fb565b156112e3576112d98a8a8a34610b22565b9650505050611326565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152336024820152604401610290565b80151560010361133a5761133a60006109a6565b5050509392505050565b6000610b45868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118899050565b6000610d3185858585612249565b600061082984848461228d565b3033036113d0576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611410910160405160208183030381529060405261140a90614616565b336122a3565b610a1b82826122f4565b303303611448576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114528633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8901819004810282018101909252878152899350915087908790819084018382808284376000920191909152506123a792505050565b3033036114f3576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114fd8833611d7a565b610e198888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a92508991899089908190840183828082843760009201919091525061264292505050565b3033036115a1576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116455760408051616e7360f01b60208201526000602282018190526030820152611610910160405160208183030381529060405261160b90614616565b61265a565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614f68565b600061164f612797565b6001600160a01b03161461168f576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611698816127dc565b6040805160008152602081019091526116b29082906122f4565b50565b6060600060606116f88686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283892505050565b92509250925093509350939050565b6060610d318585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061285e915050565b6000610f9182612874565b303303611781576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61178b8533611d7a565b6117cc858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506128e89050565b5050505050565b6000610f9182612941565b30330361180c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6118168633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061296792505050565b6000610d3161189886866129a2565b60ff858116601b0360080285901c166118b185876129f8565b612a31565b6117cc85856118c584876129f8565b856123a7565b6000806118d6612a82565b9050306001600160a01b038216036118fc576118f486868686611889565b915050610829565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990611947908990899089908990600401614fcf565b602060405180830381865afa158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f49190614ffe565b6000611992612a82565b9050306001600160a01b038216036119b6576119b186868686866118b6565b610c3d565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090611a039089908990899089908990600401615017565b600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b50505050505050505050565b6060600060606000611a4e85612abc565b9050611a5b878783612adf565b93506000611a6886612b18565b90508015611b3a57611a7a8888612b55565b935066ffffffffffffff841667ffffffffffffffff811115611a9e57611a9e614a15565b6040519080825280601f01601f191660200182016040528015611ac8576020820181803683370190505b5092506020830160005b828160ff161015611b37576000611aea8b8b84612b68565b90506000611b07888460ff166028026038011c64ffffffffff1690565b9050611b168260008387612be8565b611b208185614653565b935050508080611b2f9061505e565b915050611ad2565b50505b505093509350939050565b600080611b5185612cb4565b90969095509350505050565b600060606000611b6c86612cc9565b905060005b8151811015611c3f576000828281518110611b8e57611b8e614f52565b60200260200101519050611bba6001826affffffffffffffffffffff1916612d5290919063ffffffff16565b15611c36576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190611c03908c908c908c9060040161507d565b600060405180830381600087803b158015611c1d57600080fd5b505af1158015611c31573d6000803e3d6000fd5b505050505b50600101611b71565b50611c4c87858888612d70565b909350915060005b8151811015611d22576000828281518110611c7157611c71614f52565b60200260200101519050611c9d6002826affffffffffffffffffffff1916612d5290919063ffffffff16565b15611d19576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611ce6908c908c908c9060040161507d565b600060405180830381600087803b158015611d0057600080fd5b505af1158015611d14573d6000803e3d6000fd5b505050505b50600101611c54565b505094509492505050565b805160208201fd5b6060611d4082612e8b565b8360ff161015611d5d57611d5685858585612e9d565b9050610829565b611d568585611d6b85612e8b565b611d7590876150a5565b611e1c565b611d848282612eca565b610a1b57611d918261265a565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614f68565b611ddb84848484611dd689611eaf565b611e6c565b50505050565b6000611ded8585612b55565b90506000611e0a828560ff166028026038011c64ffffffffff1690565b9050610c3d8686868460008888612f0d565b6060610829611e2c858585612b68565b6000611e5185611e3c8989612b55565b9060ff166028026038011c64ffffffffff1690565b613345565b6117cc8585858585611e678b611eaf565b613368565b611e7581612e8b565b8360ff161015611e9157611e8c85858585856118b6565b6117cc565b6117cc8585611e9f84612e8b565b611ea990876150a5565b85612967565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611efe57507e60030220202000000000000000000000000000000000000000000000000000919050565b610f91611f2b7f746273746f72650000000000000000005461626c657300000000000000000000846136a1565b60206000612a31565b606081831115611f7a576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611f868787612b55565b90506000611fa3828760ff166028026038011c64ffffffffff1690565b90508085101580611fb357508084115b1561200e578081861015611fd157611fcc6001866150be565b611fd3565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b600061201b898989612b68565b905061202a8187888803613345565b9998505050505050505050565b610a1b828261204585611eaf565b6136bd565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b8160008151811061208f5761208f614f52565b602002602001018181525050826001600160a01b031660001b816001815181106120bb576120bb614f52565b60209081029190910101526000610d317f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611889565b6000612106866139bc565b1561211357506001610d31565b8561212057506000610d31565b60008061219c8660008a8a898960405160240161213f9392919061507d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612d70565b91509150816121b057600092505050610d31565b808060200190518101906121c491906150d1565b98975050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061220957612209614f52565b602090810291909101015260006108297f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611889565b60008061225583612e8b565b90508060ff168460ff1610156122795760ff848116601b0360080284901c166118f4565b6118f4868661228884886150a5565b613a37565b600061082984848461229e88611eaf565b612249565b6001600160a01b0381166122dd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613a47565b6001600160a01b031614610a1b57611d918261265a565b61231e827f6fdd1c8000000000000000000000000000000000000000000000000000000000613acb565b61239333600084846040516024016123369190614779565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b033500000000000000000000000000000000000000000000000000000000179052613b26565b50610a1b8282805190602001206001613b37565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361243157837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051612424939291906150f3565b60405180910390a2611ddb565b600061243d85856129a2565b9050600061244a86613c1b565b905060005b815181101561251f57600082828151811061246c5761246c614f52565b602002602001015190506124986004826affffffffffffffffffffff1916612d5290919063ffffffff16565b15612516576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906124e3908b908b908b908b90600401615126565b600060405180830381600087803b1580156124fd57600080fd5b505af1158015612511573d6000803e3d6000fd5b505050505b5060010161244f565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051612554939291906150f3565b60405180910390a261256f828565ffffffffffff1685613c8d565b60005b8151811015610ed057600082828151811061258f5761258f614f52565b602002602001015190506125bb6008826affffffffffffffffffffff1916612d5290919063ffffffff16565b15612639576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612606908b908b908b908b90600401615126565b600060405180830381600087803b15801561262057600080fd5b505af1158015612634573d6000803e3d6000fd5b505050505b50600101612572565b610c3d8686868686866126558d8d612b55565b612f0d565b606081601081901b600061266d83613ca3565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156126c8576126c37fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613cba565b6126ff565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156127355761273083613cba565b61276c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161277e9392919061515f565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006109177f7462776f726c64000000000000000000496e69744d6f64756c654164647265738383630500400560da1b6118cb565b604080516000808252602082018352606084901b6bffffffffffffffffffffffff19169282019290925290610a1b907f7462776f726c64000000000000000000496e69744d6f64756c65416464726573908390605482016109fe565b606060006060612851858561284c88611eaf565b611a3d565b9250925092509250925092565b606061082984848461286f88611eaf565b611d35565b600061287f82613d5e565b905061288a82613df0565b6128e35781826040516020016128a291815260200190565b60408051601f19818403018152908290527f41e713ad00000000000000000000000000000000000000000000000000000000825261029092916004016151ed565b919050565b60006128f48585612b55565b90506000612911828560ff166028026038011c64ffffffffff1690565b9050610c3d86868661292a8764ffffffffff87166150be565b604080516000815260208101909152889088612f0d565b600061294c82613e8d565b9050806128e35781826040516020016128a291815260200190565b60006129738585612b55565b90506000612990828560ff166028026038011c64ffffffffff1690565b9050610c3d8686866000858888612f0d565b600082826040516020016129b7929190615206565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015612a2957612a1f60ff601b83900360080287901c1683614653565b91506001016129fd565b509392505050565b600060208210612a5757602082048401935060208281612a5357612a53615242565b0691505b508254600882021b602082900380841115612a29576001850154600882021c82179150509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806128e3573391505090565b60006008612acc600260206150be565b612ad69190615258565b9190911c919050565b606081600003612afe5750604080516020810190915260008152610b1b565b6000612b0a85856129a2565b9050610d3181600085613345565b60006008600180612b2b600260206150be565b612b3591906150be565b612b3f91906150be565b612b499190615258565b8260ff911c1692915050565b6000610b1b612b648484613f1f565b5490565b60008383604051602001612b7d929190615206565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612c6f5760208310612c1257602083048401935060208381612c0e57612c0e615242565b0692505b8215612c6f576020839003600081841015612c355750600019600884021c612c3f565b50600019600882021c5b8554600886021b818451168219821617845250818411612c60575050611ddb565b50600194909401939182900391015b5b60208210612c915783548152600190930192601f1990910190602001612c70565b8115611ddb576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612d0357612d03614f52565b60209081029190910101526000612d3b7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611e1c565b9050610829612d4d8260008451613f75565b614003565b60008160ff1682612d638560581c90565b1660ff1614905092915050565b60006060600080612d8086614014565b90925090506001600160a01b038216612dd15785612d9d8761265a565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016102909291906151ed565b80612de057612de08689611d7a565b8615612e2c577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612e19826107b0565b9050612e298261025f8b84614653565b50505b6000612e388760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612e7057612e6b888884886140b8565b612e7c565b612e7c88888488614130565b90999098509650505050505050565b600060086001612b35600260206150be565b6060610d31612eac86866129a2565b612eb684866129f8565b60ff868116601b0360080286901c16613345565b6000612efd616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783614191565b80610b1b5750610b1b8383614191565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612fcd577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612f8b91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261029093929160040161526f565b6000612fe8828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361300191906150be565b61300b9190614653565b905080821415801561302d57508161302386886152b0565b64ffffffffff1614155b1561307d576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff1611156130ce576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b60006130db84898461425a565b905060006130e88b613c1b565b905060005b81518110156131b357600082828151811061310a5761310a614f52565b602002602001015190506131366010826affffffffffffffffffffff1916612d5290919063ffffffff16565b156131aa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b815260040161317797969594939291906152d5565b600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505050505b506001016130ed565b5064ffffffffff881660005b8a60ff168160ff1610156131f2576131e6878260ff166028026038011c64ffffffffff1690565b909101906001016131bf565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161322b959493929190615333565b60405180910390a25082841461324c5760006132478c8c613f1f565b839055505b60006132598c8c8c612b68565b905061326d818a64ffffffffff1689613c8d565b5060005b815181101561333757600082828151811061328e5761328e614f52565b602002602001015190506132ba6020826affffffffffffffffffffff1916612d5290919063ffffffff16565b1561332e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016132fb97969594939291906152d5565b600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b505050505b50600101613271565b505050505050505050505050565b60405160208101601f19603f8484010116604052828252612a2985858584612be8565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036133f457857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516133e79493929190615379565b60405180910390a2610c3d565b60006133ff87613c1b565b905060005b81518110156134d857600082828151811061342157613421614f52565b6020026020010151905061344d6001826affffffffffffffffffffff1916612d5290919063ffffffff16565b156134cf576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061349c908c908c908c908c908c908c906004016153b8565b600060405180830381600087803b1580156134b657600080fd5b505af11580156134ca573d6000803e3d6000fd5b505050505b50600101613404565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98787878760405161350f9493929190615379565b60405180910390a2600061352388886129a2565b9050600060208701905061353b826000895184614328565b600061354685612b18565b11156135ca5760006135588a8a613f1f565b878155905060208601915060008060005b61357288612b18565b8160ff1610156135c5576135878d8d83612b68565b92506135a28a8260ff166028026038011c64ffffffffff1690565b91506135b18360008488614328565b6135bb8286614653565b9450600101613569565b505050505b60005b8351811015611a315760008482815181106135ea576135ea614f52565b602002602001015190506136166002826affffffffffffffffffffff1916612d5290919063ffffffff16565b15613698576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613665908e908e908e908e908e908e906004016153b8565b600060405180830381600087803b15801561367f57600080fd5b505af1158015613693573d6000803e3d6000fd5b505050505b506001016135cd565b60408051602081018490529081018290526000906060016129b7565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361374357827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516137369190615411565b60405180910390a2505050565b600061374e84613c1b565b905060005b815181101561382157600082828151811061377057613770614f52565b6020026020010151905061379c6040826affffffffffffffffffffff1916612d5290919063ffffffff16565b15613818576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906137e590899089908990600401615424565b600060405180830381600087803b1580156137ff57600080fd5b505af1158015613813573d6000803e3d6000fd5b505050505b50600101613753565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516138529190615411565b60405180910390a2600061386685856129a2565b90506138bf81600061387786612abc565b67ffffffffffffffff81111561388f5761388f614a15565b6040519080825280601f01601f1916602001820160405280156138b9576020820181803683370190505b50613c8d565b60006138ca84612b18565b11156138eb5760006138dc8686613f1f565b90506138e98160206143e7565b505b60005b8251811015610c3d57600083828151811061390b5761390b614f52565b602002602001015190506139376080826affffffffffffffffffffff1916612d5290919063ffffffff16565b156139b3576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613980908a908a908a90600401615424565b600060405180830381600087803b15801561399a57600080fd5b505af11580156139ae573d6000803e3d6000fd5b505050505b506001016138ee565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052613a2f90614616565b909114919050565b600061082982611e3c8686612b55565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613a8057613a80614f52565b60209081029190910101526000613ac07f7462776f726c640000000000000000004e616d6573706163654f776e657200008383630500400560da1b611889565b60601c949350505050565b613ad58282614424565b610a1b576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610b3387878787614130565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110613b7857613b78614f52565b6020026020010181815250508281600181518110613b9857613b98614f52565b602002602001018181525050611ddb7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b82600085604051602001613be691151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006118b6565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613c5557613c55614f52565b60209081029190910101526000612d3b7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611e1c565b6108cd83838351613c9e8560200190565b614328565b6000613cb160706010614653565b9190911b919050565b606060005b6010811015613d1f577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613d1f57600101613cbf565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610829565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613d9757613d97614f52565b602090810291909101015260006108297f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611889565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613e2957613e29614f52565b60209081029190910101526000613e817f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611889565b90506108298160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ec657613ec6614f52565b602090810291909101015260006108297f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611889565b60008282604051602001613f34929190615206565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613f855750835182115b15613fc2578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102909392919061544d565b60208401613fd08482614653565b90506000613fde85856150be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610b1b8360156000614440565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061404e5761404e614f52565b6020908102919091010152600080806140a77f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000611a3d565b925092509250610ae28383836144bb565b60006060836001600160a01b031660006140d38589896144c7565b6040516140e09190615472565b60006040518083038185875af1925050503d806000811461411d576040519150601f19603f3d011682016040523d82523d6000602084013e614122565b606091505b509097909650945050505050565b60006060836001600160a01b03166141498488886144c7565b6040516141569190615472565b600060405180830381855af49150503d806000811461411d576040519150601f19603f3d011682016040523d82523d6000602084013e614122565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106141ca576141ca614f52565b602002602001018181525050826001600160a01b031660001b816001815181106141f6576141f6614f52565b6020908102919091010152600061424e7f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611889565b9050610d318160f81c90565b600064ffffffffff82111561429e576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106142d057808503820191506142d8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156143a257602083106143525760208304840193506020838161434e5761434e615242565b0692505b82156143a25760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614393575050611ddb565b50600194909401939182900391015b5b602082106143c45780518455600190930192601f19909101906020016143a3565b8115611ddb576000600019600884021c8554835182191691161785555050505050565b600060206143f683601f614653565b614400919061548e565b61440a9084614653565b90505b808310156108cd576000835560018301925061440d565b600061442f836144f6565b8015610b1b5750610b1b8383614542565b6060600061444e8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161447457614474615242565b04905060405193506020840160208202810160405281855260005b828110156144af578451871c82529387019360209091019060010161448f565b50505050509392505050565b600080611b51856145fa565b60608383836040516020016144de939291906154b0565b60405160208183030381529060405290509392505050565b6000614522827f01ffc9a700000000000000000000000000000000000000000000000000000000614542565b8015610f91575061453b826001600160e01b0319614542565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d915060005190508280156145e3575060208210155b80156145ef5750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612cc2565b80516020808301519190811015614637576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f9157610f9161463d565b60008083601f84011261467857600080fd5b50813567ffffffffffffffff81111561469057600080fd5b6020830191508360208260051b85010111156146ab57600080fd5b9250929050565b803560ff811681146128e357600080fd5b6000806000806000608086880312156146db57600080fd5b85359450602086013567ffffffffffffffff8111156146f957600080fd5b61470588828901614666565b90955093506147189050604087016146b2565b949793965091946060013592915050565b60005b8381101561474457818101518382015260200161472c565b50506000910152565b60008151808452614765816020860160208601614729565b601f01601f19169290920160200192915050565b602081526000610b1b602083018461474d565b60008083601f84011261479e57600080fd5b50813567ffffffffffffffff8111156147b657600080fd5b6020830191508360208285010111156146ab57600080fd5b600080600080600080608087890312156147e757600080fd5b86359550602087013567ffffffffffffffff8082111561480657600080fd5b6148128a838b01614666565b909750955085915061482660408a016146b2565b9450606089013591508082111561483c57600080fd5b5061484989828a0161478c565b979a9699509497509295939492505050565b6000806000806060858703121561487157600080fd5b84359350602085013567ffffffffffffffff81111561488f57600080fd5b61489b87828801614666565b90945092506148ae9050604086016146b2565b905092959194509250565b60008060008060008060008060a0898b0312156148d557600080fd5b88359750602089013567ffffffffffffffff808211156148f457600080fd5b6149008c838d01614666565b909950975060408b013591508082111561491957600080fd5b6149258c838d0161478c565b909750955060608b0135945060808b013591508082111561494557600080fd5b506149528b828c0161478c565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561498157600080fd5b87359650602088013567ffffffffffffffff808211156149a057600080fd5b6149ac8b838c01614666565b90985096508691506149c060408b016146b2565b955060608a01359150808211156149d657600080fd5b506149e38a828b0161478c565b989b979a50959894979596608090950135949350505050565b600060208284031215614a0e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614a5457614a54614a15565b604052919050565b600082601f830112614a6d57600080fd5b813567ffffffffffffffff811115614a8757614a87614a15565b614a9a6020601f19601f84011601614a2b565b818152846020838601011115614aaf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614adf57600080fd5b82359150602083013567ffffffffffffffff811115614afd57600080fd5b614b0985828601614a5c565b9150509250929050565b60008060008060608587031215614b2957600080fd5b84359350602085013567ffffffffffffffff811115614b4757600080fd5b614b5387828801614666565b9598909750949560400135949350505050565b606081526000614b79606083018661474d565b8460208401528281036040840152610b45818561474d565b600082601f830112614ba257600080fd5b8135602067ffffffffffffffff821115614bbe57614bbe614a15565b8160051b614bcd828201614a2b565b9283528481018201928281019087851115614be757600080fd5b83870192505b848310156145ef57823582529183019190830190614bed565b600080600080600060a08688031215614c1e57600080fd5b85359450602086013567ffffffffffffffff811115614c3c57600080fd5b614c4888828901614b91565b945050614c57604087016146b2565b94979396509394606081013594506080013592915050565b600080600060408486031215614c8457600080fd5b83359250602084013567ffffffffffffffff811115614ca257600080fd5b614cae86828701614666565b9497909650939450505050565b6001600160a01b03811681146116b257600080fd5b600080600060608486031215614ce557600080fd5b8335614cf081614cbb565b925060208401359150604084013567ffffffffffffffff811115614d1357600080fd5b614d1f86828701614a5c565b9150509250925092565b60008060008060808587031215614d3f57600080fd5b84359350602085013567ffffffffffffffff811115614d5d57600080fd5b614d6987828801614b91565b935050614d78604086016146b2565b9396929550929360600135925050565b600080600060608486031215614d9d57600080fd5b83359250602084013567ffffffffffffffff811115614dbb57600080fd5b614dc786828701614b91565b925050614dd6604085016146b2565b90509250925092565b60008060408385031215614df257600080fd5b8235614dfd81614cbb565b9150602083013567ffffffffffffffff811115614afd57600080fd5b60008060008060008060808789031215614e3257600080fd5b86359550602087013567ffffffffffffffff80821115614e5157600080fd5b614e5d8a838b01614666565b90975095506040890135915065ffffffffffff82168214614e7d57600080fd5b9093506060880135908082111561483c57600080fd5b803564ffffffffff811681146128e357600080fd5b60008060008060008060008060c0898b031215614ec457600080fd5b88359750602089013567ffffffffffffffff80821115614ee357600080fd5b614eef8c838d01614666565b9099509750879150614f0360408c016146b2565b9650614f1160608c01614e93565b9550614f1f60808c01614e93565b945060a08b013591508082111561494557600080fd5b600060208284031215614f4757600080fd5b8135610b1b81614cbb565b634e487b7160e01b600052603260045260246000fd5b604081526000614f7b604083018561474d565b90506001600160a01b03831660208301529392505050565b60008151808452602080850194506020840160005b83811015614fc457815187529582019590820190600101614fa8565b509495945050505050565b848152608060208201526000614fe86080830186614f93565b60ff949094166040830152506060015292915050565b60006020828403121561501057600080fd5b5051919050565b85815260a06020820152600061503060a0830187614f93565b60ff86166040840152828103606084015261504b818661474d565b9150508260808301529695505050505050565b600060ff821660ff81036150745761507461463d565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610d31606083018461474d565b60ff8281168282160390811115610f9157610f9161463d565b81810381811115610f9157610f9161463d565b6000602082840312156150e357600080fd5b81518015158114610b1b57600080fd5b6060815260006151066060830186614f93565b65ffffffffffff851660208401528281036040840152610b45818561474d565b84815260806020820152600061513f6080830186614f93565b65ffffffffffff8516604084015282810360608401526145ef818561474d565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151c0816003860160208901614729565b8084019050816003820152845191506151e0826004830160208801614729565b0160040195945050505050565b828152604060208201526000610829604083018461474d565b8281526000602080830184516020860160005b8281101561523557815184529284019290840190600101615219565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610f9157610f9161463d565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610d31606083018461474d565b64ffffffffff8181168382160190808211156152ce576152ce61463d565b5092915050565b87815260e0602082015260006152ee60e0830189614f93565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c0840152615325818561474d565b9a9950505050505050505050565b60a08152600061534660a0830188614f93565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526121c4818561474d565b60808152600061538c6080830187614f93565b828103602084015261539e818761474d565b905084604084015282810360608401526145ef818561474d565b86815260c0602082015260006153d160c0830188614f93565b82810360408401526153e3818861474d565b905085606084015282810360808401526153fd818661474d565b9150508260a0830152979650505050505050565b602081526000610b1b6020830184614f93565b83815260606020820152600061543d6060830185614f93565b9050826040830152949350505050565b606081526000615460606083018661474d565b60208301949094525060400152919050565b60008251615484818460208701614729565b9190910192915050565b6000826154ab57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154c2818460208901614729565b60609490941b6bffffffffffffffffffffffff19169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611d9561003060003960006103420152611d956000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806345ec9354116100765780639081c7581161005b5780639081c7581461014b578063e1af802c14610153578063ef5d6bbb1461015b57600080fd5b806345ec9354146101255780638d53b2081461013857600080fd5b806301ffc9a7146100a8578063119df25f146100d0578063219adc2e146100fd57806340554c3a14610112575b600080fd5b6100bb6100b636600461191b565b61016e565b60405190151581526020015b60405180910390f35b6100d8610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b61011061010b36600461195d565b610216565b005b610110610120366004611976565b61025e565b604051601f1936013581526020016100c7565b610110610146366004611976565b61028b565b6100d86102a9565b6100d86102b3565b610110610169366004611976565b6102bd565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000148061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006102116102f9565b905090565b61021e61032b565b6102278161039c565b6102308161044e565b6102418161023c610207565b610499565b61024a81610554565b61025b81610256610207565b6105c7565b50565b61026661032b565b61026f8261044e565b61027b8261023c610207565b6102878282600161068f565b5050565b61029361032b565b61029f8261023c610207565b61028782826105c7565b6000610211610786565b6000610211610790565b6102c561032b565b6102ce8261039c565b6102d78261044e565b6102e38261023c610207565b6102ed828261079a565b61027b82610256610207565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103285750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361039a576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000821617811461025b577f6e73000000000000000000000000000000000000000000000000000000000000816104108361085f565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161044593929190611a0f565b60405180910390fd5b6104578161099c565b61025b57806104658261085f565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610445929190611a50565b73ffffffffffffffffffffffffffffffffffffffff81166104fb7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a41565b73ffffffffffffffffffffffffffffffffffffffff16146102875761051f8261085f565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610445929190611a69565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061058a5761058a611ab7565b60209081029190910101526102877f7462776f726c640000000000000000004e616d6573706163654f776e6572000082630500400560da1b610ac5565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105fc576105fc611ab7565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061063557610635611ab7565b602090810291909101015261068a7f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ac5565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106c4576106c4611ab7565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106fd576106fd611ab7565b6020026020010181815250506107807f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161074b91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610dcc565b50505050565b6000610211610de8565b6000610211610e37565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107d0576107d0611ab7565b60200260200101818152505061068a7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610842919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f19818403018152919052630500400560da1b610dcc565b606081601081901b600061087283610e83565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108cd576108c87fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e9a565b610904565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561093a5761093583610e9a565b610971565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161098393929190611acd565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109d5576109d5611ab7565b60209081029190910101526000610a2d7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f3e565b9050610a398160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7a57610a7a611ab7565b60209081029190910101526000610aba7f7462776f726c640000000000000000004e616d6573706163654f776e657200008383630500400560da1b610f3e565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b4b57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b3e9190611b97565b60405180910390a2505050565b6000610b5684610f74565b905060005b8151811015610c29576000828281518110610b7857610b78611ab7565b60200260200101519050610ba46040826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15610c20576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bed90899089908990600401611baa565b600060405180830381600087803b158015610c0757600080fd5b505af1158015610c1b573d6000803e3d6000fd5b505050505b50600101610b5b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c5a9190611b97565b60405180910390a26000610c6e858561101b565b9050610cc7816000610c7f86611071565b67ffffffffffffffff811115610c9757610c97611aa1565b6040519080825280601f01601f191660200182016040528015610cc1576020820181803683370190505b50611094565b6000610cd2846110aa565b1115610cf3576000610ce486866110e7565b9050610cf181602061113d565b505b60005b8251811015610dc4576000838281518110610d1357610d13611ab7565b60200260200101519050610d3f6080826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15610dbb576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d88908a908a908a90600401611baa565b600060405180830381600087803b158015610da257600080fd5b505af1158015610db6573d6000803e3d6000fd5b505050505b50600101610cf6565b505050505050565b610de18585610ddb848761117a565b856111b3565b5050505050565b604080516000808252602082019092526000610e2d7f7462776f726c640000000000000000005472616e73616374696f6e436f6e74658383630500400560da1b611457565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e7e573391505090565b919050565b6000610e9160706010611be9565b9190911b919050565b606060005b6010811015610eff577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610eff57600101610e9f565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a39565b6000610f6b610f4d868661101b565b60ff858116601b0360080285901c16610f66858761117a565b61152e565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fae57610fae611ab7565b60209081029190910101526000610fe67f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361157f565b9050610a39610ff882600084516115b9565b611647565b60008160ff168261100e8560581c90565b1660ff1614905092915050565b60008282604051602001611030929190611bfc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861108160026020611c38565b61108b9190611c4b565b9190911c919050565b61068a838383516110a58560200190565b61165f565b600060086001806110bd60026020611c38565b6110c79190611c38565b6110d19190611c38565b6110db9190611c4b565b8260ff911c1692915050565b600082826040516020016110fc929190611bfc565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061114c83601f611be9565b6111569190611c78565b6111609084611be9565b90505b8083101561068a5760008355600183019250611163565b600080805b8360ff168110156111ab576111a160ff601b83900360080287901c1683611be9565b915060010161117f565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361123d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161123093929190611c9a565b60405180910390a2610780565b6000611249858561101b565b9050600061125686610f74565b905060005b815181101561132b57600082828151811061127857611278611ab7565b602002602001015190506112a46004826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15611322576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112ef908b908b908b908b90600401611cd7565b600060405180830381600087803b15801561130957600080fd5b505af115801561131d573d6000803e3d6000fd5b505050505b5060010161125b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161136093929190611c9a565b60405180910390a261137b828565ffffffffffff1685611094565b60005b815181101561144e57600082828151811061139b5761139b611ab7565b602002602001015190506113c76008826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15611445576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611412908b908b908b908b90600401611cd7565b600060405180830381600087803b15801561142c57600080fd5b505af1158015611440573d6000803e3d6000fd5b505050505b5060010161137e565b50505050505050565b600080611462610e37565b90503073ffffffffffffffffffffffffffffffffffffffff8216036114955761148d86868686610f3e565b915050610a39565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906114ed908990899089908990600401611d1b565b602060405180830381865afa15801561150a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190611d4a565b6000602082106115545760208204840193506020828161155057611550611c62565b0691505b508254600882021b6020829003808411156111ab576001850154600882021c82179150509392505050565b6060610a3961158f85858561171e565b60006115b48561159f898961179e565b9060ff166028026038011c64ffffffffff1690565b6117b1565b6000818311806115c95750835182115b15611606578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161044593929190611d63565b602084016116148482611be9565b905060006116228585611c38565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061165883601560006117d4565b9392505050565b82156116d957602083106116895760208304840193506020838161168557611685611c62565b0692505b82156116d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116116ca575050610780565b50600194909401939182900391015b5b602082106116fb5780518455600190930192601f19909101906020016116da565b8115610780576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611733929190611bfc565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006116586117ad84846110e7565b5490565b60405160208101601f19603f84840101166040528282526111ab8585858461184f565b606060006117e28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161180857611808611c62565b04905060405193506020840160208202810160405281855260005b82811015611843578451871c825293870193602090910190600101611823565b50505050509392505050565b82156118d657602083106118795760208304840193506020838161187557611875611c62565b0692505b82156118d657602083900360008184101561189c5750600019600884021c6118a6565b50600019600882021c5b8554600886021b8184511682198216178452508184116118c7575050610780565b50600194909401939182900391015b5b602082106118f85783548152600190930192601f19909101906020016118d7565b8115610780576000600019600884021c8251865482191691161782525050505050565b60006020828403121561192d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461165857600080fd5b60006020828403121561196f57600080fd5b5035919050565b6000806040838503121561198957600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146119b457600080fd5b809150509250929050565b60005b838110156119da5781810151838201526020016119c2565b50506000910152565b600081518084526119fb8160208601602086016119bf565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f6b60608301846119e3565b828152604060208201526000610a3960408301846119e3565b604081526000611a7c60408301856119e3565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611b2e8160038601602089016119bf565b808401905081600382015284519150611b4e8260048301602088016119bf565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611b8c57815187529582019590820190600101611b70565b509495945050505050565b6020815260006116586020830184611b5b565b838152606060208201526000611bc36060830185611b5b565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561020157610201611bd3565b8281526000602080830184516020860160005b82811015611c2b57815184529284019290840190600101611c0f565b5091979650505050505050565b8181038181111561020157610201611bd3565b808202811582820484141761020157610201611bd3565b634e487b7160e01b600052601260045260246000fd5b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611cad6060830186611b5b565b65ffffffffffff851660208401528281036040840152611ccd81856119e3565b9695505050505050565b848152608060208201526000611cf06080830186611b5b565b65ffffffffffff851660408401528281036060840152611d1081856119e3565b979650505050505050565b848152608060208201526000611d346080830186611b5b565b60ff949094166040830152506060015292915050565b600060208284031215611d5c57600080fd5b5051919050565b606081526000611d7660608301866119e3565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161190c61003060003960006103d0015261190c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780639081c758146100ff578063c9c85a6014610107578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806345afd199146100d7575b600080fd5b6100956100903660046114b7565b610122565b60405190151581526020015b60405180910390f35b6100b26101bb565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046114f9565b6101ca565b005b604051601f1936013581526020016100a1565b6100b26102c7565b6100ea61011536600461154a565b6102d1565b6100b261037d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f0000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101c5610387565b905090565b6101d26103b9565b6101e3836101de6101bb565b61042a565b60006101ee8461047a565b905080821115610239576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b61024c8461024784846115a5565b610513565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d80600081146102a7576040519150601f19603f3d011682016040523d82523d6000602084013e6102ac565b606091505b5091509150816102bf576102bf816105cc565b505050505050565b60006101c56105d4565b6102d96103b9565b6102e2836105de565b6102eb826105de565b6102f48261068a565b610300836101de6101bb565b600061030b8461047a565b905080821115610351576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610230565b61035f8461024784846115a5565b610377838361036d8661047a565b61024791906115b8565b50505050565b60006101c56106d5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103b65750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610428576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61043482826106df565b6104765761044182610744565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161023092919061161b565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104b3576104b3611653565b6020908102919091010152600061050b7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e20010020000000000000000000000000000000000000000000000000000000610881565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061054957610549611653565b6020026020010181815250506105c77f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161059291815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108b7565b505050565b805160208201fd5b60006101c56108d3565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610687577f6e730000000000000000000000000000000000000000000000000000000000008161065283610744565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161023093929190611682565b50565b6106938161093a565b61068757806106a182610744565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016102309291906116c3565b60006101c56109d7565b600061072d7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610a23565b8061073d575061073d8383610a23565b9392505050565b606081601081901b600061075783610af9565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156107b2576107ad7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610b10565b6107e9565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561081f5761081a83610b10565b610856565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610868939291906116dc565b6040516020818303038152906040529350505050919050565b60006108ae6108908686610bb4565b60ff858116601b0360080285901c166108a98587610c0a565b610c43565b95945050505050565b6108cc85856108c68487610c0a565b85610c94565b5050505050565b6040805160008082526020820190925260006109307f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610f38565b60601c9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061097357610973611653565b602090810291909101015260006109cb7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610881565b905061050b8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610a1e573391505090565b919050565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610a5c57610a5c611653565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a9557610a95611653565b60209081029190910101526000610aed7f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000610881565b90506108ae8160f81c90565b6000610b07607060106115b8565b9190911b919050565b606060005b6010811015610b75577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610b7557600101610b15565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061050b565b60008282604051602001610bc992919061176a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c3b57610c3160ff601b83900360080287901c16836115b8565b9150600101610c0f565b509392505050565b600060208210610c6957602082048401935060208281610c6557610c656117a6565b0691505b508254600882021b602082900380841115610c3b576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d1e57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d1193929190611811565b60405180910390a2610377565b6000610d2a8585610bb4565b90506000610d378661100f565b905060005b8151811015610e0c576000828281518110610d5957610d59611653565b60200260200101519050610d856004826affffffffffffffffffffff191661109890919063ffffffff16565b15610e03576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610dd0908b908b908b908b9060040161184e565b600060405180830381600087803b158015610dea57600080fd5b505af1158015610dfe573d6000803e3d6000fd5b505050505b50600101610d3c565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e4193929190611811565b60405180910390a2610e5c828565ffffffffffff16856110b6565b60005b8151811015610f2f576000828281518110610e7c57610e7c611653565b60200260200101519050610ea86008826affffffffffffffffffffff191661109890919063ffffffff16565b15610f26576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610ef3908b908b908b908b9060040161184e565b600060405180830381600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050505b50600101610e5f565b50505050505050565b600080610f436109d7565b90503073ffffffffffffffffffffffffffffffffffffffff821603610f7657610f6e86868686610881565b91505061050b565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990610fce908990899089908990600401611892565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e91906118c1565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104957611049611653565b602090810291909101015260006110817f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836110cc565b905061050b6110938260008451611106565b611194565b60008160ff16826110a98560581c90565b1660ff1614905092915050565b6105c7838383516110c78560200190565b6111a5565b606061050b6110dc858585611264565b6000611101856110ec89896112e4565b9060ff166028026038011c64ffffffffff1690565b6112f7565b6000818311806111165750835182115b15611153578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610230939291906118da565b6020840161116184826115b8565b9050600061116f85856115a5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061073d836015600061131a565b821561121f57602083106111cf576020830484019350602083816111cb576111cb6117a6565b0692505b821561121f5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611210575050610377565b50600194909401939182900391015b5b602082106112415780518455600190930192601f1990910190602001611220565b8115610377576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161127992919061176a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061073d6112f38484611395565b5490565b60405160208101601f19603f8484010116604052828252610c3b858585846113eb565b606060006113288560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161134e5761134e6117a6565b04905060405193506020840160208202810160405281855260005b82811015611389578451871c825293870193602090910190600101611369565b50505050509392505050565b600082826040516020016113aa92919061176a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215611472576020831061141557602083048401935060208381611411576114116117a6565b0692505b82156114725760208390036000818410156114385750600019600884021c611442565b50600019600882021c5b8554600886021b818451168219821617845250818411611463575050610377565b50600194909401939182900391015b5b602082106114945783548152600190930192601f1990910190602001611473565b8115610377576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461073d57600080fd5b60008060006060848603121561150e57600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff8116811461153957600080fd5b929592945050506040919091013590565b60008060006060848603121561155f57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101b5576101b5611576565b808201808211156101b5576101b5611576565b60005b838110156115e65781810151838201526020016115ce565b50506000910152565b600081518084526116078160208601602086016115cb565b601f01601f19169290920160200192915050565b60408152600061162e60408301856115ef565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108ae60608301846115ef565b82815260406020820152600061050b60408301846115ef565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161173d8160038601602089016115cb565b80840190508160038201528451915061175d8260048301602088016115cb565b0160040195945050505050565b8281526000602080830184516020860160005b828110156117995781518452928401929084019060010161177d565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b83811015611806578151875295820195908201906001016117ea565b509495945050505050565b60608152600061182460608301866117d5565b65ffffffffffff85166020840152828103604084015261184481856115ef565b9695505050505050565b84815260806020820152600061186760808301866117d5565b65ffffffffffff85166040840152828103606084015261188781856115ef565b979650505050505050565b8481526080602082015260006118ab60808301866117d5565b60ff949094166040830152506060015292915050565b6000602082840312156118d357600080fd5b5051919050565b6060815260006118ed60608301866115ef565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610e3c61003060003960006106180152610e3c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638fc8cf7e1161005b5780638fc8cf7e146100ea5780639081c7581461010a578063ce5e8dd914610112578063e1af802c1461012557600080fd5b806301ffc9a714610082578063119df25f146100aa57806345ec9354146100d7575b600080fd5b610095610090366004610936565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b604051601f1936013581526020016100a1565b6100fd6100f83660046109cb565b6101d5565b6040516100a19190610a31565b6100b26103e7565b6100fd6101203660046109cb565b6103f1565b6100b26105c5565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f0000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d06105cf565b905090565b60606101df610601565b60006101e96105c5565b90508267ffffffffffffffff81111561020457610204610ac9565b60405190808252806020026020018201604052801561023757816020015b60608152602001906001900390816102225790505b50915060005b838110156103df5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061027757610277610adf565b90506020028101906102899190610af5565b610297906020810190610b33565b8a8a888181106102a9576102a9610adf565b90506020028101906102bb9190610af5565b602001358b8b898181106102d1576102d1610adf565b90506020028101906102e39190610af5565b6102f1906040810190610b69565b6040516024016103049493929190610bf9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103519250610c39565b600060405180830381855af49150503d806000811461038c576040519150601f19603f3d011682016040523d82523d6000602084013e610391565b606091505b5091509150816103a4576103a481610672565b808060200190518101906103b89190610c4b565b8584815181106103ca576103ca610adf565b6020908102919091010152505060010161023d565b505092915050565b60006101d061067a565b60606103fb610601565b60006104056105c5565b90508267ffffffffffffffff81111561042057610420610ac9565b60405190808252806020026020018201604052801561045357816020015b606081526020019060019003908161043e5790505b50915060005b838110156103df5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061049357610493610adf565b90506020028101906104a59190610cf8565b358a8a888181106104b8576104b8610adf565b90506020028101906104ca9190610cf8565b6104d8906020810190610b69565b6040516024016104ea93929190610d2c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105379250610c39565b600060405180830381855af49150503d8060008114610572576040519150601f19603f3d011682016040523d82523d6000602084013e610577565b606091505b50915091508161058a5761058a81610672565b8080602001905181019061059e9190610c4b565b8584815181106105b0576105b0610adf565b60209081029190910101525050600101610459565b60006101d0610684565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105fe5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610670576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101d061068e565b60006101d06106f5565b6040805160008082526020820190925260006106eb7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610741565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061073c573391505090565b919050565b60008061074c6106f5565b90503073ffffffffffffffffffffffffffffffffffffffff82160361077f5761077786868686610820565b915050610818565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906107d7908990899089908990600401610d46565b602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190610da3565b949350505050565b600061084d61082f8686610856565b60ff858116601b0360080285901c1661084885876108ac565b6108e5565b95945050505050565b6000828260405160200161086b929190610dbc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108dd576108d360ff601b83900360080287901c1683610df8565b91506001016108b1565b509392505050565b60006020821061090b5760208204840193506020828161090757610907610e19565b0691505b508254600882021b6020829003808411156108dd576001850154600882021c82179150509392505050565b60006020828403121561094857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461097857600080fd5b9392505050565b60008083601f84011261099157600080fd5b50813567ffffffffffffffff8111156109a957600080fd5b6020830191508360208260051b85010111156109c457600080fd5b9250929050565b600080602083850312156109de57600080fd5b823567ffffffffffffffff8111156109f557600080fd5b610a018582860161097f565b90969095509350505050565b60005b83811015610a28578181015183820152602001610a10565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610abc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610a9d818989018a8501610a0d565b601f01601f191695909501860194509285019290850190600101610a58565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610b2957600080fd5b9190910192915050565b600060208284031215610b4557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461097857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9e57600080fd5b83018035915067ffffffffffffffff821115610bb957600080fd5b6020019150368190038213156109c457600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610c2f606083018486610bce565b9695505050505050565b60008251610b29818460208701610a0d565b600060208284031215610c5d57600080fd5b815167ffffffffffffffff80821115610c7557600080fd5b818401915084601f830112610c8957600080fd5b815181811115610c9b57610c9b610ac9565b604051601f8201601f19908116603f01168101908382118183101715610cc357610cc3610ac9565b81604052828152876020848701011115610cdc57600080fd5b610ced836020830160208801610a0d565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610b2957600080fd5b83815260406020820152600061084d604083018486610bce565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015610d8957845183529383019391830191600101610d6d565b505060ff9690961660408501525050506060015292915050565b600060208284031215610db557600080fd5b5051919050565b8281526000602080830184516020860160005b82811015610deb57815184529284019290840190600101610dcf565b5091979650505050505050565b808201808211156101c057634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615932620000316000396000610c3501526159326000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063742d6118116100cd578063b29e408911610081578063cdc938c511610066578063cdc938c5146102b8578063d5f8337f146102cb578063e1af802c146102de57600080fd5b8063b29e408914610292578063bfdfaff7146102a557600080fd5b80639081c758116100b25780639081c75814610264578063a92813ad1461026c578063aa66e9c81461027f57600080fd5b8063742d61181461023e5780638da798da1461025157600080fd5b80631d2257ba116101245780633350b6a9116101095780633350b6a91461020557806345ec935414610218578063530f4b601461022b57600080fd5b80631d2257ba146101c657806326d98102146101d957600080fd5b806301ffc9a714610156578063056091291461017e5780630ba51f4914610193578063119df25f146101a6575b600080fd5b610169610164366004614d5b565b6102e6565b60405190151581526020015b60405180910390f35b61019161018c366004614d8b565b61034f565b005b6101916101a1366004614e07565b610376565b6101ae610441565b6040516001600160a01b039091168152602001610175565b6101916101d4366004614f54565b610450565b6101ec6101e7366004614fad565b6104cb565b6040516001600160e01b03199091168152602001610175565b610191610213366004614ff4565b610617565b604051601f193601358152602001610175565b61019161023936600461504c565b610792565b6101ec61024c36600461508a565b6107fe565b61019161025f3660046150d8565b6108c0565b6101ae610982565b61019161027a366004614d8b565b61098c565b61019161028d366004615112565b6109cb565b6101916102a0366004615112565b6109fd565b6101916102b336600461512b565b610a92565b6101916102c6366004615165565b610b47565b6101916102d936600461504c565b610b60565b6101ae610c21565b60006001600160e01b031982167f255f267f00000000000000000000000000000000000000000000000000000000148061034957506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610357610c2b565b61036882610363610441565b610c8f565b6103728282610d08565b5050565b61037e610c2b565b600061038989610d33565b6fffffffffffffffffffffffffffffffff1916036103e857876103ab89610d4a565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103df9291906151d2565b60405180910390fd5b61040b616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e5e565b61041788610363610441565b61043788888888610428888a6151eb565b61043287896151eb565b610ea9565b5050505050505050565b600061044b6112b9565b905090565b610458610c2b565b61046a610463610441565b84846112eb565b610473826113be565b156104c6576000610483836113da565b90506104af817f1a86b55000000000000000000000000000000000000000000000000000000000611476565b6104c36104ba610441565b848460006114d1565b50505b505050565b60006104d5610c2b565b61737960f01b836001600160f01b031916146105305761737960f01b836104fb85610d4a565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103df93929190615271565b61053983610e5e565b61054583610363610441565b600061056e6105548560101b90565b71ffffffffffffffffffffffffffffffffffff1916611500565b90506000818460405160200161058592919061529a565b60405160208183030381529060405290508080519060200120925060006105ab84611586565b905080156105f1576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103df565b84516020860120610603858883611636565b61060d8584611701565b5050505092915050565b61061f610c2b565b61737960f01b836001600160f01b031916146106455761737960f01b836104fb85610d4a565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761066981610e5e565b61067581610363610441565b61069f837f255f267f00000000000000000000000000000000000000000000000000000000611476565b60006106aa85610d33565b6fffffffffffffffffffffffffffffffff1916036106cc57836103ab85610d4a565b60006106d7846117ca565b905080158015906106e85750848114155b1561072a576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103df565b6000610735866113da565b90506001600160a01b0381161561075e5761074f8161184f565b61075983826118ce565b610769565b61076986600161196c565b610774868686611a0d565b61077e8587611ab0565b61078a83866001611b3b565b505050505050565b61079a610c2b565b6107c4827f1873396a00000000000000000000000000000000000000000000000000000000611476565b6107e7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e5e565b6107f383610363610441565b6104c6838383611bea565b6000610808610c2b565b60408051616e7360f01b6020820152600060228201819052603082015261084a9101604051602081830303815290604052610842906152f2565b610363610441565b5081516020830120600061085d82611586565b905080156108a3576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103df565b6108ae828685611636565b6108b88285611701565b509392505050565b6108c8610c2b565b6108f2827f6fdd1c8000000000000000000000000000000000000000000000000000000000611476565b61096e6108fd610441565b600084846040516024016109119190615316565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611cad565b506103728282805190602001206001611cbe565b600061044b611d6d565b610994610c2b565b6109a082610363610441565b6103727f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d77565b6109d3610c2b565b6109dc81611e8a565b6109e581610e5e565b6109f181610363610441565b6109fa81611ebb565b50565b610a05610c2b565b610a0e81611e8a565b610a1781611f26565b610a2081612118565b15610a635780610a2f82610d4a565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103df9291906151d2565b610a6e81600161196c565b610a7f81610a7a610441565b61219d565b6109fa81610a8b610441565b6001611b3b565b610a9a610c2b565b610aa383611e8a565b610aac826113be565b610ae2576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aee83610363610441565b6000610af9836113da565b9050610b25817f1a86b55000000000000000000000000000000000000000000000000000000000611476565b610b2f8484612267565b815115610b41576104c36104ba610441565b50505050565b610b4f610c2b565b6109fa610b5a610441565b826122e6565b610b68610c2b565b61737960f01b836001600160f01b03191614610b8e5761737960f01b836104fb85610d4a565b610bb8827f540fbfa800000000000000000000000000000000000000000000000000000000611476565b610bc183610e5e565b610be4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e5e565b610bf083610363610441565b6104c6836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612388565b600061044b61242d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c8d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610cbc616e7360f01b6dffffffffffffffffffffffffffff60801b851617612437565b6001600160a01b03161461037257610cd382610d4a565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103df929190615329565b6103727f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d77565b6000610d416070601061536a565b9190911b919050565b606081601081901b6000610d5d83610d33565b90508271ffffffffffffffffffffffffffffffffffff19831615610d9e57610d9971ffffffffffffffffffffffffffffffffffff198416611500565b610dd5565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dfc57610df783611500565b610e33565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e459392919061537d565b6040516020818303038152906040529350505050919050565b610e6781612118565b6109fa5780610e7582610d4a565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103df9291906151d2565b613a3160f11b866001600160f01b03191614801590610ed75750611bdd60f21b866001600160f01b03191614155b15610f3857613a3160f11b8687604051602001610ef691815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103df939291600401615271565b610f41856124c8565b610f4c84600161270f565b610f5783600061270f565b60e084901c60e885901c0160ff16825114610fb75760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60e085901c60e886901c0160ff168151146110175760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461108f5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b611098856128ab565b6110a1846128ab565b146110f3576110af856128ab565b6110b8846128ab565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b6110fc856128dd565b611105846128dd565b1461115757611113856128dd565b61111c846128dd565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60005b611163866128ab565b8110156111fe5761118d61117785836128fa565b60c5811115611188576111886153f3565b612922565b6008601b8390030287901c60ff16146111f6576008601b8290030286901c60ff166111bb61117786846128fa565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60010161115a565b5061120886612118565b1561126257858660405160200161122191815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103df92916004016151d2565b6112ae868686868660405160200161127a9190615409565b6040516020818303038152906040528660405160200161129a9190615409565b604051602081830303815290604052612982565b61078a86600161196c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112e85750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061132c5761132c61548b565b602002602001018181525050826001600160a01b031660001b816001815181106113585761135861548b565b602002602001018181525050610b417f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b826000856040516020016113a191815260200190565b60408051601f19818403018152919052630100080160dd1b612a49565b6000811515801561034957506113d382612a5e565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106114135761141361548b565b6020908102919091010152600061146b7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612abe565b60601c949350505050565b6114808282612af4565b610372576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103df565b60606000806114e287878787612b10565b91509150816114f4576114f481612ce0565b9150505b949350505050565b606060005b6010811015611556576fffffffffffffffffffffffffffffffff198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561155657600101611505565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152806114f8565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115de576115de61548b565b602090810291909101015260006114f87f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612abe565b60006116428383612ce8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106116a0576116a061548b565b60209081029190910101526116f87f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612d27565b50505050505050565b6060600061170e8361302d565b9050600061171b8461303d565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106117745761177461548b565b602090810291909101015261078a7f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612d27565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b8160008151811061180f5761180f61548b565b602090810291909101015260006114f87f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612abe565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106118915761189161548b565b60209081029190910101526103727f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613066565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106119035761190361548b565b602002602001018181525050816001600160a01b031660001b8160018151811061192f5761192f61548b565b60209081029190910101526104c67f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613066565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119a2576119a261548b565b6020026020010181815250506104c67f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119f091151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a49565b6000611a198383613332565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a5857611a5861548b565b60209081029190910101526116f87f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612d27565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611af257611af261548b565b6020026020010181815250506104c67f7462776f726c6400000000000000000053797374656d5265676973747279000060001b826000856040516020016113a191815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b7057611b7061548b565b602002602001018181525050826001600160a01b031660001b81600181518110611b9c57611b9c61548b565b602002602001018181525050610b417f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119f091151560f81b815260010190565b613a3160f11b836001600160f01b03191614611c1a57613a3160f11b8384604051602001610ef691815260200190565b611c2383612118565b611c7c578283604051602001611c3b91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103df92916004016151d2565b6104c6836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613362565b60606000806114e287878787613407565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cff57611cff61548b565b6020026020010181815250508281600181518110611d1f57611d1f61548b565b602002602001018181525050610b417f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119f091151560f81b815260010190565b600061044b61347f565b6000611d8384846134e6565b90506000815167ffffffffffffffff811115611da157611da1614e9d565b604051908082528060200260200182016040528015611dca578160200160208202803683370190505b5090506000805b8351811015611e7b57846001600160a01b0316611e15858381518110611df957611df961548b565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e7357838181518110611e3557611e3561548b565b6020026020010151838381518110611e4f57611e4f61548b565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611dd1565b5080825261078a868684613551565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109fa57616e7360f01b816104fb83610d4a565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ef157611ef161548b565b60209081029190910101526103727f7462776f726c640000000000000000004e616d65737061636544656c65676174826135a8565b6000611f328260101b90565b90506000611f5471ffffffffffffffffffffffffffffffffffff198316611500565b80519091508015610b4157611f7682611f6e6001846154a1565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003612007576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103df565b60005b6120156001836154a1565b8110156104c357602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f000000000000000000000000000000000000000000000000000000000000001480156120c2575061207d83611f6e83600161536a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b15612110576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103df565b60010161200a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106121515761215161548b565b602090810291909101015260006121917f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612abe565b90506114f88160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121d3576121d361548b565b6020026020010181815250506104c67f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001612232919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a49565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061229d5761229d61548b565b6020026020010181815250506104c67f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b826000856040516020016113a191815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106123275761232761548b565b602002602001018181525050816001600160a01b031660001b816001815181106123535761235361548b565b60209081029190910101526104c67f7462776f726c640000000000000000005573657244656c65676174696f6e436f826135a8565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106123be576123be61548b565b6020026020010181815250506104c67f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b8260008560405160200161241991906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613643565b600061044b6136f4565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106124705761247061548b565b6020908102919091010152600061146b7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612abe565b806124ff576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061250a826128dd565b90506005811115612551576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103df565b600061255c836128ab565b9050600061256a838361536a565b9050601c8111156125b1576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103df565b6000805b8381101561265c5760ff601b82900360080287901c166000819003612609576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b6020811115612647576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b612651818461536a565b9250506001016125b5565b5061266685613733565b81146126b25761267585613733565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103df565b825b601c81101561078a5760ff601b82900360080287901c168015612706576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b506001016126b4565b8015801561271b575081155b1561273c57604051635318beb960e01b8152600060048201526024016103df565b6000612747836128dd565b9050600581111561276e57604051635318beb960e01b8152600481018290526024016103df565b6000612779846128ab565b90506000612787838361536a565b9050601c8111156127ae57604051635318beb960e01b8152600481018290526024016103df565b6000805b8381101561281a5760006127c961117789846128fa565b905080600003612805576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61280f818461536a565b9250506001016127b2565b5061282486613733565b811461284f5761283386613733565b604051635318beb960e01b81526004016103df91815260200190565b825b828110156116f857600061286861117789846128fa565b905080156128a2576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101612851565b6000600860016128bd600260206154a1565b6128c791906154a1565b6128d191906154b4565b8260ff911c1692915050565b600060086001806128f0600260206154a1565b6128bd91906154a1565b6000601b8290036008028360ff911c1660c581111561291b5761291b6153f3565b9392505050565b6000808260c5811115612937576129376153f3565b60ff169050606181101561295157601f1660010192915050565b60618360c5811115612965576129656153f3565b036129735750601492915050565b50600092915050565b50919050565b600061298f868686613756565b9050600061299d848461378c565b905060006129ab85856137a9565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129e5576129e561548b565b6020908102919091010152612a3d7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612d27565b50505050505050505050565b6104c38585612a5884876137be565b856137ef565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612ab6906152f2565b909114919050565b6000612aeb612acd8686613a57565b60ff858116601b0360080285901c16612ae685876137be565b613aad565b95945050505050565b6000612aff83613afe565b801561291b575061291b8383613b3f565b600060606000612b1f86613bf7565b905060005b8151811015612bf2576000828281518110612b4157612b4161548b565b60200260200101519050612b6d6001826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15612be9576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612bb6908c908c908c906004016154cb565b600060405180830381600087803b158015612bd057600080fd5b505af1158015612be4573d6000803e3d6000fd5b505050505b50600101612b24565b50612bff87858888613c99565b909350915060005b8151811015612cd5576000828281518110612c2457612c2461548b565b60200260200101519050612c506002826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15612ccc576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c99908c908c908c906004016154cb565b600060405180830381600087803b158015612cb357600080fd5b505af1158015612cc7573d6000803e3d6000fd5b505050505b50600101612c07565b505094509492505050565b805160208201fd5b60608282604051602001612d109291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d8057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d73949392919061552f565b60405180910390a261078a565b6000612d8b87613d6b565b905060005b8151811015612e64576000828281518110612dad57612dad61548b565b60200260200101519050612dd96001826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15612e5b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612e28908c908c908c908c908c908c9060040161556e565b600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b505050505b50600101612d90565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e9b949392919061552f565b60405180910390a26000612eaf8888613a57565b90506000602087019050612ec7826000895184613ddd565b6000612ed2856128dd565b1115612f56576000612ee48a8a613e9c565b878155905060208601915060008060005b612efe886128dd565b8160ff161015612f5157612f138d8d83613ef2565b9250612f2e8a8260ff166028026038011c64ffffffffff1690565b9150612f3d8360008488613ddd565b612f47828661536a565b9450600101612ef5565b505050505b60005b8351811015612a3d576000848281518110612f7657612f7661548b565b60200260200101519050612fa26002826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15613024576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612ff1908e908e908e908e908e908e9060040161556e565b600060405180830381600087803b15801561300b57600080fd5b505af115801561301f573d6000803e3d6000fd5b505050505b50600101612f59565b60006103498251603881901b1790565b60608160405160200161305091906155c7565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b031916036130b957827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516130ac91906155e3565b60405180910390a2505050565b60006130c484613d6b565b905060005b81518110156131975760008282815181106130e6576130e661548b565b602002602001015190506131126040826affffffffffffffffffffff1916613c7b90919063ffffffff16565b1561318e576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf459061315b908990899089906004016155f6565b600060405180830381600087803b15801561317557600080fd5b505af1158015613189573d6000803e3d6000fd5b505050505b506001016130c9565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516131c891906155e3565b60405180910390a260006131dc8585613a57565b90506132358160006131ed86613733565b67ffffffffffffffff81111561320557613205614e9d565b6040519080825280601f01601f19166020018201604052801561322f576020820181803683370190505b50613f72565b6000613240846128dd565b11156132615760006132528686613e9c565b905061325f816020613f88565b505b60005b825181101561078a5760008382815181106132815761328161548b565b602002602001015190506132ad6080826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15613329576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132f6908a908a908a906004016155f6565b600060405180830381600087803b15801561331057600080fd5b505af1158015613324573d6000803e3d6000fd5b505050505b50600101613264565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612d10565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106133985761339861548b565b6020026020010181815250506104c67f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133f391906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613fc5565b60006060836001600160a01b03166000613422858989614000565b60405161342f91906155c7565b60006040518083038185875af1925050503d806000811461346c576040519150601f19603f3d011682016040523d82523d6000602084013e613471565b606091505b509097909650945050505050565b6040805160008082526020820190925260006134dc7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000614017565b60601c9392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106135205761352061548b565b602002602001018181525050600061353a858360006140d4565b9050612aeb61354c826000845161410e565b61419c565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106135875761358761548b565b602002602001018181525050610b41848260006135a3866141ad565b6141bd565b60006135b26136f4565b9050306001600160a01b038216036135ce576104c683836141f8565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d90613615908690869060040161561f565b600060405180830381600087803b15801561362f57600080fd5b505af11580156116f8573d6000803e3d6000fd5b600061364d6136f4565b9050306001600160a01b038216036136705761366b85858585613fc5565b6104c3565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f3262906136bb908890889088908890600401615638565b600060405180830381600087803b1580156136d557600080fd5b505af11580156136e9573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061372e573391505090565b919050565b60006008613743600260206154a1565b61374d91906154b4565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b1761291b565b60608282604051602001612d1092919061566c565b600080805b8360ff168110156108b8576137e560ff601b83900360080287901c168361536a565b91506001016137c3565b611bdd60f21b846001600160f01b0319160361384657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516138399392919061569b565b60405180910390a2610b41565b60006138528585613a57565b9050600061385f86613d6b565b905060005b81518110156139345760008282815181106138815761388161548b565b602002602001015190506138ad6004826affffffffffffffffffffff1916613c7b90919063ffffffff16565b1561392b576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906138f8908b908b908b908b906004016156d8565b600060405180830381600087803b15801561391257600080fd5b505af1158015613926573d6000803e3d6000fd5b505050505b50600101613864565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516139699392919061569b565b60405180910390a2613984828565ffffffffffff1685613f72565b60005b81518110156116f85760008282815181106139a4576139a461548b565b602002602001015190506139d06008826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15613a4e576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613a1b908b908b908b908b906004016156d8565b600060405180830381600087803b158015613a3557600080fd5b505af1158015613a49573d6000803e3d6000fd5b505050505b50600101613987565b60008282604051602001613a6c929190615711565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613ad357602082048401935060208281613acf57613acf61574d565b0691505b508254600882021b6020829003808411156108b8576001850154600882021c82179150509392505050565b6000613b2a827f01ffc9a700000000000000000000000000000000000000000000000000000000613b3f565b801561034957506113d3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613be0575060208210155b8015613bec5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613c3157613c3161548b565b60209081029190910101526000613c697f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836140d4565b90506114f861354c826000845161410e565b60008160ff1682613c8c8560581c90565b1660ff1614905092915050565b60006060600080613ca98661420b565b90925090506001600160a01b038216613cc65785610e7587610d4a565b80613cd557613cd586896142c3565b8615613d19576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613d01826142da565b9050613d1682613d118b8461536a565b614353565b50505b6000613d258760101b90565b71ffffffffffffffffffffffffffffffffffff191614613d5057613d4b88888488613407565b613d5c565b613d5c888884886143d2565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613da557613da561548b565b60209081029190910101526000613c697f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836140d4565b8215613e575760208310613e0757602083048401935060208381613e0357613e0361574d565b0692505b8215613e575760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613e48575050610b41565b50600194909401939182900391015b5b60208210613e795780518455600190930192601f1990910190602001613e58565b8115610b41576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613eb1929190615711565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613f07929190615711565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104c683838351613f838560200190565b613ddd565b60006020613f9783601f61536a565b613fa19190615763565b613fab908461536a565b90505b808310156104c65760008355600183019250613fae565b6000613fd18585614433565b90506000613fee828560ff166028026038011c64ffffffffff1690565b905061078a8686868460008888614446565b606083838360405160200161377493929190615785565b6000806140226136f4565b9050306001600160a01b038216036140485761404086868686612abe565b9150506114f8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906140939089908990899089906004016157c4565b602060405180830381865afa1580156140b0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404091906157f3565b60606114f86140e4858585613ef2565b6000614109856140f48989614433565b9060ff166028026038011c64ffffffffff1690565b6147ee565b60008183118061411e5750835182115b1561415b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103df9392919061580c565b60208401614169848261536a565b9050600061417785856154a1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061291b8360156000614811565b60608161291b816015600061488c565b60006141c98585614433565b905060006141e6828560ff166028026038011c64ffffffffff1690565b905061078a8686866000858888614446565b6103728282614206856148e0565b613066565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106142455761424561548b565b60209081029190910101526000808061429e7f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000614965565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6142cd8282614a6d565b61037257610cd382610d4a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106143135761431361548b565b602090810291909101015260006114f87f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612abe565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106143895761438961548b565b6020026020010181815250506104c67f7462776f726c6400000000000000000042616c616e636573000000000000000060001b826000856040516020016113a191815260200190565b60006060836001600160a01b03166143eb848888614000565b6040516143f891906155c7565b600060405180830381855af49150503d806000811461346c576040519150601f19603f3d011682016040523d82523d6000602084013e613471565b600061291b6144428484613e9c565b5490565b613a3160f11b876001600160f01b0319161461447657613a3160f11b8788604051602001610ef691815260200190565b6000614491828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836144aa91906154a1565b6144b4919061536a565b90508082141580156144d65750816144cc8688615831565b64ffffffffff1614155b15614526576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103df565b818664ffffffffff161115614577576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103df565b6000614584848984614aa3565b905060006145918b613d6b565b905060005b815181101561465c5760008282815181106145b3576145b361548b565b602002602001015190506145df6010826affffffffffffffffffffff1916613c7b90919063ffffffff16565b1561465357606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016146209796959493929190615856565b600060405180830381600087803b15801561463a57600080fd5b505af115801561464e573d6000803e3d6000fd5b505050505b50600101614596565b5064ffffffffff881660005b8a60ff168160ff16101561469b5761468f878260ff166028026038011c64ffffffffff1690565b90910190600101614668565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516146d49594939291906158b4565b60405180910390a2508284146146f55760006146f08c8c613e9c565b839055505b60006147028c8c8c613ef2565b9050614716818a64ffffffffff1689613f72565b5060005b81518110156147e05760008282815181106147375761473761548b565b602002602001015190506147636020826affffffffffffffffffffff1916613c7b90919063ffffffff16565b156147d757606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016147a49796959493929190615856565b600060405180830381600087803b1580156147be57600080fd5b505af11580156147d2573d6000803e3d6000fd5b505050505b5060010161471a565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526108b885858584614b71565b6060600061481f8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816148455761484561574d565b04905060405193506020840160208202810160405281855260005b82811015614880578451871c825293870193602090910190600101614860565b50505050509392505050565b8251606090600061489d85836154b4565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614880578051871b835291870191600191909101906020016148bf565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161492f57507e60030220202000000000000000000000000000000000000000000000000000919050565b61034961495c7f746273746f72650000000000000000005461626c65730000000000000000000084614c3d565b60206000613aad565b606060006060600061497685613733565b9050614983878783614c59565b93506000614990866128dd565b90508015614a62576149a28888614433565b935066ffffffffffffff841667ffffffffffffffff8111156149c6576149c6614e9d565b6040519080825280601f01601f1916602001820160405280156149f0576020820181803683370190505b5092506020830160005b828160ff161015614a5f576000614a128b8b84613ef2565b90506000614a2f888460ff166028026038011c64ffffffffff1690565b9050614a3e8260008387614b71565b614a48818561536a565b935050508080614a5790615906565b9150506149fa565b50505b505093509350939050565b6000614a93616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614c92565b8061291b575061291b8383614c92565b600064ffffffffff821115614ae7576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614b195780850382019150614b21565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614bf85760208310614b9b57602083048401935060208381614b9757614b9761574d565b0692505b8215614bf8576020839003600081841015614bbe5750600019600884021c614bc8565b50600019600882021c5b8554600886021b818451168219821617845250818411614be9575050610b41565b50600194909401939182900391015b5b60208210614c1a5783548152600190930192601f1990910190602001614bf9565b8115610b41576000600019600884021c8251865482191691161782525050505050565b6040805160208101849052908101829052600090606001613a6c565b606081600003614c78575060408051602081019091526000815261291b565b6000614c848585613a57565b9050612aeb816000856147ee565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614ccb57614ccb61548b565b602002602001018181525050826001600160a01b031660001b81600181518110614cf757614cf761548b565b60209081029190910101526000614d377f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612abe565b9050612aeb8160f81c90565b80356001600160e01b03198116811461372e57600080fd5b600060208284031215614d6d57600080fd5b61291b82614d43565b6001600160a01b03811681146109fa57600080fd5b60008060408385031215614d9e57600080fd5b823591506020830135614db081614d76565b809150509250929050565b60008083601f840112614dcd57600080fd5b50813567ffffffffffffffff811115614de557600080fd5b6020830191508360208260051b8501011115614e0057600080fd5b9250929050565b60008060008060008060008060c0898b031215614e2357600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614e5757600080fd5b614e638c838d01614dbb565b909650945060a08b0135915080821115614e7c57600080fd5b50614e898b828c01614dbb565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614edc57614edc614e9d565b604052919050565b600082601f830112614ef557600080fd5b813567ffffffffffffffff811115614f0f57614f0f614e9d565b614f226020601f19601f84011601614eb3565b818152846020838601011115614f3757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614f6957600080fd5b8335614f7481614d76565b925060208401359150604084013567ffffffffffffffff811115614f9757600080fd5b614fa386828701614ee4565b9150509250925092565b60008060408385031215614fc057600080fd5b82359150602083013567ffffffffffffffff811115614fde57600080fd5b614fea85828601614ee4565b9150509250929050565b60008060006060848603121561500957600080fd5b83359250602084013561501b81614d76565b91506040840135801515811461503057600080fd5b809150509250925092565b803560ff8116811461372e57600080fd5b60008060006060848603121561506157600080fd5b83359250602084013561507381614d76565b91506150816040850161503b565b90509250925092565b60008060006060848603121561509f57600080fd5b83359250602084013567ffffffffffffffff8111156150bd57600080fd5b6150c986828701614ee4565b92505061508160408501614d43565b600080604083850312156150eb57600080fd5b82356150f681614d76565b9150602083013567ffffffffffffffff811115614fde57600080fd5b60006020828403121561512457600080fd5b5035919050565b60008060006060848603121561514057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614f9757600080fd5b60006020828403121561517757600080fd5b813561291b81614d76565b60005b8381101561519d578181015183820152602001615185565b50506000910152565b600081518084526151be816020860160208601615182565b601f01601f19169290920160200192915050565b8281526040602082015260006114f860408301846151a6565b600067ffffffffffffffff8084111561520657615206614e9d565b8360051b602061521860208301614eb3565b8681529185019160208101903684111561523157600080fd5b865b848110156152655780358681111561524b5760008081fd5b61525736828b01614ee4565b845250918301918301615233565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612aeb60608301846151a6565b600083516152ac818460208801615182565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516152e6816002840160208801615182565b01600201949350505050565b8051602080830151919081101561297c5760001960209190910360031b1b16919050565b60208152600061291b60208301846151a6565b60408152600061533c60408301856151a6565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561034957610349615354565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516153c6816003860160208901615182565b8084019050816003820152845191506153e6826004830160208801615182565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561547e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261546c8583516151a6565b94509285019290850190600101615432565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561034957610349615354565b808202811582820484141761034957610349615354565b6001600160a01b0384168152826020820152606060408201526000612aeb60608301846151a6565b60008151808452602080850194506020840160005b8381101561552457815187529582019590820190600101615508565b509495945050505050565b60808152600061554260808301876154f3565b828103602084015261555481876151a6565b90508460408401528281036060840152613bec81856151a6565b86815260c06020820152600061558760c08301886154f3565b828103604084015261559981886151a6565b905085606084015282810360808401526155b381866151a6565b9150508260a0830152979650505050505050565b600082516155d9818460208701615182565b9190910192915050565b60208152600061291b60208301846154f3565b83815260606020820152600061560f60608301856154f3565b9050826040830152949350505050565b8281526040602082015260006114f860408301846154f3565b84815260806020820152600061565160808301866154f3565b60ff851660408401528281036060840152613bec81856151a6565b6000835161567e818460208801615182565b835190830190615692818360208801615182565b01949350505050565b6060815260006156ae60608301866154f3565b65ffffffffffff8516602084015282810360408401526156ce81856151a6565b9695505050505050565b8481526080602082015260006156f160808301866154f3565b65ffffffffffff851660408401528281036060840152613bec81856151a6565b8281526000602080830184516020860160005b8281101561574057815184529284019290840190600101615724565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261578057634e487b7160e01b600052601260045260246000fd5b500490565b60008451615797818460208901615182565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b8481526080602082015260006157dd60808301866154f3565b60ff949094166040830152506060015292915050565b60006020828403121561580557600080fd5b5051919050565b60608152600061581f60608301866151a6565b60208301949094525060400152919050565b64ffffffffff81811683821601908082111561584f5761584f615354565b5092915050565b87815260e06020820152600061586f60e08301896154f3565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526158a681856151a6565b9a9950505050505050505050565b60a0815260006158c760a08301886154f3565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526158fa81856151a6565b98975050505050505050565b600060ff821660ff810361591c5761591c615354565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004f6738038062004f67833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614e396200012e60003960008181610726015281816115df015261166e015260006106be01526000610656015260006105d5015260005050614e396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780637c5b0335146100ff5780639081c75814610112578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b6100956100903660046145a5565b610122565b60405190151581526020015b60405180910390f35b6100b2610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046145fd565b610216565b005b604051601f1936013581526020016100a1565b6100ea61010d3660046145fd565b610248565b6100b2610263565b6100b261026d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b8061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610211610277565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102506102a9565b610258610593565b61026061074c565b50565b6000610211610cbc565b6000610211610cc6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102a65750335b90565b6102b1610cd0565b6102b9610f48565b6102c1610f99565b6102c9610fe5565b6102d1611031565b6102d961107d565b6102e16110c1565b6102e961110d565b6102f1611171565b6102f96111d5565b610301611237565b610309611299565b6103116112e5565b610319611329565b60408051616e7360f01b6020820152600060228201819052603082015261035b91015b604051602081830303815290604052610354906146ae565b6001611375565b60408051616e7360f01b602082015260006022820181905260308201526103a391015b604051602081830303815290604052610396906146ae565b61039e610207565b61141b565b60408051616e7360f01b602082015260006022820181905260308201526103ed91015b6040516020818303038152906040526103de906146ae565b6103e6610207565b60016114e0565b60408051616e7360f01b60208201527f73746f7265000000000000000000000000000000000000000000000000000000602282015260006030820152610433910161033c565b60408051616e7360f01b60208201527f73746f7265000000000000000000000000000000000000000000000000000000602282015260006030820152610479910161037e565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104bf91016103c6565b60408051616e7360f01b60208201527f776f726c64000000000000000000000000000000000000000000000000000000602282015260006030820152610505910161033c565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261054b910161037e565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261059191016103c6565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610614917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261060f906146ae565b6115a2565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261067c917f000000000000000000000000000000000000000000000000000000000000000091016105f7565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106e4917f000000000000000000000000000000000000000000000000000000000000000091016105f7565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610591917f000000000000000000000000000000000000000000000000000000000000000091016105f7565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614e0b6022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b60048110156108b1576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108a9910160405160208183030381529060405261088d906146ae565b83836004811061089f5761089f6146d2565b602002015161165f565b60010161082b565b506040805160a0810182526033918101828152600092829190614daf60608401398152602001604051806060016040528060318152602001614c7e603191399052905060005b6002811015610974576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261096c91015b60405160208183030381529060405261095a906146ae565b83836002811061089f5761089f6146d2565b6001016108f7565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614d0a602891399052905060005b6002811015610a34576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a2c9101610942565b6001016109dd565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e0830152815281516060810183528281526000926020808401929190614bc9908301398152602001604051806060016040528060288152602001614caf602891398152602001604051806060016040528060248152602001614ba56024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614de2602991398152602001604051806060016040528060258152602001614d32602591398152602001604051806060016040528060248152602001614c5a602491398152602001604051806060016040528060288152602001614c32602891398152602001604051806060016040528060338152602001614cd7603391398152602001604051806060016040528060298152602001614c096029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614d7d603291398152602001604051806060016040528060268152602001614d57602691399052905060005b600e811015610cb5576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610cad9101604051602081830303815290604052610c9b906146ae565b8383600e811061089f5761089f6146d2565b600101610c39565b5050505050565b6000610211611706565b6000610211611755565b610cf97f746273746f72650000000000000000005461626c6573000000000000000000006117a1565b15610d7757604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d6e9291600401614738565b60405180910390fd5b610da07f746273746f72650000000000000000005265736f7572636549647300000000006117a1565b15610dd857604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610d2d565b610e7f7f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610e2461182e565b610e2c6118a6565b610e346119f5565b604051602001610e4491906147ab565b604051602081830303815290604052610e5b611a7a565b604051602001610e6b91906147ab565b604051602081830303815290604052611c42565b610eea7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610eb361182e565b610ebb611d09565b610ec3611d43565b604051602001610ed391906147ab565b604051602081830303815290604052610e5b611dba565b610f157f746273746f72650000000000000000005461626c6573000000000000000000006001611375565b610f407f746273746f72650000000000000000005265736f7572636549647300000000006001611375565b610591611e31565b6105917f7462776f726c640000000000000000004e616d6573706163654f776e65720000630500400560da1b610f7c61182e565b610f84611e93565b610f8c611ecd565b610f94611f44565b611fbb565b6105917f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fcd61182e565b610fd561208f565b610fdd611ecd565b610f946120c9565b6105917f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b611019612140565b611021611d09565b6110296121bf565b610f94612289565b6105917f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b611065612300565b61106d61182e565b61107561237f565b610f94612449565b6105917f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b6110b161182e565b6110b961182e565b611075611ecd565b6105917f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110f56124c0565b6110fd611d09565b6111056124fa565b610f946125c4565b6105917f7462776f726c6400000000000000000053797374656d730000000000000000007e1502001401000000000000000000000000000000000000000000000000000061115961182e565b61116161263b565b6111696126ba565b610f94612731565b6105917f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111bd6127fb565b6111c5612835565b6111cd6128b4565b610f9461292b565b6105917f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c010000000000000000000000000000000000000000000000000000000061121f6127fb565b6112276129f5565b61122f6128b4565b610f94612a2f565b6105917f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061128161182e565b611289612aa6565b6112916126ba565b610f94612ae0565b6105917f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112cd611e93565b6112d561182e565b6112dd612b57565b610f946126ba565b6105917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573630500400560da1b611319612bce565b611321611e93565b611291612be7565b6105917f7462776f726c640000000000000000005472616e73616374696f6e436f6e7465630500400560da1b61135d612bce565b611365611e93565b61136d612be7565b610f94612c1a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab6146d2565b6020026020010181815250506114167f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113f991151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612c91565b505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611451576114516146d2565b6020026020010181815250506114167f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016114c3919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f19818403018152919052630500400560da1b612c91565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611515576115156146d2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061154e5761154e6146d2565b60200260200101818152505061159c7f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113f991151560f81b815260010190565b50505050565b6114166115ad610207565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612ca6565b61141661166a610207565b60007f0000000000000000000000000000000000000000000000000000000000000000858586805190602001206040516024016116a9939291906147be565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612ca6565b60408051600080825260208201909252600061174b7f7462776f726c640000000000000000005472616e73616374696f6e436f6e74658383630500400560da1b612cd3565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061179c573391505090565b919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106117da576117da6146d2565b6020908102919091010152600061181a7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612daa565b90506118268160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110611868576118686146d2565b602002602001019060c581111561188157611881614809565b908160c581111561189457611894614809565b9052506118a081612de0565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106118e1576118e16146d2565b602002602001019060c58111156118fa576118fa614809565b908160c581111561190d5761190d614809565b81525050605f81600181518110611926576119266146d2565b602002602001019060c581111561193f5761193f614809565b908160c581111561195257611952614809565b81525050605f8160028151811061196b5761196b6146d2565b602002602001019060c581111561198457611984614809565b908160c581111561199757611997614809565b8152505060c4816003815181106119b0576119b06146d2565b602002602001019060c58111156119c9576119c9614809565b908160c58111156119dc576119dc614809565b8152505060c481600481518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611a0c5790505090506040518060400160405280600781526020017f7461626c6549640000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a925790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611af257611af26146d2565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611b4657611b466146d2565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b9a57611b9a6146d2565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611bee57611bee6146d2565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110611a6c57611a6c6146d2565b6000611c4f868686612f9b565b90506000611c5d8484612fd1565b90506000611c6b8585612ff1565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611ca557611ca56146d2565b6020908102919091010152611cfd7f746273746f72650000000000000000005461626c657300000000000000000000828686867e6003022020200000000000000000000000000000000000000000000000000061301d565b50505050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d5a5790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611dd15790505090506040518060400160405280600681526020017f657869737473000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6105917f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611e7b61182e565b611e83612aa6565b611e8b6119f5565b610f9461335e565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ee45790505090506040518060400160405280600b81526020017f6e616d657370616365496400000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611f5b5790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6000611fc5611755565b90503073ffffffffffffffffffffffffffffffffffffffff821603611ff757611ff28787878787876133d5565b612086565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990612053908a908a908a908a908a908a9060040161481f565b600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816120e05790505090506040518060400160405280600781526020017f62616c616e63650000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061217a5761217a6146d2565b602002602001019060c581111561219357612193614809565b908160c58111156121a6576121a6614809565b81525050605f81600181518110611868576118686146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816121d55790505090506040518060400160405280600d81526020017f6d6f64756c65416464726573730000000000000000000000000000000000000081525081600081518110612235576122356146d2565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e7473486173680000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816122a05790505090506040518060400160405280600b81526020017f6973496e7374616c6c656400000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061233a5761233a6146d2565b602002602001019060c581111561235357612353614809565b908160c581111561236657612366614809565b81525050606181600181518110611868576118686146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816123955790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106123f5576123f56146d2565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816124605790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c49640000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061233a5761233a6146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816125105790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110612570576125706146d2565b60200260200101819052506040518060400160405280600681526020017f63616c6c6572000000000000000000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816125db5790505090506040518060400160405280600681526020017f616363657373000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110612675576126756146d2565b602002602001019060c581111561268e5761268e614809565b908160c58111156126a1576126a1614809565b81525050606081600181518110611868576118686146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816126d15790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816127475790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106127a7576127a76146d2565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b60408051600180825281830190925260009182919060208083019080368337019050509050604381600081518110611868576118686146d2565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061286f5761286f6146d2565b602002602001019060c581111561288857612888614809565b908160c581111561289b5761289b614809565b81525050604381600181518110611868576118686146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816128cb5790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f720000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816129415790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106129a1576129a16146d2565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600181518110611a6c57611a6c6146d2565b6040805160018082528183019092526000918291906020808301908036833701905050905060c581600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a465790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e617475726500000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160018082528183019092526000918291906020808301908036833701905050905060b681600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081612af75790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b6e5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516000808252602082019092526118a081612de0565b60408051600080825260208201909252606091612c14565b6060815260200190600190039081612bff5790505b50905090565b604080516001808252818301909252606091816020015b6060815260200190600190039081612c315790505090506040518060400160405280600e81526020017f66697273744d736753656e64657200000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b610cb58585612ca0848761380c565b85613845565b6060600080612cb787878787613ae0565b9150915081612cc957612cc981613b61565b9695505050505050565b600080612cde611755565b90503073ffffffffffffffffffffffffffffffffffffffff821603612d1157612d0986868686612daa565b915050611826565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990612d699089908990899089906004016148a5565b602060405180830381865afa158015612d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0991906148d4565b6000612dd7612db98686613b69565b60ff858116601b0360080285901c16612dd2858761380c565b613bbf565b95945050505050565b6000601c82511115612e0a578151604051635318beb960e01b8152600401610d6e91815260200190565b60008080805b8551811015612ee5576000612e4e878381518110612e3057612e306146d2565b602002602001015160c5811115612e4957612e49614809565b613c10565b905080600003612e6357600190920191612e9b565b8215612e9b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612ebc57612ebc6146d2565b602002602001015160c5811115612ed557612ed5614809565b901b949094179350600101612e10565b506005811115612f0b57604051635318beb960e01b815260048101829052602401610d6e565b84518190036008612f1e60026020614903565b612f289190614916565b83901b939093179260086001612f4060026020614903565b612f4a9190614903565b612f549190614916565b81901b93909317926008600180612f6d60026020614903565b612f779190614903565b612f819190614903565b612f8b9190614916565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b6060828260405160200161300692919061492d565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036130a957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161309c949392919061495c565b60405180910390a2613356565b60006130b487613c70565b905060005b815181101561318d5760008282815181106130d6576130d66146d2565b602002602001015190506131026001826affffffffffffffffffffff1916613cf990919063ffffffff16565b15613184576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613151908c908c908c908c908c908c906004016149a6565b600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b505050505b506001016130b9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516131c4949392919061495c565b60405180910390a260006131d88888613b69565b905060006020870190506131f0826000895184613d17565b60006131fb85613dd6565b111561327f57600061320d8a8a613e13565b878155905060208601915060008060005b61322788613dd6565b8160ff16101561327a5761323c8d8d83613e69565b92506132578a8260ff166028026038011c64ffffffffff1690565b91506132668360008488613d17565b61327082866149ff565b945060010161321e565b505050505b60005b8351811015611cfd57600084828151811061329f5761329f6146d2565b602002602001015190506132cb6002826affffffffffffffffffffff1916613cf990919063ffffffff16565b1561334d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061331a908e908e908e908e908e908e906004016149a6565b600060405180830381600087803b15801561333457600080fd5b505af1158015613348573d6000803e3d6000fd5b505050505b50600101613282565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816133755790505090506040518060400160405280600581526020017f686f6f6b7300000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061346957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b156134e5577f746200000000000000000000000000000000000000000000000000000000000086876040516020016134a391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d6e939291600401614a12565b6134ee85613ee9565b6134f9846001614130565b613504836000614130565b60e084901c60e885901c0160ff168251146135645760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b60e085901c60e886901c0160ff168151146135c45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461363c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b613645856142cc565b61364e846142cc565b146136a05761365c856142cc565b613665846142cc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b6136a985613dd6565b6136b284613dd6565b14613704576136c085613dd6565b6136c984613dd6565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b60005b613710866142cc565b8110156137a65761373561372485836142de565b60c5811115612e4957612e49614809565b6008601b8390030287901c60ff161461379e576008601b8290030286901c60ff1661376361372486846142de565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b600101613707565b506137b0866117a1565b156137c9578586604051602001610d2d91815260200190565b61380186868686866040516020016137e191906147ab565b60405160208183030381529060405286604051602001610e6b91906147ab565b613356866001611375565b600080805b8360ff1681101561383d5761383360ff601b83900360080287901c16836149ff565b9150600101613811565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036138cf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516138c293929190614a53565b60405180910390a261159c565b60006138db8585613b69565b905060006138e886613c70565b905060005b81518110156139bd57600082828151811061390a5761390a6146d2565b602002602001015190506139366004826affffffffffffffffffffff1916613cf990919063ffffffff16565b156139b4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613981908b908b908b908b90600401614a86565b600060405180830381600087803b15801561399b57600080fd5b505af11580156139af573d6000803e3d6000fd5b505050505b506001016138ed565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516139f293929190614a53565b60405180910390a2613a0d828565ffffffffffff16856142ff565b60005b8151811015612086576000828281518110613a2d57613a2d6146d2565b60200260200101519050613a596008826affffffffffffffffffffff1916613cf990919063ffffffff16565b15613ad7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613aa4908b908b908b908b90600401614a86565b600060405180830381600087803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b505050505b50600101613a10565b600060608373ffffffffffffffffffffffffffffffffffffffff16613b06848888614315565b604051613b139190614abf565b600060405180830381855af49150503d8060008114613b4e576040519150601f19603f3d011682016040523d82523d6000602084013e613b53565b606091505b509097909650945050505050565b805160208201fd5b60008282604051602001613b7e929190614adb565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613be557602082048401935060208281613be157613be1614b17565b0691505b508254600882021b60208290038084111561383d576001850154600882021c82179150509392505050565b6000808260c5811115613c2557613c25614809565b60ff1690506061811015613c3f57601f1660010192915050565b60618360c5811115613c5357613c53614809565b03613c615750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613caa57613caa6146d2565b60209081029190910101526000613ce27f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361432c565b9050611826613cf48260008451614366565b6143f4565b60008160ff1682613d0a8560581c90565b1660ff1614905092915050565b8215613d915760208310613d4157602083048401935060208381613d3d57613d3d614b17565b0692505b8215613d915760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613d8257505061159c565b50600194909401939182900391015b5b60208210613db35780518455600190930192601f1990910190602001613d92565b811561159c576000600019600884021c8554835182191691161785555050505050565b60006008600180613de960026020614903565b613df39190614903565b613dfd9190614903565b613e079190614916565b8260ff911c1692915050565b60008282604051602001613e28929190614adb565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e7e929190614adb565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613f20576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613f2b82613dd6565b90506005811115613f72576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d6e565b6000613f7d836142cc565b90506000613f8b83836149ff565b9050601c811115613fd2576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d6e565b6000805b8381101561407d5760ff601b82900360080287901c16600081900361402a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d6e565b6020811115614068576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d6e565b61407281846149ff565b925050600101613fd6565b5061408785614405565b81146140d35761409685614405565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d6e565b825b601c8110156133565760ff601b82900360080287901c168015614127576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d6e565b506001016140d5565b8015801561413c575081155b1561415d57604051635318beb960e01b815260006004820152602401610d6e565b600061416883613dd6565b9050600581111561418f57604051635318beb960e01b815260048101829052602401610d6e565b600061419a846142cc565b905060006141a883836149ff565b9050601c8111156141cf57604051635318beb960e01b815260048101829052602401610d6e565b6000805b8381101561423b5760006141ea61372489846142de565b905080600003614226576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61423081846149ff565b9250506001016141d3565b5061424586614405565b81146142705761425486614405565b604051635318beb960e01b8152600401610d6e91815260200190565b825b8281101561208657600061428961372489846142de565b905080156142c3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101614272565b600060086001613df360026020614903565b6000601b8290036008028360ff911c1660c5811115612fea57612fea614809565b611416838383516143108560200190565b613d17565b6060838383604051602001612fb993929190614b2d565b606061182661433c858585613e69565b60006143618561434c8989614428565b9060ff166028026038011c64ffffffffff1690565b61443b565b6000818311806143765750835182115b156143b3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d6e93929190614b7f565b602084016143c184826149ff565b905060006143cf8585614903565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612fea836015600061445e565b6000600861441560026020614903565b61441f9190614916565b9190911c919050565b6000612fea6144378484613e13565b5490565b60405160208101601f19603f848401011660405282825261383d858585846144d9565b6060600061446c8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161449257614492614b17565b04905060405193506020840160208202810160405281855260005b828110156144cd578451871c8252938701936020909101906001016144ad565b50505050509392505050565b82156145605760208310614503576020830484019350602083816144ff576144ff614b17565b0692505b82156145605760208390036000818410156145265750600019600884021c614530565b50600019600882021c5b8554600886021b81845116821982161784525081841161455157505061159c565b50600194909401939182900391015b5b602082106145825783548152600190930192601f1990910190602001614561565b811561159c576000600019600884021c8251865482191691161782525050505050565b6000602082840312156145b757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612fea57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561460f57600080fd5b813567ffffffffffffffff8082111561462757600080fd5b818401915084601f83011261463b57600080fd5b81358181111561464d5761464d6145e7565b604051601f8201601f19908116603f01168101908382118183101715614675576146756145e7565b8160405282815287602084870101111561468e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613c6a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156147035781810151838201526020016146eb565b50506000910152565b600081518084526147248160208601602086016146e8565b601f01601f19169290920160200192915050565b828152604060208201526000611826604083018461470c565b60008282518085526020808601955060208260051b8401016020860160005b8481101561479e57601f1986840301895261478c83835161470c565b98840198925090830190600101614770565b5090979650505050505050565b602081526000612fea6020830184614751565b8381526060602082015260006147d7606083018561470c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061484a60c0830185614751565b82810360a084015261485c8185614751565b9998505050505050505050565b60008151808452602080850194506020840160005b8381101561489a5781518752958201959082019060010161487e565b509495945050505050565b8481526080602082015260006148be6080830186614869565b60ff949094166040830152506060015292915050565b6000602082840312156148e657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610201576102016148ed565b8082028115828204841417610201576102016148ed565b6000835161493f8184602088016146e8565b8351908301906149538183602088016146e8565b01949350505050565b60808152600061496f6080830187614869565b8281036020840152614981818761470c565b9050846040840152828103606084015261499b818561470c565b979650505050505050565b86815260c0602082015260006149bf60c0830188614869565b82810360408401526149d1818861470c565b905085606084015282810360808401526149eb818661470c565b9150508260a0830152979650505050505050565b80820180821115610201576102016148ed565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612dd7606083018461470c565b606081526000614a666060830186614869565b65ffffffffffff851660208401528281036040840152612cc9818561470c565b848152608060208201526000614a9f6080830186614869565b65ffffffffffff85166040840152828103606084015261499b818561470c565b60008251614ad18184602087016146e8565b9190910192915050565b8281526000602080830184516020860160005b82811015614b0a57815184529284019290840190600101614aee565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614b3f8184602089016146e8565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b606081526000614b92606083018661470c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:204:-:0;;;1572:26:107;;;1594:4;-1:-1:-1;;1572:26:107;;;;;;;;3126:44:110;;;;;;;;;;;228:9:0;186:51;;1729:98:204;-1:-1:-1;;;;;;;;;1729:25:204;:98::i;:::-;1695:132;;1831:38;;;-1:-1:-1;;;;;;1831:38:204;;;1867:1;1831:38;;;;1873;;;;;;1909:1;1873:38;;;1555:5875;;;;;;;;;;;;980:257:59;1067:10;1196:26;438:6;385:5:16;1196:26:59;:::i;:::-;-1:-1:-1;;;;;;1123:15:59;;-1:-1:-1;;;;;;;385:5:16;1142:31:59;;;;1123:51;-1:-1:-1;;;;;;1178:13:59;;:45;;;1123:101;;-1:-1:-1;980:257:59;;;;;:::o;14:222:208:-;79:9;;;100:10;;;97:133;;;152:10;147:3;143:20;140:1;133:31;187:4;184:1;177:15;215:4;212:1;205:15;97:133;14:222;;;;:::o;:::-;1555:5875:204;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a69604051806060016040528060288152602001620214416028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f604051806060016040528060218152602001620213f86021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a815260200162021469602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd9604051806060016040528060288152602001620214196028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6179d5806200376083390190565b611889806200b13583390190565b61061f806200c9be83390190565b6155e4806200cfdd83390190565b611dc580620125c183390190565b61193c806201438683390190565b610e6c8062015cc283390190565b6159638062016b2e83390190565b614f67806201c49183390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b611a81806200321783390190565b6119bb8062004c9883390190565b611382806200665383390190565b60805160a05160c05160e0516130f2620001256000396000610626015260006104a4015260006103230152600050506130f26000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780637c5b0335146100ff5780639081c75814610112578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004612b79565b610122565b60405190151581526020015b60405180910390f35b6100b2610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004612bd1565b610216565b005b604051601f1936013581526020016100a1565b6100ea61010d366004612bd1565b610248565b6100b26106fc565b6100b2610706565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b8061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610211610710565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610252610706565b905061025c610742565b6102646107ad565b61026c610809565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261030190612c82565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161039f9250612cca565b600060405180830381855af49150503d80600081146103da576040519150601f19603f3d011682016040523d82523d6000602084013e6103df565b606091505b5091509150816103f2576103f28161086d565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261048290612c82565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105209250612cca565b600060405180830381855af49150503d806000811461055b576040519150601f19603f3d011682016040523d82523d6000602084013e610560565b606091505b50909250905081610574576105748161086d565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261060490612c82565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106a29250612cca565b600060405180830381855af49150503d80600081146106dd576040519150601f19603f3d011682016040523d82523d6000602084013e6106e2565b606091505b509092509050816106f6576106f68161086d565b50505050565b6000610211610875565b600061021161087f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061073f5750335b90565b6107ab7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e2001002000000000000000000000000000000000000000000000000000000061078e610889565b6107966109d1565b61079e610a0b565b6107a6610b8d565b610c04565b565b6107ab7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000006107f9610cd8565b6108016109d1565b61079e610d9d565b6107ab7f7462000000000000000000000000000054696d65626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610855610ebd565b61085d6109d1565b610865610f3c565b6107a6611006565b805160208201fd5b600061021161107d565b60006102116110e4565b60408051600480825260a08201909252600091829190602082016080803683370190505090506061816000815181106108c4576108c4612ce6565b602002602001019060c58111156108dd576108dd612cfc565b908160c58111156108f0576108f0612cfc565b8152505060618160018151811061090957610909612ce6565b602002602001019060c581111561092257610922612cfc565b908160c581111561093557610935612cfc565b81525050605f8160028151811061094e5761094e612ce6565b602002602001019060c581111561096757610967612cfc565b908160c581111561097a5761097a612cfc565b81525050605f8160038151811061099357610993612ce6565b602002602001019060c58111156109ac576109ac612cfc565b908160c58111156109bf576109bf612cfc565b9052506109cb81611130565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061099357610993612ce6565b60408051600480825260a08201909252606091816020015b6060815260200190600190039081610a235790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610a8357610a83612ce6565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610ad757610ad7612ce6565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b2b57610b2b612ce6565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610b7f57610b7f612ce6565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ba45790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610b7f57610b7f612ce6565b6000610c0e6110e4565b90503073ffffffffffffffffffffffffffffffffffffffff821603610c4057610c3b8787878787876112f4565b610ccf565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610c9c908a908a908a908a908a908a90600401612d98565b600060405180830381600087803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610d1357610d13612ce6565b602002602001019060c5811115610d2c57610d2c612cfc565b908160c5811115610d3f57610d3f612cfc565b81525050606181600181518110610d5857610d58612ce6565b602002602001019060c5811115610d7157610d71612cfc565b908160c5811115610d8457610d84612cfc565b81525050605f8160028151811061099357610993612ce6565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610db55790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610e1557610e15612ce6565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610e6957610e69612ce6565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b7f57610b7f612ce6565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610ef757610ef7612ce6565b602002602001019060c5811115610f1057610f10612cfc565b908160c5811115610f2357610f23612cfc565b8152505060618160018151811061099357610993612ce6565b6040805160028082526060828101909352816020015b6060815260200190600190039081610f525790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610fb257610fb2612ce6565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610b7f57610b7f612ce6565b604080516001808252818301909252606091816020015b606081526020019060019003908161101d5790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610b7f57610b7f612ce6565b6040805160008082526020820190925260006110da7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000611788565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061112b573391505090565b919050565b6000601c82511115611163578151604051635318beb960e01b815260040161115a91815260200190565b60405180910390fd5b60008080805b855181101561123e5760006111a787838151811061118957611189612ce6565b602002602001015160c58111156111a2576111a2612cfc565b611867565b9050806000036111bc576001909201916111f4565b82156111f4576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061121557611215612ce6565b602002602001015160c581111561122e5761122e612cfc565b901b949094179350600101611169565b50600581111561126457604051635318beb960e01b81526004810182905260240161115a565b8451819003600861127760026020612df8565b6112819190612e0b565b83901b93909317926008600161129960026020612df8565b6112a39190612df8565b6112ad9190612e0b565b81901b939093179260086001806112c660026020612df8565b6112d09190612df8565b6112da9190612df8565b6112e49190612e0b565b9190911b92909217949350505050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061138857507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15611404577f746200000000000000000000000000000000000000000000000000000000000086876040516020016113c291815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261115a939291600401612e22565b61140d856118c7565b611418846001611b0e565b611423836000611b0e565b60e084901c60e885901c0160ff168251146114835760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b60e085901c60e886901c0160ff168151146114e35760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461155b5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b61156485611caa565b61156d84611caa565b146115bf5761157b85611caa565b61158484611caa565b6040517f65cc0adf0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b6115c885611cdc565b6115d184611cdc565b14611623576115df85611cdc565b6115e884611cdc565b6040517fedea95870000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b60005b61162f86611caa565b8110156116c5576116546116438583611cf9565b60c58111156111a2576111a2612cfc565b6008601b8390030287901c60ff16146116bd576008601b8290030286901c60ff166116826116438684611cf9565b6040517f254c7db40000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161115a565b600101611626565b506116cf86611d21565b156117295785866040516020016116e891815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261115a9291600401612e63565b61177586868686866040516020016117419190612e7c565b604051602081830303815290604052866040516020016117619190612e7c565b604051602081830303815290604052611dbe565b611780866001611ea1565b505050505050565b6000806117936110e4565b90503073ffffffffffffffffffffffffffffffffffffffff8216036117c6576117be86868686611f5f565b91505061185f565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061181e908990899089908990600401612ecb565b602060405180830381865afa15801561183b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190612efa565b949350505050565b6000808260c581111561187c5761187c612cfc565b60ff169050606181101561189657601f1660010192915050565b60618360c58111156118aa576118aa612cfc565b036118b85750601492915050565b50600092915050565b50919050565b806118fe576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061190982611cdc565b90506005811115611950576040517f7f2372c3000000000000000000000000000000000000000000000000000000008152600481018290526005602482015260440161115a565b600061195b83611caa565b905060006119698383612f13565b9050601c8111156119b0576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c602482015260440161115a565b6000805b83811015611a5b5760ff601b82900360080287901c166000819003611a08576040517f01f2a07c0000000000000000000000000000000000000000000000000000000081526004810183905260240161115a565b6020811115611a46576040517f24c85d580000000000000000000000000000000000000000000000000000000081526004810183905260240161115a565b611a508184612f13565b9250506001016119b4565b50611a6585611f95565b8114611ab157611a7485611f95565b6040517f9365944a00000000000000000000000000000000000000000000000000000000815260048101919091526024810182905260440161115a565b825b601c8110156117805760ff601b82900360080287901c168015611b05576040517fbb68821a0000000000000000000000000000000000000000000000000000000081526004810183905260240161115a565b50600101611ab3565b80158015611b1a575081155b15611b3b57604051635318beb960e01b81526000600482015260240161115a565b6000611b4683611cdc565b90506005811115611b6d57604051635318beb960e01b81526004810182905260240161115a565b6000611b7884611caa565b90506000611b868383612f13565b9050601c811115611bad57604051635318beb960e01b81526004810182905260240161115a565b6000805b83811015611c19576000611bc86116438984611cf9565b905080600003611c04576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c0e8184612f13565b925050600101611bb1565b50611c2386611f95565b8114611c4e57611c3286611f95565b604051635318beb960e01b815260040161115a91815260200190565b825b82811015610ccf576000611c676116438984611cf9565b90508015611ca1576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611c50565b600060086001611cbc60026020612df8565b611cc69190612df8565b611cd09190612e0b565b8260ff911c1692915050565b60006008600180611cef60026020612df8565b611cbc9190612df8565b6000601b8290036008028360ff911c1660c5811115611d1a57611d1a612cfc565b9392505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d5a57611d5a612ce6565b60209081029190910101526000611db27f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611f5f565b905061185f8160f81c90565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611df58484611fb8565b90506000611e038585611fd5565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611e3d57611e3d612ce6565b6020908102919091010152611e957f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612001565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611ed757611ed7612ce6565b602002602001018181525050611f5a7f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611f2591151560f81b815260010190565b60408051601f198184030181529190527e0101000100000000000000000000000000000000000000000000000000000061233a565b505050565b6000611f8c611f6e8686612356565b60ff858116601b0360080285901c16611f8785876123ac565b6123e5565b95945050505050565b60006008611fa560026020612df8565b611faf9190612e0b565b9190911c919050565b8151815160009181810160389190911b1760609190911b17611d1a565b60608282604051602001611fea929190612f26565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361208d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516120809493929190612f55565b60405180910390a2611780565b600061209887612436565b905060005b81518110156121715760008282815181106120ba576120ba612ce6565b602002602001015190506120e66001826affffffffffffffffffffff19166124bf90919063ffffffff16565b15612168576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612135908c908c908c908c908c908c90600401612f9f565b600060405180830381600087803b15801561214f57600080fd5b505af1158015612163573d6000803e3d6000fd5b505050505b5060010161209d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516121a89493929190612f55565b60405180910390a260006121bc8888612356565b905060006020870190506121d48260008951846124dd565b60006121df85611cdc565b11156122635760006121f18a8a61259c565b878155905060208601915060008060005b61220b88611cdc565b8160ff16101561225e576122208d8d836125f2565b925061223b8a8260ff166028026038011c64ffffffffff1690565b915061224a83600084886124dd565b6122548286612f13565b9450600101612202565b505050505b60005b8351811015611e9557600084828151811061228357612283612ce6565b602002602001015190506122af6002826affffffffffffffffffffff19166124bf90919063ffffffff16565b15612331576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906122fe908e908e908e908e908e908e90600401612f9f565b600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b505050505b50600101612266565b61234f858561234984876123ac565b85612672565b5050505050565b6000828260405160200161236b929190612ff8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156123dd576123d360ff601b83900360080287901c1683612f13565b91506001016123b1565b509392505050565b60006020821061240b5760208204840193506020828161240757612407613034565b0691505b508254600882021b6020829003808411156123dd576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061247057612470612ce6565b602090810291909101015260006124a87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361290d565b905061185f6124ba8260008451612947565b6129d5565b60008160ff16826124d08560581c90565b1660ff1614905092915050565b821561255757602083106125075760208304840193506020838161250357612503613034565b0692505b82156125575760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116125485750506106f6565b50600194909401939182900391015b5b602082106125795780518455600190930192601f1990910190602001612558565b81156106f6576000600019600884021c8554835182191691161785555050505050565b600082826040516020016125b1929190612ff8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612607929190612ff8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036126fc57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516126ef9392919061304a565b60405180910390a26106f6565b60006127088585612356565b9050600061271586612436565b905060005b81518110156127ea57600082828151811061273757612737612ce6565b602002602001015190506127636004826affffffffffffffffffffff19166124bf90919063ffffffff16565b156127e1576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906127ae908b908b908b908b90600401613087565b600060405180830381600087803b1580156127c857600080fd5b505af11580156127dc573d6000803e3d6000fd5b505050505b5060010161271a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161281f9392919061304a565b60405180910390a261283a828565ffffffffffff16856129e6565b60005b8151811015610ccf57600082828151811061285a5761285a612ce6565b602002602001015190506128866008826affffffffffffffffffffff19166124bf90919063ffffffff16565b15612904576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906128d1908b908b908b908b90600401613087565b600060405180830381600087803b1580156128eb57600080fd5b505af11580156128ff573d6000803e3d6000fd5b505050505b5060010161283d565b606061185f61291d8585856125f2565b60006129428561292d89896129fc565b9060ff166028026038011c64ffffffffff1690565b612a0f565b6000818311806129575750835182115b15612994578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161115a939291906130c0565b602084016129a28482612f13565b905060006129b08585612df8565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611d1a8360156000612a32565b611f5a838383516129f78560200190565b6124dd565b6000611d1a612a0b848461259c565b5490565b60405160208101601f19603f84840101166040528282526123dd85858584612aad565b60606000612a408560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281612a6657612a66613034565b04905060405193506020840160208202810160405281855260005b82811015612aa1578451871c825293870193602090910190600101612a81565b50505050509392505050565b8215612b345760208310612ad757602083048401935060208381612ad357612ad3613034565b0692505b8215612b34576020839003600081841015612afa5750600019600884021c612b04565b50600019600882021c5b8554600886021b818451168219821617845250818411612b255750506106f6565b50600194909401939182900391015b5b60208210612b565783548152600190930192601f1990910190602001612b35565b81156106f6576000600019600884021c8251865482191691161782525050505050565b600060208284031215612b8b57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215612be357600080fd5b813567ffffffffffffffff80821115612bfb57600080fd5b818401915084601f830112612c0f57600080fd5b813581811115612c2157612c21612bbb565b604051601f8201601f19908116603f01168101908382118183101715612c4957612c49612bbb565b81604052828152876020848701011115612c6257600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156118c15760001960209190910360031b1b16919050565b60005b83811015612cc1578181015183820152602001612ca9565b50506000910152565b60008251612cdc818460208701612ca6565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612d2a816020860160208601612ca6565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612d8b57601f19868403018952612d79838351612d12565b98840198925090830190600101612d5d565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612dc360c0830185612d3e565b82810360a0840152612dd58185612d3e565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561020157610201612de2565b808202811582820484141761020157610201612de2565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611f8c6060830184612d12565b82815260406020820152600061185f6040830184612d12565b602081526000611d1a6020830184612d3e565b60008151808452602080850194506020840160005b83811015612ec057815187529582019590820190600101612ea4565b509495945050505050565b848152608060208201526000612ee46080830186612e8f565b60ff949094166040830152506060015292915050565b600060208284031215612f0c57600080fd5b5051919050565b8082018082111561020157610201612de2565b60008351612f38818460208801612ca6565b835190830190612f4c818360208801612ca6565b01949350505050565b608081526000612f686080830187612e8f565b8281036020840152612f7a8187612d12565b90508460408401528281036060840152612f948185612d12565b979650505050505050565b86815260c060208201526000612fb860c0830188612e8f565b8281036040840152612fca8188612d12565b90508560608401528281036080840152612fe48186612d12565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b828110156130275781518452928401929084019060010161300b565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60608152600061305d6060830186612e8f565b65ffffffffffff85166020840152828103604084015261307d8185612d12565b9695505050505050565b8481526080602082015260006130a06080830186612e8f565b65ffffffffffff851660408401528281036060840152612f948185612d12565b6060815260006130d36060830186612d12565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50611a61806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806332c0520f1161005b57806332c0520f146100dd57806345ec9354146100f25780639081c75814610105578063e1af802c1461010d57600080fd5b806301ffc9a714610082578063119df25f146100aa5780631a86b550146100ca575b600080fd5b6100956100903660046115b9565b610115565b60405190151581526020015b60405180910390f35b6100b26101fa565b6040516001600160a01b0390911681526020016100a1565b6100956100d83660046116b5565b610209565b6100f06100eb36600461170c565b61027b565b005b604051601f1936013581526020016100a1565b6100b261029c565b6100b26102a6565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a857507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b806101f457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006102046102b0565b905090565b8051602082012060009081610227866102206101fa565b87856102e2565b90508060010361024f576102448661023d6101fa565b87856103f9565b600192505050610274565b801561026d5760001901610244866102656101fa565b8785856104e4565b6000925050505b9392505050565b6102966102866101fa565b85858580519060200120856104e4565b50505050565b6000610204610619565b6000610204610623565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102df5750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b816000815181106103285761032861176b565b602002602001018181525050846001600160a01b031660001b816001815181106103545761035461176b565b60200260200101818152505083816002815181106103745761037461176b565b60200260200101818152505082816003815181106103945761039461176b565b602090810291909101015260006103ec7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e2001002000000000000000000000000000000000000000000000000000000061062d565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061043c5761043c61176b565b602002602001018181525050836001600160a01b031660001b816001815181106104685761046861176b565b60200260200101818152505082816002815181106104885761048861176b565b60200260200101818152505081816003815181106104a8576104a861176b565b60209081029190910101526104dd7f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106ea565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b816000815181106105275761052761176b565b602002602001018181525050846001600160a01b031660001b816001815181106105535761055361176b565b60200260200101818152505083816002815181106105735761057361176b565b60200260200101818152505082816003815181106105935761059361176b565b6020026020010181815250506106117f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105dc91815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610793565b505050505050565b6000610204610848565b60006102046108af565b6000806106386108af565b9050306001600160a01b0382160361065e57610656868686866108ee565b9150506103f1565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906106a99089908990899089906004016117bd565b602060405180830381865afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065691906117ec565b60006106f46108af565b9050306001600160a01b03821603610715576107108383610924565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061075c9086908690600401611805565b600060405180830381600087803b15801561077657600080fd5b505af115801561078a573d6000803e3d6000fd5b50505050505050565b600061079d6108af565b9050306001600160a01b038216036107c1576107bc868686868661093b565b610611565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061080e9089908990899089908990600401611864565b600060405180830381600087803b15801561082857600080fd5b505af115801561083c573d6000803e3d6000fd5b50505050505050505050565b6040805160008082526020820190925260006108a57f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e1401001400000000000000000000000000000000000000000000000000000061062d565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806108e9573391505090565b919050565b600061091b6108fd8686610950565b60ff858116601b0360080285901c1661091685876109a6565b6109df565b95945050505050565b610937828261093285610a30565b610ab5565b5050565b6104dd858561094a84876109a6565b85610db4565b600082826040516020016109659291906118ab565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109d7576109cd60ff601b83900360080287901c16836118fd565b91506001016109ab565b509392505050565b600060208210610a0557602082048401935060208281610a0157610a01611910565b0691505b508254600882021b6020829003808411156109d7576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201610a7f57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101f4610aac7f746273746f72650000000000000000005461626c6573000000000000000000008461104f565b602060006109df565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b3b57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b2e9190611926565b60405180910390a2505050565b6000610b468461106b565b905060005b8151811015610c19576000828281518110610b6857610b6861176b565b60200260200101519050610b946040826affffffffffffffffffffff19166110f490919063ffffffff16565b15610c10576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bdd90899089908990600401611939565b600060405180830381600087803b158015610bf757600080fd5b505af1158015610c0b573d6000803e3d6000fd5b505050505b50600101610b4b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c4a9190611926565b60405180910390a26000610c5e8585610950565b9050610cb7816000610c6f86611112565b67ffffffffffffffff811115610c8757610c87611612565b6040519080825280601f01601f191660200182016040528015610cb1576020820181803683370190505b50611135565b6000610cc28461114b565b1115610ce3576000610cd48686611188565b9050610ce18160206111de565b505b60005b8251811015610611576000838281518110610d0357610d0361176b565b60200260200101519050610d2f6080826affffffffffffffffffffff19166110f490919063ffffffff16565b15610dab576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d78908a908a908a90600401611939565b600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b505050505b50600101610ce6565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610e3e57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610e3193929190611962565b60405180910390a2610296565b6000610e4a8585610950565b90506000610e578661106b565b905060005b8151811015610f2c576000828281518110610e7957610e7961176b565b60200260200101519050610ea56004826affffffffffffffffffffff19166110f490919063ffffffff16565b15610f23576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ef0908b908b908b908b9060040161199f565b600060405180830381600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050505b50600101610e5c565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f6193929190611962565b60405180910390a2610f7c828565ffffffffffff1685611135565b60005b815181101561078a576000828281518110610f9c57610f9c61176b565b60200260200101519050610fc86008826affffffffffffffffffffff19166110f490919063ffffffff16565b15611046576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611013908b908b908b908b9060040161199f565b600060405180830381600087803b15801561102d57600080fd5b505af1158015611041573d6000803e3d6000fd5b505050505b50600101610f7f565b6040805160208101849052908101829052600090606001610965565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106110a5576110a561176b565b602090810291909101015260006110dd7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361121b565b90506103f16110ef8260008451611255565b6112ec565b60008160ff16826111058560581c90565b1660ff1614905092915050565b60006008611122600260206119e3565b61112c91906119f6565b9190911c919050565b610710838383516111468560200190565b6112fd565b6000600860018061115e600260206119e3565b61116891906119e3565b61117291906119e3565b61117c91906119f6565b8260ff911c1692915050565b6000828260405160200161119d9291906118ab565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206111ed83601f6118fd565b6111f79190611a0d565b61120190846118fd565b90505b808310156107105760008355600183019250611204565b60606103f161122b8585856113bc565b60006112508561123b898961143c565b9060ff166028026038011c64ffffffffff1690565b61144f565b6000818311806112655750835182115b156112ab578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016112a293929190611a2f565b60405180910390fd5b602084016112b984826118fd565b905060006112c785856119e3565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006102748360156000611472565b821561137757602083106113275760208304840193506020838161132357611323611910565b0692505b82156113775760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611368575050610296565b50600194909401939182900391015b5b602082106113995780518455600190930192601f1990910190602001611378565b8115610296576000600019600884021c8554835182191691161785555050505050565b600083836040516020016113d19291906118ab565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061027461144b8484611188565b5490565b60405160208101601f19603f84840101166040528282526109d7858585846114ed565b606060006114808560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816114a6576114a6611910565b04905060405193506020840160208202810160405281855260005b828110156114e1578451871c8252938701936020909101906001016114c1565b50505050509392505050565b821561157457602083106115175760208304840193506020838161151357611513611910565b0692505b821561157457602083900360008184101561153a5750600019600884021c611544565b50600019600882021c5b8554600886021b818451168219821617845250818411611565575050610296565b50600194909401939182900391015b5b602082106115965783548152600190930192601f1990910190602001611575565b8115610296576000600019600884021c8251865482191691161782525050505050565b6000602082840312156115cb57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461027457600080fd5b80356001600160a01b03811681146108e957600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261163957600080fd5b813567ffffffffffffffff8082111561165457611654611612565b604051601f8301601f19908116603f0116810190828211818310171561167c5761167c611612565b8160405283815286602085880101111561169557600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156116ca57600080fd5b6116d3846115fb565b925060208401359150604084013567ffffffffffffffff8111156116f657600080fd5b61170286828701611628565b9150509250925092565b6000806000806080858703121561172257600080fd5b61172b856115fb565b935060208501359250604085013567ffffffffffffffff81111561174e57600080fd5b61175a87828801611628565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156117b257815187529582019590820190600101611796565b509495945050505050565b8481526080602082015260006117d66080830186611781565b60ff949094166040830152506060015292915050565b6000602082840312156117fe57600080fd5b5051919050565b8281526040602082015260006103f16040830184611781565b6000815180845260005b8181101561184457602081850181015186830182015201611828565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061187d60a0830187611781565b60ff861660408401528281036060840152611898818661181e565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156118da578151845292840192908401906001016118be565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101f4576101f46118e7565b634e487b7160e01b600052601260045260246000fd5b6020815260006102746020830184611781565b8381526060602082015260006119526060830185611781565b9050826040830152949350505050565b6060815260006119756060830186611781565b65ffffffffffff851660208401528281036040840152611995818561181e565b9695505050505050565b8481526080602082015260006119b86080830186611781565b65ffffffffffff8516604084015282810360608401526119d8818561181e565b979650505050505050565b818103818111156101f4576101f46118e7565b80820281158282048414176101f4576101f46118e7565b600082611a2a57634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a42606083018661181e565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061199b806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100dd5780639081c758146100f057806393b94f61146100f8578063e1af802c1461010d57600080fd5b806301ffc9a714610082578063119df25f146100aa5780631a86b550146100ca575b600080fd5b610095610090366004611542565b610115565b60405190151581526020015b60405180910390f35b6100b26101fa565b6040516001600160a01b0390911681526020016100a1565b6100956100d83660046115b1565b610209565b604051601f1936013581526020016100a1565b6100b261026e565b61010b61010636600461167c565b610278565b005b6100b2610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a857507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b806101f457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061020461029a565b905090565b60008061021e856102186101fa565b866102cc565b9050806001036102445761023a856102346101fa565b866103c0565b6001915050610267565b8015610261576000190161023a8561025a6101fa565b868461048a565b60009150505b9392505050565b600061020461059e565b61028b6102836101fa565b84848461048a565b505050565b60006102046105a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c95750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b81600081518110610312576103126116af565b602002602001018181525050836001600160a01b031660001b8160018151811061033e5761033e6116af565b602002602001018181525050828160028151811061035e5761035e6116af565b602090810291909101015260006103b67f7462000000000000000000000000000053797374656d626f756e6444656c656783837e200100200000000000000000000000000000000000000000000000000000006105b2565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b81600081518110610403576104036116af565b602002602001018181525050826001600160a01b031660001b8160018151811061042f5761042f6116af565b602002602001018181525050818160028151811061044f5761044f6116af565b60209081029190910101526104847f7462000000000000000000000000000053797374656d626f756e6444656c656782610677565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104cd576104cd6116af565b602002602001018181525050836001600160a01b031660001b816001815181106104f9576104f96116af565b6020026020010181815250508281600281518110610519576105196116af565b6020026020010181815250506105977f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161056291815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061071b565b5050505050565b60006102046107d1565b6000610204610838565b6000806105bd610838565b9050306001600160a01b038216036105e3576105db86868686610877565b91505061066f565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061062e908990899089908990600401611701565b602060405180830381865afa15801561064b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105db9190611730565b949350505050565b6000610681610838565b9050306001600160a01b0382160361069d5761028b83836108ad565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106e49086908690600401611749565b600060405180830381600087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b50505050505050565b6000610725610838565b9050306001600160a01b038216036107495761074486868686866108c4565b6107c9565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061079690899089908990899089906004016117a8565b600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050505b505050505050565b60408051600080825260208201909252600061082e7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e140100140000000000000000000000000000000000000000000000000000006105b2565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610872573391505090565b919050565b60006108a461088686866108d9565b60ff858116601b0360080285901c1661089f858761092f565b610968565b95945050505050565b6108c082826108bb856109b9565b610a3e565b5050565b61059785856108d3848761092f565b85610d3d565b600082826040516020016108ee9291906117ef565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109605761095660ff601b83900360080287901c1683611841565b9150600101610934565b509392505050565b60006020821061098e5760208204840193506020828161098a5761098a611854565b0691505b508254600882021b602082900380841115610960576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201610a0857507e60030220202000000000000000000000000000000000000000000000000000919050565b6101f4610a357f746273746f72650000000000000000005461626c65730000000000000000000084610fd8565b60206000610968565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610ac457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610ab7919061186a565b60405180910390a2505050565b6000610acf84610ff4565b905060005b8151811015610ba2576000828281518110610af157610af16116af565b60200260200101519050610b1d6040826affffffffffffffffffffff191661107d90919063ffffffff16565b15610b99576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b669089908990899060040161187d565b600060405180830381600087803b158015610b8057600080fd5b505af1158015610b94573d6000803e3d6000fd5b505050505b50600101610ad4565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bd3919061186a565b60405180910390a26000610be785856108d9565b9050610c40816000610bf88661109b565b67ffffffffffffffff811115610c1057610c1061159b565b6040519080825280601f01601f191660200182016040528015610c3a576020820181803683370190505b506110be565b6000610c4b846110d4565b1115610c6c576000610c5d8686611111565b9050610c6a816020611167565b505b60005b82518110156107c9576000838281518110610c8c57610c8c6116af565b60200260200101519050610cb86080826affffffffffffffffffffff191661107d90919063ffffffff16565b15610d34576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d01908a908a908a9060040161187d565b600060405180830381600087803b158015610d1b57600080fd5b505af1158015610d2f573d6000803e3d6000fd5b505050505b50600101610c6f565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610dc757837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dba939291906118a6565b60405180910390a2610484565b6000610dd385856108d9565b90506000610de086610ff4565b905060005b8151811015610eb5576000828281518110610e0257610e026116af565b60200260200101519050610e2e6004826affffffffffffffffffffff191661107d90919063ffffffff16565b15610eac576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e79908b908b908b908b906004016118d9565b600060405180830381600087803b158015610e9357600080fd5b505af1158015610ea7573d6000803e3d6000fd5b505050505b50600101610de5565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610eea939291906118a6565b60405180910390a2610f05828565ffffffffffff16856110be565b60005b8151811015610712576000828281518110610f2557610f256116af565b60200260200101519050610f516008826affffffffffffffffffffff191661107d90919063ffffffff16565b15610fcf576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f9c908b908b908b908b906004016118d9565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050505b50600101610f08565b60408051602081018490529081018290526000906060016108ee565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061102e5761102e6116af565b602090810291909101015260006110667f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836111a4565b905061066f61107882600084516111de565b611275565b60008160ff168261108e8560581c90565b1660ff1614905092915050565b600060086110ab6002602061191d565b6110b59190611930565b9190911c919050565b61028b838383516110cf8560200190565b611286565b600060086001806110e76002602061191d565b6110f1919061191d565b6110fb919061191d565b6111059190611930565b8260ff911c1692915050565b600082826040516020016111269291906117ef565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061117683601f611841565b6111809190611947565b61118a9084611841565b90505b8083101561028b576000835560018301925061118d565b606061066f6111b4858585611345565b60006111d9856111c489896113c5565b9060ff166028026038011c64ffffffffff1690565b6113d8565b6000818311806111ee5750835182115b15611234578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161122b93929190611969565b60405180910390fd5b602084016112428482611841565b90506000611250858561191d565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026783601560006113fb565b821561130057602083106112b0576020830484019350602083816112ac576112ac611854565b0692505b82156113005760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112f1575050610484565b50600194909401939182900391015b5b602082106113225780518455600190930192601f1990910190602001611301565b8115610484576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161135a9291906117ef565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102676113d48484611111565b5490565b60405160208101601f19603f848401011660405282825261096085858584611476565b606060006114098560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161142f5761142f611854565b04905060405193506020840160208202810160405281855260005b8281101561146a578451871c82529387019360209091019060010161144a565b50505050509392505050565b82156114fd57602083106114a05760208304840193506020838161149c5761149c611854565b0692505b82156114fd5760208390036000818410156114c35750600019600884021c6114cd565b50600019600882021c5b8554600886021b8184511682198216178452508184116114ee575050610484565b50600194909401939182900391015b5b6020821061151f5783548152600190930192601f19909101906020016114fe565b8115610484576000600019600884021c8251865482191691161782525050505050565b60006020828403121561155457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026757600080fd5b80356001600160a01b038116811461087257600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156115c657600080fd5b6115cf84611584565b925060208401359150604084013567ffffffffffffffff808211156115f357600080fd5b818601915086601f83011261160757600080fd5b8135818111156116195761161961159b565b604051601f8201601f19908116603f011681019083821181831017156116415761164161159b565b8160405282815289602084870101111561165a57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561169157600080fd5b61169a84611584565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116f6578151875295820195908201906001016116da565b509495945050505050565b84815260806020820152600061171a60808301866116c5565b60ff949094166040830152506060015292915050565b60006020828403121561174257600080fd5b5051919050565b82815260406020820152600061066f60408301846116c5565b6000815180845260005b818110156117885760208185018101518683018201520161176c565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117c160a08301876116c5565b60ff8616604084015282810360608401526117dc8186611762565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561181e57815184529284019290840190600101611802565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101f4576101f461182b565b634e487b7160e01b600052601260045260246000fd5b60208152600061026760208301846116c5565b83815260606020820152600061189660608301856116c5565b9050826040830152949350505050565b6060815260006118b960608301866116c5565b65ffffffffffff8516602084015282810360408401526103b68185611762565b8481526080602082015260006118f260808301866116c5565b65ffffffffffff8516604084015282810360608401526119128185611762565b979650505050505050565b818103818111156101f4576101f461182b565b80820281158282048414176101f4576101f461182b565b60008261196457634e487b7160e01b600052601260045260246000fd5b500490565b60608152600061197c6060830186611762565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50611362806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ea5780639081c758146100fd578063d043756a14610105578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa5780631a86b550146100d7575b600080fd5b610095610090366004610f89565b610122565b60405190151581526020015b60405180910390f35b6100b2610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100956100e5366004611005565b610216565b604051601f1936013581526020016100a1565b6100b2610236565b6101186101133660046110d0565b610240565b005b6100b2610256565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b8061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610211610260565b905090565b60008061022a85610225610207565b610292565b42111595945050505050565b600061021161037e565b61025261024b610207565b8383610388565b5050565b6000610211610493565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061028f5750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102e4576102e46110fa565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061031d5761031d6110fa565b602090810291909101015260006103757f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e2001002000000000000000000000000000000000000000000000000000000061049d565b95945050505050565b600061021161057c565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103d6576103d66110fa565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061040f5761040f6110fa565b60200260200101818152505061048d7f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161045891815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006105e3565b50505050565b60006102116106b3565b6000806104a86106b3565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104db576104d3868686866106ff565b915050610574565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061053390899089908990899060040161114c565b602060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d3919061117b565b949350505050565b6040805160008082526020820190925260006105d97f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e1401001400000000000000000000000000000000000000000000000000000061049d565b60601c9392505050565b60006105ed6106b3565b90503073ffffffffffffffffffffffffffffffffffffffff82160361061e57610619868686868661072c565b6106ab565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae09061067890899089908990899089906004016111da565b600060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806106fa573391505090565b919050565b600061037561070e8686610748565b60ff858116601b0360080285901c16610727858761079e565b6107d7565b610741858561073b848761079e565b85610828565b5050505050565b6000828260405160200161075d929190611221565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107cf576107c560ff601b83900360080287901c1683611273565b91506001016107a3565b509392505050565b6000602082106107fd576020820484019350602082816107f9576107f9611286565b0691505b508254600882021b6020829003808411156107cf576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036108b257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108a59392919061129c565b60405180910390a261048d565b60006108be8585610748565b905060006108cb86610acc565b905060005b81518110156109a05760008282815181106108ed576108ed6110fa565b602002602001015190506109196004826affffffffffffffffffffff1916610b5590919063ffffffff16565b15610997576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610964908b908b908b908b906004016112d9565b600060405180830381600087803b15801561097e57600080fd5b505af1158015610992573d6000803e3d6000fd5b505050505b506001016108d0565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109d59392919061129c565b60405180910390a26109f0828565ffffffffffff1685610b73565b60005b8151811015610ac3576000828281518110610a1057610a106110fa565b60200260200101519050610a3c6008826affffffffffffffffffffff1916610b5590919063ffffffff16565b15610aba576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610a87908b908b908b908b906004016112d9565b600060405180830381600087803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b505050505b506001016109f3565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b0657610b066110fa565b60209081029190910101526000610b3e7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b8e565b9050610574610b508260008451610bc8565b610c5f565b60008160ff1682610b668560581c90565b1660ff1614905092915050565b610b8983838351610b848560200190565b610c77565b505050565b6060610574610b9e858585610d36565b6000610bc385610bae8989610db6565b9060ff166028026038011c64ffffffffff1690565b610dc9565b600081831180610bd85750835182115b15610c1e578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610c159392919061131d565b60405180910390fd5b60208401610c2c8482611273565b90506000610c3a8585611342565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610c708360156000610dec565b9392505050565b8215610cf15760208310610ca157602083048401935060208381610c9d57610c9d611286565b0692505b8215610cf15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610ce257505061048d565b50600194909401939182900391015b5b60208210610d135780518455600190930192601f1990910190602001610cf2565b811561048d576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610d4b929190611221565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610c70610dc58484610e67565b5490565b60405160208101601f19603f84840101166040528282526107cf85858584610ebd565b60606000610dfa8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610e2057610e20611286565b04905060405193506020840160208202810160405281855260005b82811015610e5b578451871c825293870193602090910190600101610e3b565b50505050509392505050565b60008282604051602001610e7c929190611221565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610f445760208310610ee757602083048401935060208381610ee357610ee3611286565b0692505b8215610f44576020839003600081841015610f0a5750600019600884021c610f14565b50600019600882021c5b8554600886021b818451168219821617845250818411610f3557505061048d565b50600194909401939182900391015b5b60208210610f665783548152600190930192601f1990910190602001610f45565b811561048d576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f9b57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c7057600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561101a57600080fd5b61102384610fcb565b925060208401359150604084013567ffffffffffffffff8082111561104757600080fd5b818601915086601f83011261105b57600080fd5b81358181111561106d5761106d610fef565b604051601f8201601f19908116603f0116810190838211818310171561109557611095610fef565b816040528281528960208487010111156110ae57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080604083850312156110e357600080fd5b6110ec83610fcb565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561114157815187529582019590820190600101611125565b509495945050505050565b8481526080602082015260006111656080830186611110565b60ff949094166040830152506060015292915050565b60006020828403121561118d57600080fd5b5051919050565b6000815180845260005b818110156111ba5760208185018101518683018201520161119e565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006111f360a0830187611110565b60ff86166040840152828103606084015261120e8186611194565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561125057815184529284019290840190600101611234565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102015761020161125d565b634e487b7160e01b600052601260045260246000fd5b6060815260006112af6060830186611110565b65ffffffffffff8516602084015282810360408401526112cf8185611194565b9695505050505050565b8481526080602082015260006112f26080830186611110565b65ffffffffffff8516604084015282810360608401526113128185611194565b979650505050505050565b6060815260006113306060830186611194565b60208301949094525060400152919050565b818103818111156102015761020161125d56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611869806100206000396000f3fe6080604052600436106100d25760003560e01c8063a3912ec81161007f578063c36e144811610059578063c36e1448146102a1578063d737d0c7146102c1578063e1af802c146102d6578063ea29e3ba146102eb576100d2565b8063a3912ec814610204578063b07ed3a91461023b578063b5531d2114610250576100d2565b806334875054116100b057806334875054146101e457806345ec9354146102065780639081c75814610226576100d2565b806301ffc9a714610148578063119df25f1461017d57806325775aa2146101b7575b3480156100de57600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f867857160405161013e9060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561015457600080fd5b5061016861016336600461133e565b610300565b60405190151581526020015b60405180910390f35b34801561018957600080fd5b50610192610399565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610174565b3480156101c357600080fd5b506101d76101d236600461140c565b6103a8565b60405161017491906114d9565b3480156101f057600080fd5b506102046101ff3660046114ec565b61042c565b005b34801561021257600080fd5b50604051601f193601358152602001610174565b34801561023257600080fd5b50610192610579565b34801561024757600080fd5b50610192610583565b34801561025c57600080fd5b5061027061026b366004611586565b61058d565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610174565b3480156102ad57600080fd5b506102046102bc36600461159f565b6105d7565b3480156102cd57600080fd5b50610192610614565b3480156102e257600080fd5b5061019261061e565b3480156102f757600080fd5b50610204610628565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000148061039357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103a3610714565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103d291906115e8565b600060405180830381855af49150503d806000811461040d576040519150601f19603f3d011682016040523d82523d6000602084013e610412565b606091505b50915091508161042457805181602001fd5b949350505050565b60408051600080825260208201909252906104687f74620000000000000000000000000000000000000000000000000000000000008686610746565b9050306104736107cd565b73ffffffffffffffffffffffffffffffffffffffff16036104cf576104ca8183856040516020016104ab91151560f81b815260010190565b60408051808303601f1901815260008084526020840190925291610819565b610572565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb82848660405160200161050591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161053f959493929190611640565b600060405180830381600087803b15801561055957600080fd5b505af115801561056d573d6000803e3d6000fd5b505050505b5050505050565b60006103a361082f565b60006103a36107cd565b604080518082019091526000808252602082015260405180604001604052806105b4610399565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f7930027300000000000000000000000000000000000000000000000000000000815260040161060b91906114d9565b60405180910390fd5b60006103a3610399565b60006103a3610583565b306106316107cd565b73ffffffffffffffffffffffffffffffffffffffff16036106b5577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106ab906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106ab9060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107435750335b90565b6000610754607060106116a7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610814573391505090565b919050565b610572858585858561082a8b610839565b6108be565b60006103a3610c04565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161088857507e60030220202000000000000000000000000000000000000000000000000000919050565b6103936108b57f746273746f72650000000000000000005461626c65730000000000000000000084610c6b565b60206000610cc4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361094a57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161093d94939291906116ba565b60405180910390a2610bfc565b600061095587610d16565b905060005b8151811015610a2e57600082828151811061097757610977611704565b602002602001015190506109a36001826affffffffffffffffffffff1916610d9f90919063ffffffff16565b15610a25576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109f2908c908c908c908c908c908c9060040161171a565b600060405180830381600087803b158015610a0c57600080fd5b505af1158015610a20573d6000803e3d6000fd5b505050505b5060010161095a565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a6594939291906116ba565b60405180910390a26000610a798888610dbd565b90506000602087019050610a91826000895184610dd2565b6000610a9c85610e90565b1115610b20576000610aae8a8a610ecd565b878155905060208601915060008060005b610ac888610e90565b8160ff161015610b1b57610add8d8d83610f23565b9250610af88a8260ff166028026038011c64ffffffffff1690565b9150610b078360008488610dd2565b610b1182866116a7565b9450600101610abf565b505050505b60005b8351811015610bf7576000848281518110610b4057610b40611704565b60200260200101519050610b6c6002826affffffffffffffffffffff1916610d9f90919063ffffffff16565b15610bee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610bbb908e908e908e908e908e908e9060040161171a565b600060405180830381600087803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b505050505b50600101610b23565b505050505b505050505050565b604080516000808252602082019092526000610c617f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610fa3565b60601c9392505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610cea57602082048401935060208281610ce657610ce6611773565b0691505b508254600882021b602082900380841115610d0e576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d5057610d50611704565b60209081029190910101526000610d887f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361107a565b9050610424610d9a82600084516110b4565b611142565b60008160ff1682610db08560581c90565b1660ff1614905092915050565b60008282604051602001610c83929190611789565b8215610e4c5760208310610dfc57602083048401935060208381610df857610df8611773565b0692505b8215610e4c5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610e3d575050610e8a565b50600194909401939182900391015b5b60208210610e6e5780518455600190930192601f1990910190602001610e4d565b8115610e8a5783548151600019600885021c9182169119161784555b50505050565b60006008600180610ea3600260206117c5565b610ead91906117c5565b610eb791906117c5565b610ec191906117d8565b8260ff911c1692915050565b60008282604051602001610ee2929190611789565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610f38929190611789565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600080610fae6107cd565b90503073ffffffffffffffffffffffffffffffffffffffff821603610fe157610fd98686868661115a565b915050610424565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906110399089908990899089906004016117ef565b602060405180830381865afa158015611056573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd9919061181e565b606061042461108a858585610f23565b60006110af8561109a8989611190565b9060ff166028026038011c64ffffffffff1690565b6111a3565b6000818311806110c45750835182115b15611101578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161060b93929190611837565b6020840161110f84826116a7565b9050600061111d85856117c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061115383601560006111c6565b9392505050565b60006111876111698686610dbd565b60ff858116601b0360080285901c166111828587611241565b610cc4565b95945050505050565b600061115361119f8484610ecd565b5490565b60405160208101601f19603f8484010116604052828252610d0e85858584611272565b606060006111d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111fa576111fa611773565b04905060405193506020840160208202810160405281855260005b82811015611235578451871c825293870193602090910190600101611215565b50505050509392505050565b600080805b8360ff16811015610d0e5761126860ff601b83900360080287901c16836116a7565b9150600101611246565b82156112f9576020831061129c5760208304840193506020838161129857611298611773565b0692505b82156112f95760208390036000818410156112bf5750600019600884021c6112c9565b50600019600882021c5b8554600886021b8184511682198216178452508184116112ea575050610e8a565b50600194909401939182900391015b5b6020821061131b5783548152600190930192601f19909101906020016112fa565b8115610e8a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561135057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461115357600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156113b1576113b1611380565b604051601f8501601f19908116603f011681019082821181831017156113d9576113d9611380565b816040528093508581528686860111156113f257600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561141f57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461144357600080fd5b9150602083013567ffffffffffffffff81111561145f57600080fd5b8301601f8101851361147057600080fd5b61147f85823560208401611396565b9150509250929050565b60005b838110156114a457818101518382015260200161148c565b50506000910152565b600081518084526114c5816020860160208601611489565b601f01601f19169290920160200192915050565b60208152600061115360208301846114ad565b60008060006060848603121561150157600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461153157600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461156657600080fd5b91506040840135801515811461157b57600080fd5b809150509250925092565b60006020828403121561159857600080fd5b5035919050565b6000602082840312156115b157600080fd5b813567ffffffffffffffff8111156115c857600080fd5b8201601f810184136115d957600080fd5b61042484823560208401611396565b600082516115fa818460208701611489565b9190910192915050565b60008151808452602080850194506020840160005b8381101561163557815187529582019590820190600101611619565b509495945050505050565b85815260a06020820152600061165960a0830187611604565b828103604084015261166b81876114ad565b9050846060840152828103608084015261168581856114ad565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039357610393611691565b6080815260006116cd6080830187611604565b82810360208401526116df81876114ad565b905084604084015282810360608401526116f981856114ad565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061173360c0830188611604565b828103604084015261174581886114ad565b9050856060840152828103608084015261175f81866114ad565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156117b85781518452928401929084019060010161179c565b5091979650505050505050565b8181038181111561039357610393611691565b808202811582820484141761039357610393611691565b8481526080602082015260006118086080830186611604565b60ff949094166040830152506060015292915050565b60006020828403121561183057600080fd5b5051919050565b60608152600061184a60608301866114ad565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506105ff806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c15780639081c758146100d4578063e1af802c146100dc57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a36600461048e565b6100e4565b60405190151581526020015b60405180910390f35b61009c61017d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b604051601f19360135815260200161008b565b61009c61018c565b61009c610196565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000148061017757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101876101a0565b905090565b60006101876101d2565b60006101876101dc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101cf5750335b90565b60006101876101e6565b600061018761024d565b6040805160008082526020820190925260006102437f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610299565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610294573391505090565b919050565b6000806102a461024d565b90503073ffffffffffffffffffffffffffffffffffffffff8216036102d7576102cf86868686610378565b915050610370565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061032f9089908990899089906004016104d7565b602060405180830381865afa15801561034c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cf9190610534565b949350505050565b60006103a561038786866103ae565b60ff858116601b0360080285901c166103a08587610404565b61043d565b95945050505050565b600082826040516020016103c392919061054d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156104355761042b60ff601b83900360080287901c1683610589565b9150600101610409565b509392505050565b6000602082106104635760208204840193506020828161045f5761045f6105c3565b0691505b508254600882021b602082900380841115610435576001850154600882021c82179150509392505050565b6000602082840312156104a057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104d057600080fd5b9392505050565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b8181101561051a578451835293830193918301916001016104fe565b505060ff9690961660408501525050506060015292915050565b60006020828403121561054657600080fd5b5051919050565b8281526000602080830184516020860160005b8281101561057c57815184529284019290840190600101610560565b5091979650505050505050565b80820180821115610177577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a26080516154fc620000e8600039600081816103ee01526115ac01526154fc6000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a0414610750578063dbbf0e2114610650578063e228a4a314610770578063ef6ea8621461079057610266565b8063c4d66de8146106d0578063cc49db7e146106f0578063d03edb8c14610710578063d4285dc21461073057610266565b8063af068c9e116100d1578063af068c9e14610670578063b047c1eb14610690578063c0a2895a146106b0578063c1122229146105ca57610266565b80638c364d59146106105780639f1fcf0a14610630578063a53417ed1461065057610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461058a578063505a181d146105aa5780636951955d146105ca578063894ecc58146105fd57610266565b8063390baae0146104fa5780633a77c2c21461051a5780633ae7af0814610548578063419b58fd1461055b57610266565b8063150f3262116101ab578063150f32621461047a5780631e7889771461049a578063298314fb146104ba5780633708196e146104da57610266565b806302d05d3f146103dc57806305242d2f1461042d578063114a72661461045a57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614616565b6107b0565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614616565b61025f3484614653565b610831565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b60008080806102a66108d2565b6001600160a01b0316036103185760006102bf33610921565b146102f8576040517f58c7e8d6000000000000000000000000000000000000000000000000000000008152336004820152602401610290565b506001821561030f5761030a826109a6565b610318565b610318336109a6565b6000806103306000356001600160e01b031916610a1f565b91509150816000801b0361037e576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103c26000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610aef9050565b905060006103d233858434610b22565b9050805160208201f35b3480156103e857600080fd5b506104107f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043957600080fd5b5061044d6104483660046146c3565b610b4f565b6040516104249190614779565b34801561046657600080fd5b506102646104753660046147ce565b610b92565b34801561048657600080fd5b506102646104953660046147ce565b610c45565b3480156104a657600080fd5b5061044d6104b536600461485b565b610cf0565b3480156104c657600080fd5b506102646104d53660046148b9565b610d3a565b3480156104e657600080fd5b506102646104f5366004614966565b610e23565b34801561050657600080fd5b50610264610515366004614966565b610ed9565b34801561052657600080fd5b5061053a6105353660046149fc565b610f86565b604051908152602001610424565b61044d610556366004614acc565b610f97565b34801561056757600080fd5b5061057b610576366004614b13565b611071565b60405161042493929190614b66565b34801561059657600080fd5b5061044d6105a5366004614c06565b6110c6565b3480156105b657600080fd5b506102646105c5366004614c6f565b6110d5565b3480156105d657600080fd5b507f312e302e302d756e61756469746564000000000000000000000000000000000061053a565b61044d61060b366004614cd0565b61114a565b34801561061c57600080fd5b5061053a61062b3660046146c3565b611344565b34801561063c57600080fd5b5061053a61064b366004614d29565b611387565b34801561065c57600080fd5b5061053a61066b366004614d88565b611395565b34801561067c57600080fd5b5061026461068b366004614ddf565b6113a2565b34801561069c57600080fd5b506102646106ab366004614e19565b61141a565b3480156106bc57600080fd5b506102646106cb366004614ea8565b6114c5565b3480156106dc57600080fd5b506102646106eb366004614f35565b611573565b3480156106fc57600080fd5b5061057b61070b366004614c6f565b6116b5565b34801561071c57600080fd5b5061044d61072b36600461485b565b611707565b34801561073c57600080fd5b5061053a61074b3660046149fc565b611748565b34801561075c57600080fd5b5061026461076b3660046146c3565b611753565b34801561077c57600080fd5b5061053a61078b3660046149fc565b6117d3565b34801561079c57600080fd5b506102646107ab3660046147ce565b6117de565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106107e9576107e9614f52565b602090810291909101015260006108297f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611889565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061086757610867614f52565b6020026020010181815250506108cd7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b826000856040516020016108b091815260200190565b60408051601f19818403018152919052630100080160dd1b6118b6565b505050565b6040805160008082526020820190925260006109177f7462776f726c640000000000000000005472616e73616374696f6e436f6e74658383630500400560da1b6118cb565b60601c9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b8160008151811061096657610966614f52565b602090810291909101015260006108297f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b6118cb565b604080516000808252602082018352606084901b6bffffffffffffffffffffffff19169282019290925290610a1b907f7462776f726c640000000000000000005472616e73616374696f6e436f6e7465908390605482015b60408051601f19818403018152919052630500400560da1b611988565b5050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110610a7857610a78614f52565b602090810291909101015260008080610ad17f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e24020020040000000000000000000000000000000000000000000000000000611a3d565b925092509250610ae2838383611b45565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610b3387878787611b5d565b9150915081610b4557610b4581611d2d565b9695505050505050565b6060610b4586868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250879150611d359050565b303303610bc0576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610bca8633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611dc692505050565b505050505050565b303303610c73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c7d8633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611de192505050565b6060610d3185858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611e1c915050565b95945050505050565b303303610d68576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d728833611d7a565b610e198888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611e5692505050565b5050505050505050565b303303610e51576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e5b8733611d7a565b610ed08787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611e6c915050565b50505050505050565b303303610f07576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f118733611d7a565b610ed08787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506118b6915050565b6000610f9182611eaf565b92915050565b6060303303610fc7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6000808080610fd46108d2565b6001600160a01b031603611046576000610fed33610921565b14611026576040517f58c7e8d6000000000000000000000000000000000000000000000000000000008152336004820152602401610290565b506001821561103d57611038826109a6565b611046565b611046336109a6565b61105233878734610b22565b93508015156001036110685761106860006109a6565b50505092915050565b6060600060606110b687878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250611a3d915050565b9250925092509450945094915050565b6060610b458686868686611f34565b303303611103576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61110d8333611d7a565b6108cd8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061203792505050565b606030330361117a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6001846000806111886108d2565b6001600160a01b0316036111fa5760006111a133610921565b146111da576040517f58c7e8d6000000000000000000000000000000000000000000000000000000008152336004820152602401610290565b50600182156111f1576111ec826109a6565b6111fa565b6111fa336109a6565b336001600160a01b0388160361121d5761121633878734610b22565b9350611326565b6000611229883361204a565b90506112388189338a8a6120fb565b156112515761124988888834610b22565b945050611326565b600061125e89600061204a565b905061126d818a338b8b6120fb565b156112875761127e89898934610b22565b95505050611326565b60006112b9616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008b16176121d0565b90506112c8818b338c8c6120fb565b156112e3576112d98a8a8a34610b22565b9650505050611326565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152336024820152604401610290565b80151560010361133a5761133a60006109a6565b5050509392505050565b6000610b45868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118899050565b6000610d3185858585612249565b600061082984848461228d565b3033036113d0576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611410910160405160208183030381529060405261140a90614616565b336122a3565b610a1b82826122f4565b303303611448576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114528633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8901819004810282018101909252878152899350915087908790819084018382808284376000920191909152506123a792505050565b3033036114f3576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114fd8833611d7a565b610e198888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a92508991899089908190840183828082843760009201919091525061264292505050565b3033036115a1576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116455760408051616e7360f01b60208201526000602282018190526030820152611610910160405160208183030381529060405261160b90614616565b61265a565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614f68565b600061164f612797565b6001600160a01b03161461168f576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611698816127dc565b6040805160008152602081019091526116b29082906122f4565b50565b6060600060606116f88686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283892505050565b92509250925093509350939050565b6060610d318585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061285e915050565b6000610f9182612874565b303303611781576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61178b8533611d7a565b6117cc858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506128e89050565b5050505050565b6000610f9182612941565b30330361180c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6118168633611d7a565b610c3d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061296792505050565b6000610d3161189886866129a2565b60ff858116601b0360080285901c166118b185876129f8565b612a31565b6117cc85856118c584876129f8565b856123a7565b6000806118d6612a82565b9050306001600160a01b038216036118fc576118f486868686611889565b915050610829565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990611947908990899089908990600401614fcf565b602060405180830381865afa158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f49190614ffe565b6000611992612a82565b9050306001600160a01b038216036119b6576119b186868686866118b6565b610c3d565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090611a039089908990899089908990600401615017565b600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b50505050505050505050565b6060600060606000611a4e85612abc565b9050611a5b878783612adf565b93506000611a6886612b18565b90508015611b3a57611a7a8888612b55565b935066ffffffffffffff841667ffffffffffffffff811115611a9e57611a9e614a15565b6040519080825280601f01601f191660200182016040528015611ac8576020820181803683370190505b5092506020830160005b828160ff161015611b37576000611aea8b8b84612b68565b90506000611b07888460ff166028026038011c64ffffffffff1690565b9050611b168260008387612be8565b611b208185614653565b935050508080611b2f9061505e565b915050611ad2565b50505b505093509350939050565b600080611b5185612cb4565b90969095509350505050565b600060606000611b6c86612cc9565b905060005b8151811015611c3f576000828281518110611b8e57611b8e614f52565b60200260200101519050611bba6001826affffffffffffffffffffff1916612d5290919063ffffffff16565b15611c36576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190611c03908c908c908c9060040161507d565b600060405180830381600087803b158015611c1d57600080fd5b505af1158015611c31573d6000803e3d6000fd5b505050505b50600101611b71565b50611c4c87858888612d70565b909350915060005b8151811015611d22576000828281518110611c7157611c71614f52565b60200260200101519050611c9d6002826affffffffffffffffffffff1916612d5290919063ffffffff16565b15611d19576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611ce6908c908c908c9060040161507d565b600060405180830381600087803b158015611d0057600080fd5b505af1158015611d14573d6000803e3d6000fd5b505050505b50600101611c54565b505094509492505050565b805160208201fd5b6060611d4082612e8b565b8360ff161015611d5d57611d5685858585612e9d565b9050610829565b611d568585611d6b85612e8b565b611d7590876150a5565b611e1c565b611d848282612eca565b610a1b57611d918261265a565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614f68565b611ddb84848484611dd689611eaf565b611e6c565b50505050565b6000611ded8585612b55565b90506000611e0a828560ff166028026038011c64ffffffffff1690565b9050610c3d8686868460008888612f0d565b6060610829611e2c858585612b68565b6000611e5185611e3c8989612b55565b9060ff166028026038011c64ffffffffff1690565b613345565b6117cc8585858585611e678b611eaf565b613368565b611e7581612e8b565b8360ff161015611e9157611e8c85858585856118b6565b6117cc565b6117cc8585611e9f84612e8b565b611ea990876150a5565b85612967565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611efe57507e60030220202000000000000000000000000000000000000000000000000000919050565b610f91611f2b7f746273746f72650000000000000000005461626c657300000000000000000000846136a1565b60206000612a31565b606081831115611f7a576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611f868787612b55565b90506000611fa3828760ff166028026038011c64ffffffffff1690565b90508085101580611fb357508084115b1561200e578081861015611fd157611fcc6001866150be565b611fd3565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b600061201b898989612b68565b905061202a8187888803613345565b9998505050505050505050565b610a1b828261204585611eaf565b6136bd565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b8160008151811061208f5761208f614f52565b602002602001018181525050826001600160a01b031660001b816001815181106120bb576120bb614f52565b60209081029190910101526000610d317f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611889565b6000612106866139bc565b1561211357506001610d31565b8561212057506000610d31565b60008061219c8660008a8a898960405160240161213f9392919061507d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612d70565b91509150816121b057600092505050610d31565b808060200190518101906121c491906150d1565b98975050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061220957612209614f52565b602090810291909101015260006108297f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611889565b60008061225583612e8b565b90508060ff168460ff1610156122795760ff848116601b0360080284901c166118f4565b6118f4868661228884886150a5565b613a37565b600061082984848461229e88611eaf565b612249565b6001600160a01b0381166122dd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613a47565b6001600160a01b031614610a1b57611d918261265a565b61231e827f6fdd1c8000000000000000000000000000000000000000000000000000000000613acb565b61239333600084846040516024016123369190614779565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b033500000000000000000000000000000000000000000000000000000000179052613b26565b50610a1b8282805190602001206001613b37565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361243157837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051612424939291906150f3565b60405180910390a2611ddb565b600061243d85856129a2565b9050600061244a86613c1b565b905060005b815181101561251f57600082828151811061246c5761246c614f52565b602002602001015190506124986004826affffffffffffffffffffff1916612d5290919063ffffffff16565b15612516576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906124e3908b908b908b908b90600401615126565b600060405180830381600087803b1580156124fd57600080fd5b505af1158015612511573d6000803e3d6000fd5b505050505b5060010161244f565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051612554939291906150f3565b60405180910390a261256f828565ffffffffffff1685613c8d565b60005b8151811015610ed057600082828151811061258f5761258f614f52565b602002602001015190506125bb6008826affffffffffffffffffffff1916612d5290919063ffffffff16565b15612639576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612606908b908b908b908b90600401615126565b600060405180830381600087803b15801561262057600080fd5b505af1158015612634573d6000803e3d6000fd5b505050505b50600101612572565b610c3d8686868686866126558d8d612b55565b612f0d565b606081601081901b600061266d83613ca3565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156126c8576126c37fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613cba565b6126ff565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156127355761273083613cba565b61276c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161277e9392919061515f565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006109177f7462776f726c64000000000000000000496e69744d6f64756c654164647265738383630500400560da1b6118cb565b604080516000808252602082018352606084901b6bffffffffffffffffffffffff19169282019290925290610a1b907f7462776f726c64000000000000000000496e69744d6f64756c65416464726573908390605482016109fe565b606060006060612851858561284c88611eaf565b611a3d565b9250925092509250925092565b606061082984848461286f88611eaf565b611d35565b600061287f82613d5e565b905061288a82613df0565b6128e35781826040516020016128a291815260200190565b60408051601f19818403018152908290527f41e713ad00000000000000000000000000000000000000000000000000000000825261029092916004016151ed565b919050565b60006128f48585612b55565b90506000612911828560ff166028026038011c64ffffffffff1690565b9050610c3d86868661292a8764ffffffffff87166150be565b604080516000815260208101909152889088612f0d565b600061294c82613e8d565b9050806128e35781826040516020016128a291815260200190565b60006129738585612b55565b90506000612990828560ff166028026038011c64ffffffffff1690565b9050610c3d8686866000858888612f0d565b600082826040516020016129b7929190615206565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015612a2957612a1f60ff601b83900360080287901c1683614653565b91506001016129fd565b509392505050565b600060208210612a5757602082048401935060208281612a5357612a53615242565b0691505b508254600882021b602082900380841115612a29576001850154600882021c82179150509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806128e3573391505090565b60006008612acc600260206150be565b612ad69190615258565b9190911c919050565b606081600003612afe5750604080516020810190915260008152610b1b565b6000612b0a85856129a2565b9050610d3181600085613345565b60006008600180612b2b600260206150be565b612b3591906150be565b612b3f91906150be565b612b499190615258565b8260ff911c1692915050565b6000610b1b612b648484613f1f565b5490565b60008383604051602001612b7d929190615206565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612c6f5760208310612c1257602083048401935060208381612c0e57612c0e615242565b0692505b8215612c6f576020839003600081841015612c355750600019600884021c612c3f565b50600019600882021c5b8554600886021b818451168219821617845250818411612c60575050611ddb565b50600194909401939182900391015b5b60208210612c915783548152600190930192601f1990910190602001612c70565b8115611ddb576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612d0357612d03614f52565b60209081029190910101526000612d3b7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611e1c565b9050610829612d4d8260008451613f75565b614003565b60008160ff1682612d638560581c90565b1660ff1614905092915050565b60006060600080612d8086614014565b90925090506001600160a01b038216612dd15785612d9d8761265a565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016102909291906151ed565b80612de057612de08689611d7a565b8615612e2c577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612e19826107b0565b9050612e298261025f8b84614653565b50505b6000612e388760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612e7057612e6b888884886140b8565b612e7c565b612e7c88888488614130565b90999098509650505050505050565b600060086001612b35600260206150be565b6060610d31612eac86866129a2565b612eb684866129f8565b60ff868116601b0360080286901c16613345565b6000612efd616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783614191565b80610b1b5750610b1b8383614191565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612fcd577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612f8b91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261029093929160040161526f565b6000612fe8828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361300191906150be565b61300b9190614653565b905080821415801561302d57508161302386886152b0565b64ffffffffff1614155b1561307d576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff1611156130ce576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b60006130db84898461425a565b905060006130e88b613c1b565b905060005b81518110156131b357600082828151811061310a5761310a614f52565b602002602001015190506131366010826affffffffffffffffffffff1916612d5290919063ffffffff16565b156131aa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b815260040161317797969594939291906152d5565b600060405180830381600087803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b505050505b506001016130ed565b5064ffffffffff881660005b8a60ff168160ff1610156131f2576131e6878260ff166028026038011c64ffffffffff1690565b909101906001016131bf565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161322b959493929190615333565b60405180910390a25082841461324c5760006132478c8c613f1f565b839055505b60006132598c8c8c612b68565b905061326d818a64ffffffffff1689613c8d565b5060005b815181101561333757600082828151811061328e5761328e614f52565b602002602001015190506132ba6020826affffffffffffffffffffff1916612d5290919063ffffffff16565b1561332e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016132fb97969594939291906152d5565b600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b505050505b50600101613271565b505050505050505050505050565b60405160208101601f19603f8484010116604052828252612a2985858584612be8565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036133f457857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516133e79493929190615379565b60405180910390a2610c3d565b60006133ff87613c1b565b905060005b81518110156134d857600082828151811061342157613421614f52565b6020026020010151905061344d6001826affffffffffffffffffffff1916612d5290919063ffffffff16565b156134cf576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061349c908c908c908c908c908c908c906004016153b8565b600060405180830381600087803b1580156134b657600080fd5b505af11580156134ca573d6000803e3d6000fd5b505050505b50600101613404565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98787878760405161350f9493929190615379565b60405180910390a2600061352388886129a2565b9050600060208701905061353b826000895184614328565b600061354685612b18565b11156135ca5760006135588a8a613f1f565b878155905060208601915060008060005b61357288612b18565b8160ff1610156135c5576135878d8d83612b68565b92506135a28a8260ff166028026038011c64ffffffffff1690565b91506135b18360008488614328565b6135bb8286614653565b9450600101613569565b505050505b60005b8351811015611a315760008482815181106135ea576135ea614f52565b602002602001015190506136166002826affffffffffffffffffffff1916612d5290919063ffffffff16565b15613698576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613665908e908e908e908e908e908e906004016153b8565b600060405180830381600087803b15801561367f57600080fd5b505af1158015613693573d6000803e3d6000fd5b505050505b506001016135cd565b60408051602081018490529081018290526000906060016129b7565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361374357827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516137369190615411565b60405180910390a2505050565b600061374e84613c1b565b905060005b815181101561382157600082828151811061377057613770614f52565b6020026020010151905061379c6040826affffffffffffffffffffff1916612d5290919063ffffffff16565b15613818576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906137e590899089908990600401615424565b600060405180830381600087803b1580156137ff57600080fd5b505af1158015613813573d6000803e3d6000fd5b505050505b50600101613753565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516138529190615411565b60405180910390a2600061386685856129a2565b90506138bf81600061387786612abc565b67ffffffffffffffff81111561388f5761388f614a15565b6040519080825280601f01601f1916602001820160405280156138b9576020820181803683370190505b50613c8d565b60006138ca84612b18565b11156138eb5760006138dc8686613f1f565b90506138e98160206143e7565b505b60005b8251811015610c3d57600083828151811061390b5761390b614f52565b602002602001015190506139376080826affffffffffffffffffffff1916612d5290919063ffffffff16565b156139b3576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613980908a908a908a90600401615424565b600060405180830381600087803b15801561399a57600080fd5b505af11580156139ae573d6000803e3d6000fd5b505050505b506001016138ee565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052613a2f90614616565b909114919050565b600061082982611e3c8686612b55565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613a8057613a80614f52565b60209081029190910101526000613ac07f7462776f726c640000000000000000004e616d6573706163654f776e657200008383630500400560da1b611889565b60601c949350505050565b613ad58282614424565b610a1b576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610b3387878787614130565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110613b7857613b78614f52565b6020026020010181815250508281600181518110613b9857613b98614f52565b602002602001018181525050611ddb7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b82600085604051602001613be691151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006118b6565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613c5557613c55614f52565b60209081029190910101526000612d3b7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611e1c565b6108cd83838351613c9e8560200190565b614328565b6000613cb160706010614653565b9190911b919050565b606060005b6010811015613d1f577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613d1f57600101613cbf565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610829565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613d9757613d97614f52565b602090810291909101015260006108297f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611889565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613e2957613e29614f52565b60209081029190910101526000613e817f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611889565b90506108298160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ec657613ec6614f52565b602090810291909101015260006108297f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611889565b60008282604051602001613f34929190615206565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613f855750835182115b15613fc2578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102909392919061544d565b60208401613fd08482614653565b90506000613fde85856150be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610b1b8360156000614440565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061404e5761404e614f52565b6020908102919091010152600080806140a77f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000611a3d565b925092509250610ae28383836144bb565b60006060836001600160a01b031660006140d38589896144c7565b6040516140e09190615472565b60006040518083038185875af1925050503d806000811461411d576040519150601f19603f3d011682016040523d82523d6000602084013e614122565b606091505b509097909650945050505050565b60006060836001600160a01b03166141498488886144c7565b6040516141569190615472565b600060405180830381855af49150503d806000811461411d576040519150601f19603f3d011682016040523d82523d6000602084013e614122565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106141ca576141ca614f52565b602002602001018181525050826001600160a01b031660001b816001815181106141f6576141f6614f52565b6020908102919091010152600061424e7f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611889565b9050610d318160f81c90565b600064ffffffffff82111561429e576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106142d057808503820191506142d8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156143a257602083106143525760208304840193506020838161434e5761434e615242565b0692505b82156143a25760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614393575050611ddb565b50600194909401939182900391015b5b602082106143c45780518455600190930192601f19909101906020016143a3565b8115611ddb576000600019600884021c8554835182191691161785555050505050565b600060206143f683601f614653565b614400919061548e565b61440a9084614653565b90505b808310156108cd576000835560018301925061440d565b600061442f836144f6565b8015610b1b5750610b1b8383614542565b6060600061444e8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161447457614474615242565b04905060405193506020840160208202810160405281855260005b828110156144af578451871c82529387019360209091019060010161448f565b50505050509392505050565b600080611b51856145fa565b60608383836040516020016144de939291906154b0565b60405160208183030381529060405290509392505050565b6000614522827f01ffc9a700000000000000000000000000000000000000000000000000000000614542565b8015610f91575061453b826001600160e01b0319614542565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d915060005190508280156145e3575060208210155b80156145ef5750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612cc2565b80516020808301519190811015614637576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f9157610f9161463d565b60008083601f84011261467857600080fd5b50813567ffffffffffffffff81111561469057600080fd5b6020830191508360208260051b85010111156146ab57600080fd5b9250929050565b803560ff811681146128e357600080fd5b6000806000806000608086880312156146db57600080fd5b85359450602086013567ffffffffffffffff8111156146f957600080fd5b61470588828901614666565b90955093506147189050604087016146b2565b949793965091946060013592915050565b60005b8381101561474457818101518382015260200161472c565b50506000910152565b60008151808452614765816020860160208601614729565b601f01601f19169290920160200192915050565b602081526000610b1b602083018461474d565b60008083601f84011261479e57600080fd5b50813567ffffffffffffffff8111156147b657600080fd5b6020830191508360208285010111156146ab57600080fd5b600080600080600080608087890312156147e757600080fd5b86359550602087013567ffffffffffffffff8082111561480657600080fd5b6148128a838b01614666565b909750955085915061482660408a016146b2565b9450606089013591508082111561483c57600080fd5b5061484989828a0161478c565b979a9699509497509295939492505050565b6000806000806060858703121561487157600080fd5b84359350602085013567ffffffffffffffff81111561488f57600080fd5b61489b87828801614666565b90945092506148ae9050604086016146b2565b905092959194509250565b60008060008060008060008060a0898b0312156148d557600080fd5b88359750602089013567ffffffffffffffff808211156148f457600080fd5b6149008c838d01614666565b909950975060408b013591508082111561491957600080fd5b6149258c838d0161478c565b909750955060608b0135945060808b013591508082111561494557600080fd5b506149528b828c0161478c565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561498157600080fd5b87359650602088013567ffffffffffffffff808211156149a057600080fd5b6149ac8b838c01614666565b90985096508691506149c060408b016146b2565b955060608a01359150808211156149d657600080fd5b506149e38a828b0161478c565b989b979a50959894979596608090950135949350505050565b600060208284031215614a0e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614a5457614a54614a15565b604052919050565b600082601f830112614a6d57600080fd5b813567ffffffffffffffff811115614a8757614a87614a15565b614a9a6020601f19601f84011601614a2b565b818152846020838601011115614aaf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614adf57600080fd5b82359150602083013567ffffffffffffffff811115614afd57600080fd5b614b0985828601614a5c565b9150509250929050565b60008060008060608587031215614b2957600080fd5b84359350602085013567ffffffffffffffff811115614b4757600080fd5b614b5387828801614666565b9598909750949560400135949350505050565b606081526000614b79606083018661474d565b8460208401528281036040840152610b45818561474d565b600082601f830112614ba257600080fd5b8135602067ffffffffffffffff821115614bbe57614bbe614a15565b8160051b614bcd828201614a2b565b9283528481018201928281019087851115614be757600080fd5b83870192505b848310156145ef57823582529183019190830190614bed565b600080600080600060a08688031215614c1e57600080fd5b85359450602086013567ffffffffffffffff811115614c3c57600080fd5b614c4888828901614b91565b945050614c57604087016146b2565b94979396509394606081013594506080013592915050565b600080600060408486031215614c8457600080fd5b83359250602084013567ffffffffffffffff811115614ca257600080fd5b614cae86828701614666565b9497909650939450505050565b6001600160a01b03811681146116b257600080fd5b600080600060608486031215614ce557600080fd5b8335614cf081614cbb565b925060208401359150604084013567ffffffffffffffff811115614d1357600080fd5b614d1f86828701614a5c565b9150509250925092565b60008060008060808587031215614d3f57600080fd5b84359350602085013567ffffffffffffffff811115614d5d57600080fd5b614d6987828801614b91565b935050614d78604086016146b2565b9396929550929360600135925050565b600080600060608486031215614d9d57600080fd5b83359250602084013567ffffffffffffffff811115614dbb57600080fd5b614dc786828701614b91565b925050614dd6604085016146b2565b90509250925092565b60008060408385031215614df257600080fd5b8235614dfd81614cbb565b9150602083013567ffffffffffffffff811115614afd57600080fd5b60008060008060008060808789031215614e3257600080fd5b86359550602087013567ffffffffffffffff80821115614e5157600080fd5b614e5d8a838b01614666565b90975095506040890135915065ffffffffffff82168214614e7d57600080fd5b9093506060880135908082111561483c57600080fd5b803564ffffffffff811681146128e357600080fd5b60008060008060008060008060c0898b031215614ec457600080fd5b88359750602089013567ffffffffffffffff80821115614ee357600080fd5b614eef8c838d01614666565b9099509750879150614f0360408c016146b2565b9650614f1160608c01614e93565b9550614f1f60808c01614e93565b945060a08b013591508082111561494557600080fd5b600060208284031215614f4757600080fd5b8135610b1b81614cbb565b634e487b7160e01b600052603260045260246000fd5b604081526000614f7b604083018561474d565b90506001600160a01b03831660208301529392505050565b60008151808452602080850194506020840160005b83811015614fc457815187529582019590820190600101614fa8565b509495945050505050565b848152608060208201526000614fe86080830186614f93565b60ff949094166040830152506060015292915050565b60006020828403121561501057600080fd5b5051919050565b85815260a06020820152600061503060a0830187614f93565b60ff86166040840152828103606084015261504b818661474d565b9150508260808301529695505050505050565b600060ff821660ff81036150745761507461463d565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610d31606083018461474d565b60ff8281168282160390811115610f9157610f9161463d565b81810381811115610f9157610f9161463d565b6000602082840312156150e357600080fd5b81518015158114610b1b57600080fd5b6060815260006151066060830186614f93565b65ffffffffffff851660208401528281036040840152610b45818561474d565b84815260806020820152600061513f6080830186614f93565b65ffffffffffff8516604084015282810360608401526145ef818561474d565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151c0816003860160208901614729565b8084019050816003820152845191506151e0826004830160208801614729565b0160040195945050505050565b828152604060208201526000610829604083018461474d565b8281526000602080830184516020860160005b8281101561523557815184529284019290840190600101615219565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610f9157610f9161463d565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610d31606083018461474d565b64ffffffffff8181168382160190808211156152ce576152ce61463d565b5092915050565b87815260e0602082015260006152ee60e0830189614f93565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c0840152615325818561474d565b9a9950505050505050505050565b60a08152600061534660a0830188614f93565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526121c4818561474d565b60808152600061538c6080830187614f93565b828103602084015261539e818761474d565b905084604084015282810360608401526145ef818561474d565b86815260c0602082015260006153d160c0830188614f93565b82810360408401526153e3818861474d565b905085606084015282810360808401526153fd818661474d565b9150508260a0830152979650505050505050565b602081526000610b1b6020830184614f93565b83815260606020820152600061543d6060830185614f93565b9050826040830152949350505050565b606081526000615460606083018661474d565b60208301949094525060400152919050565b60008251615484818460208701614729565b9190910192915050565b6000826154ab57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154c2818460208901614729565b60609490941b6bffffffffffffffffffffffff19169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611d9561003060003960006103420152611d956000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806345ec9354116100765780639081c7581161005b5780639081c7581461014b578063e1af802c14610153578063ef5d6bbb1461015b57600080fd5b806345ec9354146101255780638d53b2081461013857600080fd5b806301ffc9a7146100a8578063119df25f146100d0578063219adc2e146100fd57806340554c3a14610112575b600080fd5b6100bb6100b636600461191b565b61016e565b60405190151581526020015b60405180910390f35b6100d8610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c7565b61011061010b36600461195d565b610216565b005b610110610120366004611976565b61025e565b604051601f1936013581526020016100c7565b610110610146366004611976565b61028b565b6100d86102a9565b6100d86102b3565b610110610169366004611976565b6102bd565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000148061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006102116102f9565b905090565b61021e61032b565b6102278161039c565b6102308161044e565b6102418161023c610207565b610499565b61024a81610554565b61025b81610256610207565b6105c7565b50565b61026661032b565b61026f8261044e565b61027b8261023c610207565b6102878282600161068f565b5050565b61029361032b565b61029f8261023c610207565b61028782826105c7565b6000610211610786565b6000610211610790565b6102c561032b565b6102ce8261039c565b6102d78261044e565b6102e38261023c610207565b6102ed828261079a565b61027b82610256610207565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103285750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361039a576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000821617811461025b577f6e73000000000000000000000000000000000000000000000000000000000000816104108361085f565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161044593929190611a0f565b60405180910390fd5b6104578161099c565b61025b57806104658261085f565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610445929190611a50565b73ffffffffffffffffffffffffffffffffffffffff81166104fb7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a41565b73ffffffffffffffffffffffffffffffffffffffff16146102875761051f8261085f565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610445929190611a69565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061058a5761058a611ab7565b60209081029190910101526102877f7462776f726c640000000000000000004e616d6573706163654f776e6572000082630500400560da1b610ac5565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105fc576105fc611ab7565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061063557610635611ab7565b602090810291909101015261068a7f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ac5565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106c4576106c4611ab7565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106fd576106fd611ab7565b6020026020010181815250506107807f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161074b91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610dcc565b50505050565b6000610211610de8565b6000610211610e37565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107d0576107d0611ab7565b60200260200101818152505061068a7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610842919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f19818403018152919052630500400560da1b610dcc565b606081601081901b600061087283610e83565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108cd576108c87fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e9a565b610904565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561093a5761093583610e9a565b610971565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161098393929190611acd565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109d5576109d5611ab7565b60209081029190910101526000610a2d7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f3e565b9050610a398160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7a57610a7a611ab7565b60209081029190910101526000610aba7f7462776f726c640000000000000000004e616d6573706163654f776e657200008383630500400560da1b610f3e565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b4b57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b3e9190611b97565b60405180910390a2505050565b6000610b5684610f74565b905060005b8151811015610c29576000828281518110610b7857610b78611ab7565b60200260200101519050610ba46040826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15610c20576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bed90899089908990600401611baa565b600060405180830381600087803b158015610c0757600080fd5b505af1158015610c1b573d6000803e3d6000fd5b505050505b50600101610b5b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c5a9190611b97565b60405180910390a26000610c6e858561101b565b9050610cc7816000610c7f86611071565b67ffffffffffffffff811115610c9757610c97611aa1565b6040519080825280601f01601f191660200182016040528015610cc1576020820181803683370190505b50611094565b6000610cd2846110aa565b1115610cf3576000610ce486866110e7565b9050610cf181602061113d565b505b60005b8251811015610dc4576000838281518110610d1357610d13611ab7565b60200260200101519050610d3f6080826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15610dbb576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d88908a908a908a90600401611baa565b600060405180830381600087803b158015610da257600080fd5b505af1158015610db6573d6000803e3d6000fd5b505050505b50600101610cf6565b505050505050565b610de18585610ddb848761117a565b856111b3565b5050505050565b604080516000808252602082019092526000610e2d7f7462776f726c640000000000000000005472616e73616374696f6e436f6e74658383630500400560da1b611457565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e7e573391505090565b919050565b6000610e9160706010611be9565b9190911b919050565b606060005b6010811015610eff577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610eff57600101610e9f565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a39565b6000610f6b610f4d868661101b565b60ff858116601b0360080285901c16610f66858761117a565b61152e565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fae57610fae611ab7565b60209081029190910101526000610fe67f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361157f565b9050610a39610ff882600084516115b9565b611647565b60008160ff168261100e8560581c90565b1660ff1614905092915050565b60008282604051602001611030929190611bfc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861108160026020611c38565b61108b9190611c4b565b9190911c919050565b61068a838383516110a58560200190565b61165f565b600060086001806110bd60026020611c38565b6110c79190611c38565b6110d19190611c38565b6110db9190611c4b565b8260ff911c1692915050565b600082826040516020016110fc929190611bfc565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061114c83601f611be9565b6111569190611c78565b6111609084611be9565b90505b8083101561068a5760008355600183019250611163565b600080805b8360ff168110156111ab576111a160ff601b83900360080287901c1683611be9565b915060010161117f565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361123d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161123093929190611c9a565b60405180910390a2610780565b6000611249858561101b565b9050600061125686610f74565b905060005b815181101561132b57600082828151811061127857611278611ab7565b602002602001015190506112a46004826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15611322576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112ef908b908b908b908b90600401611cd7565b600060405180830381600087803b15801561130957600080fd5b505af115801561131d573d6000803e3d6000fd5b505050505b5060010161125b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161136093929190611c9a565b60405180910390a261137b828565ffffffffffff1685611094565b60005b815181101561144e57600082828151811061139b5761139b611ab7565b602002602001015190506113c76008826affffffffffffffffffffff1916610ffd90919063ffffffff16565b15611445576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190611412908b908b908b908b90600401611cd7565b600060405180830381600087803b15801561142c57600080fd5b505af1158015611440573d6000803e3d6000fd5b505050505b5060010161137e565b50505050505050565b600080611462610e37565b90503073ffffffffffffffffffffffffffffffffffffffff8216036114955761148d86868686610f3e565b915050610a39565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906114ed908990899089908990600401611d1b565b602060405180830381865afa15801561150a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190611d4a565b6000602082106115545760208204840193506020828161155057611550611c62565b0691505b508254600882021b6020829003808411156111ab576001850154600882021c82179150509392505050565b6060610a3961158f85858561171e565b60006115b48561159f898961179e565b9060ff166028026038011c64ffffffffff1690565b6117b1565b6000818311806115c95750835182115b15611606578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161044593929190611d63565b602084016116148482611be9565b905060006116228585611c38565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061165883601560006117d4565b9392505050565b82156116d957602083106116895760208304840193506020838161168557611685611c62565b0692505b82156116d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116116ca575050610780565b50600194909401939182900391015b5b602082106116fb5780518455600190930192601f19909101906020016116da565b8115610780576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611733929190611bfc565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006116586117ad84846110e7565b5490565b60405160208101601f19603f84840101166040528282526111ab8585858461184f565b606060006117e28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161180857611808611c62565b04905060405193506020840160208202810160405281855260005b82811015611843578451871c825293870193602090910190600101611823565b50505050509392505050565b82156118d657602083106118795760208304840193506020838161187557611875611c62565b0692505b82156118d657602083900360008184101561189c5750600019600884021c6118a6565b50600019600882021c5b8554600886021b8184511682198216178452508184116118c7575050610780565b50600194909401939182900391015b5b602082106118f85783548152600190930192601f19909101906020016118d7565b8115610780576000600019600884021c8251865482191691161782525050505050565b60006020828403121561192d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461165857600080fd5b60006020828403121561196f57600080fd5b5035919050565b6000806040838503121561198957600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146119b457600080fd5b809150509250929050565b60005b838110156119da5781810151838201526020016119c2565b50506000910152565b600081518084526119fb8160208601602086016119bf565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f6b60608301846119e3565b828152604060208201526000610a3960408301846119e3565b604081526000611a7c60408301856119e3565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611b2e8160038601602089016119bf565b808401905081600382015284519150611b4e8260048301602088016119bf565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611b8c57815187529582019590820190600101611b70565b509495945050505050565b6020815260006116586020830184611b5b565b838152606060208201526000611bc36060830185611b5b565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561020157610201611bd3565b8281526000602080830184516020860160005b82811015611c2b57815184529284019290840190600101611c0f565b5091979650505050505050565b8181038181111561020157610201611bd3565b808202811582820484141761020157610201611bd3565b634e487b7160e01b600052601260045260246000fd5b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611cad6060830186611b5b565b65ffffffffffff851660208401528281036040840152611ccd81856119e3565b9695505050505050565b848152608060208201526000611cf06080830186611b5b565b65ffffffffffff851660408401528281036060840152611d1081856119e3565b979650505050505050565b848152608060208201526000611d346080830186611b5b565b60ff949094166040830152506060015292915050565b600060208284031215611d5c57600080fd5b5051919050565b606081526000611d7660608301866119e3565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161190c61003060003960006103d0015261190c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780639081c758146100ff578063c9c85a6014610107578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806345afd199146100d7575b600080fd5b6100956100903660046114b7565b610122565b60405190151581526020015b60405180910390f35b6100b26101bb565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046114f9565b6101ca565b005b604051601f1936013581526020016100a1565b6100b26102c7565b6100ea61011536600461154a565b6102d1565b6100b261037d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f0000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101c5610387565b905090565b6101d26103b9565b6101e3836101de6101bb565b61042a565b60006101ee8461047a565b905080821115610239576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b61024c8461024784846115a5565b610513565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d80600081146102a7576040519150601f19603f3d011682016040523d82523d6000602084013e6102ac565b606091505b5091509150816102bf576102bf816105cc565b505050505050565b60006101c56105d4565b6102d96103b9565b6102e2836105de565b6102eb826105de565b6102f48261068a565b610300836101de6101bb565b600061030b8461047a565b905080821115610351576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610230565b61035f8461024784846115a5565b610377838361036d8661047a565b61024791906115b8565b50505050565b60006101c56106d5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103b65750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610428576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61043482826106df565b6104765761044182610744565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161023092919061161b565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104b3576104b3611653565b6020908102919091010152600061050b7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e20010020000000000000000000000000000000000000000000000000000000610881565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061054957610549611653565b6020026020010181815250506105c77f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161059291815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108b7565b505050565b805160208201fd5b60006101c56108d3565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610687577f6e730000000000000000000000000000000000000000000000000000000000008161065283610744565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161023093929190611682565b50565b6106938161093a565b61068757806106a182610744565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016102309291906116c3565b60006101c56109d7565b600061072d7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610a23565b8061073d575061073d8383610a23565b9392505050565b606081601081901b600061075783610af9565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156107b2576107ad7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610b10565b6107e9565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083161561081f5761081a83610b10565b610856565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610868939291906116dc565b6040516020818303038152906040529350505050919050565b60006108ae6108908686610bb4565b60ff858116601b0360080285901c166108a98587610c0a565b610c43565b95945050505050565b6108cc85856108c68487610c0a565b85610c94565b5050505050565b6040805160008082526020820190925260006109307f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610f38565b60601c9392505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061097357610973611653565b602090810291909101015260006109cb7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610881565b905061050b8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610a1e573391505090565b919050565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610a5c57610a5c611653565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a9557610a95611653565b60209081029190910101526000610aed7f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000610881565b90506108ae8160f81c90565b6000610b07607060106115b8565b9190911b919050565b606060005b6010811015610b75577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610b7557600101610b15565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061050b565b60008282604051602001610bc992919061176a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c3b57610c3160ff601b83900360080287901c16836115b8565b9150600101610c0f565b509392505050565b600060208210610c6957602082048401935060208281610c6557610c656117a6565b0691505b508254600882021b602082900380841115610c3b576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d1e57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d1193929190611811565b60405180910390a2610377565b6000610d2a8585610bb4565b90506000610d378661100f565b905060005b8151811015610e0c576000828281518110610d5957610d59611653565b60200260200101519050610d856004826affffffffffffffffffffff191661109890919063ffffffff16565b15610e03576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610dd0908b908b908b908b9060040161184e565b600060405180830381600087803b158015610dea57600080fd5b505af1158015610dfe573d6000803e3d6000fd5b505050505b50600101610d3c565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e4193929190611811565b60405180910390a2610e5c828565ffffffffffff16856110b6565b60005b8151811015610f2f576000828281518110610e7c57610e7c611653565b60200260200101519050610ea86008826affffffffffffffffffffff191661109890919063ffffffff16565b15610f26576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610ef3908b908b908b908b9060040161184e565b600060405180830381600087803b158015610f0d57600080fd5b505af1158015610f21573d6000803e3d6000fd5b505050505b50600101610e5f565b50505050505050565b600080610f436109d7565b90503073ffffffffffffffffffffffffffffffffffffffff821603610f7657610f6e86868686610881565b91505061050b565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990610fce908990899089908990600401611892565b602060405180830381865afa158015610feb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e91906118c1565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104957611049611653565b602090810291909101015260006110817f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836110cc565b905061050b6110938260008451611106565b611194565b60008160ff16826110a98560581c90565b1660ff1614905092915050565b6105c7838383516110c78560200190565b6111a5565b606061050b6110dc858585611264565b6000611101856110ec89896112e4565b9060ff166028026038011c64ffffffffff1690565b6112f7565b6000818311806111165750835182115b15611153578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610230939291906118da565b6020840161116184826115b8565b9050600061116f85856115a5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061073d836015600061131a565b821561121f57602083106111cf576020830484019350602083816111cb576111cb6117a6565b0692505b821561121f5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611210575050610377565b50600194909401939182900391015b5b602082106112415780518455600190930192601f1990910190602001611220565b8115610377576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161127992919061176a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061073d6112f38484611395565b5490565b60405160208101601f19603f8484010116604052828252610c3b858585846113eb565b606060006113288560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161134e5761134e6117a6565b04905060405193506020840160208202810160405281855260005b82811015611389578451871c825293870193602090910190600101611369565b50505050509392505050565b600082826040516020016113aa92919061176a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215611472576020831061141557602083048401935060208381611411576114116117a6565b0692505b82156114725760208390036000818410156114385750600019600884021c611442565b50600019600882021c5b8554600886021b818451168219821617845250818411611463575050610377565b50600194909401939182900391015b5b602082106114945783548152600190930192601f1990910190602001611473565b8115610377576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461073d57600080fd5b60008060006060848603121561150e57600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff8116811461153957600080fd5b929592945050506040919091013590565b60008060006060848603121561155f57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101b5576101b5611576565b808201808211156101b5576101b5611576565b60005b838110156115e65781810151838201526020016115ce565b50506000910152565b600081518084526116078160208601602086016115cb565b601f01601f19169290920160200192915050565b60408152600061162e60408301856115ef565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108ae60608301846115ef565b82815260406020820152600061050b60408301846115ef565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161173d8160038601602089016115cb565b80840190508160038201528451915061175d8260048301602088016115cb565b0160040195945050505050565b8281526000602080830184516020860160005b828110156117995781518452928401929084019060010161177d565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b83811015611806578151875295820195908201906001016117ea565b509495945050505050565b60608152600061182460608301866117d5565b65ffffffffffff85166020840152828103604084015261184481856115ef565b9695505050505050565b84815260806020820152600061186760808301866117d5565b65ffffffffffff85166040840152828103606084015261188781856115ef565b979650505050505050565b8481526080602082015260006118ab60808301866117d5565b60ff949094166040830152506060015292915050565b6000602082840312156118d357600080fd5b5051919050565b6060815260006118ed60608301866115ef565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610e3c61003060003960006106180152610e3c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638fc8cf7e1161005b5780638fc8cf7e146100ea5780639081c7581461010a578063ce5e8dd914610112578063e1af802c1461012557600080fd5b806301ffc9a714610082578063119df25f146100aa57806345ec9354146100d7575b600080fd5b610095610090366004610936565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b604051601f1936013581526020016100a1565b6100fd6100f83660046109cb565b6101d5565b6040516100a19190610a31565b6100b26103e7565b6100fd6101203660046109cb565b6103f1565b6100b26105c5565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f0000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d06105cf565b905090565b60606101df610601565b60006101e96105c5565b90508267ffffffffffffffff81111561020457610204610ac9565b60405190808252806020026020018201604052801561023757816020015b60608152602001906001900390816102225790505b50915060005b838110156103df5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061027757610277610adf565b90506020028101906102899190610af5565b610297906020810190610b33565b8a8a888181106102a9576102a9610adf565b90506020028101906102bb9190610af5565b602001358b8b898181106102d1576102d1610adf565b90506020028101906102e39190610af5565b6102f1906040810190610b69565b6040516024016103049493929190610bf9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103519250610c39565b600060405180830381855af49150503d806000811461038c576040519150601f19603f3d011682016040523d82523d6000602084013e610391565b606091505b5091509150816103a4576103a481610672565b808060200190518101906103b89190610c4b565b8584815181106103ca576103ca610adf565b6020908102919091010152505060010161023d565b505092915050565b60006101d061067a565b60606103fb610601565b60006104056105c5565b90508267ffffffffffffffff81111561042057610420610ac9565b60405190808252806020026020018201604052801561045357816020015b606081526020019060019003908161043e5790505b50915060005b838110156103df5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061049357610493610adf565b90506020028101906104a59190610cf8565b358a8a888181106104b8576104b8610adf565b90506020028101906104ca9190610cf8565b6104d8906020810190610b69565b6040516024016104ea93929190610d2c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105379250610c39565b600060405180830381855af49150503d8060008114610572576040519150601f19603f3d011682016040523d82523d6000602084013e610577565b606091505b50915091508161058a5761058a81610672565b8080602001905181019061059e9190610c4b565b8584815181106105b0576105b0610adf565b60209081029190910101525050600101610459565b60006101d0610684565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105fe5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610670576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101d061068e565b60006101d06106f5565b6040805160008082526020820190925260006106eb7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000610741565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061073c573391505090565b919050565b60008061074c6106f5565b90503073ffffffffffffffffffffffffffffffffffffffff82160361077f5761077786868686610820565b915050610818565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906107d7908990899089908990600401610d46565b602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190610da3565b949350505050565b600061084d61082f8686610856565b60ff858116601b0360080285901c1661084885876108ac565b6108e5565b95945050505050565b6000828260405160200161086b929190610dbc565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108dd576108d360ff601b83900360080287901c1683610df8565b91506001016108b1565b509392505050565b60006020821061090b5760208204840193506020828161090757610907610e19565b0691505b508254600882021b6020829003808411156108dd576001850154600882021c82179150509392505050565b60006020828403121561094857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461097857600080fd5b9392505050565b60008083601f84011261099157600080fd5b50813567ffffffffffffffff8111156109a957600080fd5b6020830191508360208260051b85010111156109c457600080fd5b9250929050565b600080602083850312156109de57600080fd5b823567ffffffffffffffff8111156109f557600080fd5b610a018582860161097f565b90969095509350505050565b60005b83811015610a28578181015183820152602001610a10565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610abc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610a9d818989018a8501610a0d565b601f01601f191695909501860194509285019290850190600101610a58565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610b2957600080fd5b9190910192915050565b600060208284031215610b4557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461097857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9e57600080fd5b83018035915067ffffffffffffffff821115610bb957600080fd5b6020019150368190038213156109c457600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610c2f606083018486610bce565b9695505050505050565b60008251610b29818460208701610a0d565b600060208284031215610c5d57600080fd5b815167ffffffffffffffff80821115610c7557600080fd5b818401915084601f830112610c8957600080fd5b815181811115610c9b57610c9b610ac9565b604051601f8201601f19908116603f01168101908382118183101715610cc357610cc3610ac9565b81604052828152876020848701011115610cdc57600080fd5b610ced836020830160208801610a0d565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610b2957600080fd5b83815260406020820152600061084d604083018486610bce565b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015610d8957845183529383019391830191600101610d6d565b505060ff9690961660408501525050506060015292915050565b600060208284031215610db557600080fd5b5051919050565b8281526000602080830184516020860160005b82811015610deb57815184529284019290840190600101610dcf565b5091979650505050505050565b808201808211156101c057634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615932620000316000396000610c3501526159326000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063742d6118116100cd578063b29e408911610081578063cdc938c511610066578063cdc938c5146102b8578063d5f8337f146102cb578063e1af802c146102de57600080fd5b8063b29e408914610292578063bfdfaff7146102a557600080fd5b80639081c758116100b25780639081c75814610264578063a92813ad1461026c578063aa66e9c81461027f57600080fd5b8063742d61181461023e5780638da798da1461025157600080fd5b80631d2257ba116101245780633350b6a9116101095780633350b6a91461020557806345ec935414610218578063530f4b601461022b57600080fd5b80631d2257ba146101c657806326d98102146101d957600080fd5b806301ffc9a714610156578063056091291461017e5780630ba51f4914610193578063119df25f146101a6575b600080fd5b610169610164366004614d5b565b6102e6565b60405190151581526020015b60405180910390f35b61019161018c366004614d8b565b61034f565b005b6101916101a1366004614e07565b610376565b6101ae610441565b6040516001600160a01b039091168152602001610175565b6101916101d4366004614f54565b610450565b6101ec6101e7366004614fad565b6104cb565b6040516001600160e01b03199091168152602001610175565b610191610213366004614ff4565b610617565b604051601f193601358152602001610175565b61019161023936600461504c565b610792565b6101ec61024c36600461508a565b6107fe565b61019161025f3660046150d8565b6108c0565b6101ae610982565b61019161027a366004614d8b565b61098c565b61019161028d366004615112565b6109cb565b6101916102a0366004615112565b6109fd565b6101916102b336600461512b565b610a92565b6101916102c6366004615165565b610b47565b6101916102d936600461504c565b610b60565b6101ae610c21565b60006001600160e01b031982167f255f267f00000000000000000000000000000000000000000000000000000000148061034957506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610357610c2b565b61036882610363610441565b610c8f565b6103728282610d08565b5050565b61037e610c2b565b600061038989610d33565b6fffffffffffffffffffffffffffffffff1916036103e857876103ab89610d4a565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103df9291906151d2565b60405180910390fd5b61040b616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e5e565b61041788610363610441565b61043788888888610428888a6151eb565b61043287896151eb565b610ea9565b5050505050505050565b600061044b6112b9565b905090565b610458610c2b565b61046a610463610441565b84846112eb565b610473826113be565b156104c6576000610483836113da565b90506104af817f1a86b55000000000000000000000000000000000000000000000000000000000611476565b6104c36104ba610441565b848460006114d1565b50505b505050565b60006104d5610c2b565b61737960f01b836001600160f01b031916146105305761737960f01b836104fb85610d4a565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103df93929190615271565b61053983610e5e565b61054583610363610441565b600061056e6105548560101b90565b71ffffffffffffffffffffffffffffffffffff1916611500565b90506000818460405160200161058592919061529a565b60405160208183030381529060405290508080519060200120925060006105ab84611586565b905080156105f1576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103df565b84516020860120610603858883611636565b61060d8584611701565b5050505092915050565b61061f610c2b565b61737960f01b836001600160f01b031916146106455761737960f01b836104fb85610d4a565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761066981610e5e565b61067581610363610441565b61069f837f255f267f00000000000000000000000000000000000000000000000000000000611476565b60006106aa85610d33565b6fffffffffffffffffffffffffffffffff1916036106cc57836103ab85610d4a565b60006106d7846117ca565b905080158015906106e85750848114155b1561072a576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103df565b6000610735866113da565b90506001600160a01b0381161561075e5761074f8161184f565b61075983826118ce565b610769565b61076986600161196c565b610774868686611a0d565b61077e8587611ab0565b61078a83866001611b3b565b505050505050565b61079a610c2b565b6107c4827f1873396a00000000000000000000000000000000000000000000000000000000611476565b6107e7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e5e565b6107f383610363610441565b6104c6838383611bea565b6000610808610c2b565b60408051616e7360f01b6020820152600060228201819052603082015261084a9101604051602081830303815290604052610842906152f2565b610363610441565b5081516020830120600061085d82611586565b905080156108a3576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103df565b6108ae828685611636565b6108b88285611701565b509392505050565b6108c8610c2b565b6108f2827f6fdd1c8000000000000000000000000000000000000000000000000000000000611476565b61096e6108fd610441565b600084846040516024016109119190615316565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611cad565b506103728282805190602001206001611cbe565b600061044b611d6d565b610994610c2b565b6109a082610363610441565b6103727f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d77565b6109d3610c2b565b6109dc81611e8a565b6109e581610e5e565b6109f181610363610441565b6109fa81611ebb565b50565b610a05610c2b565b610a0e81611e8a565b610a1781611f26565b610a2081612118565b15610a635780610a2f82610d4a565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103df9291906151d2565b610a6e81600161196c565b610a7f81610a7a610441565b61219d565b6109fa81610a8b610441565b6001611b3b565b610a9a610c2b565b610aa383611e8a565b610aac826113be565b610ae2576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aee83610363610441565b6000610af9836113da565b9050610b25817f1a86b55000000000000000000000000000000000000000000000000000000000611476565b610b2f8484612267565b815115610b41576104c36104ba610441565b50505050565b610b4f610c2b565b6109fa610b5a610441565b826122e6565b610b68610c2b565b61737960f01b836001600160f01b03191614610b8e5761737960f01b836104fb85610d4a565b610bb8827f540fbfa800000000000000000000000000000000000000000000000000000000611476565b610bc183610e5e565b610be4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e5e565b610bf083610363610441565b6104c6836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612388565b600061044b61242d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c8d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610cbc616e7360f01b6dffffffffffffffffffffffffffff60801b851617612437565b6001600160a01b03161461037257610cd382610d4a565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103df929190615329565b6103727f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d77565b6000610d416070601061536a565b9190911b919050565b606081601081901b6000610d5d83610d33565b90508271ffffffffffffffffffffffffffffffffffff19831615610d9e57610d9971ffffffffffffffffffffffffffffffffffff198416611500565b610dd5565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dfc57610df783611500565b610e33565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e459392919061537d565b6040516020818303038152906040529350505050919050565b610e6781612118565b6109fa5780610e7582610d4a565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103df9291906151d2565b613a3160f11b866001600160f01b03191614801590610ed75750611bdd60f21b866001600160f01b03191614155b15610f3857613a3160f11b8687604051602001610ef691815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103df939291600401615271565b610f41856124c8565b610f4c84600161270f565b610f5783600061270f565b60e084901c60e885901c0160ff16825114610fb75760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60e085901c60e886901c0160ff168151146110175760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461108f5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b611098856128ab565b6110a1846128ab565b146110f3576110af856128ab565b6110b8846128ab565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b6110fc856128dd565b611105846128dd565b1461115757611113856128dd565b61111c846128dd565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60005b611163866128ab565b8110156111fe5761118d61117785836128fa565b60c5811115611188576111886153f3565b612922565b6008601b8390030287901c60ff16146111f6576008601b8290030286901c60ff166111bb61117786846128fa565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103df565b60010161115a565b5061120886612118565b1561126257858660405160200161122191815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103df92916004016151d2565b6112ae868686868660405160200161127a9190615409565b6040516020818303038152906040528660405160200161129a9190615409565b604051602081830303815290604052612982565b61078a86600161196c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112e85750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061132c5761132c61548b565b602002602001018181525050826001600160a01b031660001b816001815181106113585761135861548b565b602002602001018181525050610b417f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b826000856040516020016113a191815260200190565b60408051601f19818403018152919052630100080160dd1b612a49565b6000811515801561034957506113d382612a5e565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106114135761141361548b565b6020908102919091010152600061146b7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612abe565b60601c949350505050565b6114808282612af4565b610372576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103df565b60606000806114e287878787612b10565b91509150816114f4576114f481612ce0565b9150505b949350505050565b606060005b6010811015611556576fffffffffffffffffffffffffffffffff198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561155657600101611505565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152806114f8565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115de576115de61548b565b602090810291909101015260006114f87f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612abe565b60006116428383612ce8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106116a0576116a061548b565b60209081029190910101526116f87f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612d27565b50505050505050565b6060600061170e8361302d565b9050600061171b8461303d565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106117745761177461548b565b602090810291909101015261078a7f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612d27565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b8160008151811061180f5761180f61548b565b602090810291909101015260006114f87f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612abe565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106118915761189161548b565b60209081029190910101526103727f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613066565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106119035761190361548b565b602002602001018181525050816001600160a01b031660001b8160018151811061192f5761192f61548b565b60209081029190910101526104c67f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613066565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119a2576119a261548b565b6020026020010181815250506104c67f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119f091151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a49565b6000611a198383613332565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a5857611a5861548b565b60209081029190910101526116f87f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612d27565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611af257611af261548b565b6020026020010181815250506104c67f7462776f726c6400000000000000000053797374656d5265676973747279000060001b826000856040516020016113a191815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b7057611b7061548b565b602002602001018181525050826001600160a01b031660001b81600181518110611b9c57611b9c61548b565b602002602001018181525050610b417f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119f091151560f81b815260010190565b613a3160f11b836001600160f01b03191614611c1a57613a3160f11b8384604051602001610ef691815260200190565b611c2383612118565b611c7c578283604051602001611c3b91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103df92916004016151d2565b6104c6836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613362565b60606000806114e287878787613407565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cff57611cff61548b565b6020026020010181815250508281600181518110611d1f57611d1f61548b565b602002602001018181525050610b417f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119f091151560f81b815260010190565b600061044b61347f565b6000611d8384846134e6565b90506000815167ffffffffffffffff811115611da157611da1614e9d565b604051908082528060200260200182016040528015611dca578160200160208202803683370190505b5090506000805b8351811015611e7b57846001600160a01b0316611e15858381518110611df957611df961548b565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e7357838181518110611e3557611e3561548b565b6020026020010151838381518110611e4f57611e4f61548b565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611dd1565b5080825261078a868684613551565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109fa57616e7360f01b816104fb83610d4a565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ef157611ef161548b565b60209081029190910101526103727f7462776f726c640000000000000000004e616d65737061636544656c65676174826135a8565b6000611f328260101b90565b90506000611f5471ffffffffffffffffffffffffffffffffffff198316611500565b80519091508015610b4157611f7682611f6e6001846154a1565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003612007576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103df565b60005b6120156001836154a1565b8110156104c357602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f000000000000000000000000000000000000000000000000000000000000001480156120c2575061207d83611f6e83600161536a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b15612110576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103df565b60010161200a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106121515761215161548b565b602090810291909101015260006121917f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612abe565b90506114f88160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121d3576121d361548b565b6020026020010181815250506104c67f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001612232919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a49565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061229d5761229d61548b565b6020026020010181815250506104c67f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b826000856040516020016113a191815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106123275761232761548b565b602002602001018181525050816001600160a01b031660001b816001815181106123535761235361548b565b60209081029190910101526104c67f7462776f726c640000000000000000005573657244656c65676174696f6e436f826135a8565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106123be576123be61548b565b6020026020010181815250506104c67f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b8260008560405160200161241991906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613643565b600061044b6136f4565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106124705761247061548b565b6020908102919091010152600061146b7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612abe565b806124ff576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061250a826128dd565b90506005811115612551576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103df565b600061255c836128ab565b9050600061256a838361536a565b9050601c8111156125b1576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103df565b6000805b8381101561265c5760ff601b82900360080287901c166000819003612609576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b6020811115612647576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b612651818461536a565b9250506001016125b5565b5061266685613733565b81146126b25761267585613733565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103df565b825b601c81101561078a5760ff601b82900360080287901c168015612706576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b506001016126b4565b8015801561271b575081155b1561273c57604051635318beb960e01b8152600060048201526024016103df565b6000612747836128dd565b9050600581111561276e57604051635318beb960e01b8152600481018290526024016103df565b6000612779846128ab565b90506000612787838361536a565b9050601c8111156127ae57604051635318beb960e01b8152600481018290526024016103df565b6000805b8381101561281a5760006127c961117789846128fa565b905080600003612805576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61280f818461536a565b9250506001016127b2565b5061282486613733565b811461284f5761283386613733565b604051635318beb960e01b81526004016103df91815260200190565b825b828110156116f857600061286861117789846128fa565b905080156128a2576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101612851565b6000600860016128bd600260206154a1565b6128c791906154a1565b6128d191906154b4565b8260ff911c1692915050565b600060086001806128f0600260206154a1565b6128bd91906154a1565b6000601b8290036008028360ff911c1660c581111561291b5761291b6153f3565b9392505050565b6000808260c5811115612937576129376153f3565b60ff169050606181101561295157601f1660010192915050565b60618360c5811115612965576129656153f3565b036129735750601492915050565b50600092915050565b50919050565b600061298f868686613756565b9050600061299d848461378c565b905060006129ab85856137a9565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129e5576129e561548b565b6020908102919091010152612a3d7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612d27565b50505050505050505050565b6104c38585612a5884876137be565b856137ef565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612ab6906152f2565b909114919050565b6000612aeb612acd8686613a57565b60ff858116601b0360080285901c16612ae685876137be565b613aad565b95945050505050565b6000612aff83613afe565b801561291b575061291b8383613b3f565b600060606000612b1f86613bf7565b905060005b8151811015612bf2576000828281518110612b4157612b4161548b565b60200260200101519050612b6d6001826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15612be9576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612bb6908c908c908c906004016154cb565b600060405180830381600087803b158015612bd057600080fd5b505af1158015612be4573d6000803e3d6000fd5b505050505b50600101612b24565b50612bff87858888613c99565b909350915060005b8151811015612cd5576000828281518110612c2457612c2461548b565b60200260200101519050612c506002826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15612ccc576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c99908c908c908c906004016154cb565b600060405180830381600087803b158015612cb357600080fd5b505af1158015612cc7573d6000803e3d6000fd5b505050505b50600101612c07565b505094509492505050565b805160208201fd5b60608282604051602001612d109291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d8057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d73949392919061552f565b60405180910390a261078a565b6000612d8b87613d6b565b905060005b8151811015612e64576000828281518110612dad57612dad61548b565b60200260200101519050612dd96001826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15612e5b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612e28908c908c908c908c908c908c9060040161556e565b600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b505050505b50600101612d90565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e9b949392919061552f565b60405180910390a26000612eaf8888613a57565b90506000602087019050612ec7826000895184613ddd565b6000612ed2856128dd565b1115612f56576000612ee48a8a613e9c565b878155905060208601915060008060005b612efe886128dd565b8160ff161015612f5157612f138d8d83613ef2565b9250612f2e8a8260ff166028026038011c64ffffffffff1690565b9150612f3d8360008488613ddd565b612f47828661536a565b9450600101612ef5565b505050505b60005b8351811015612a3d576000848281518110612f7657612f7661548b565b60200260200101519050612fa26002826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15613024576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612ff1908e908e908e908e908e908e9060040161556e565b600060405180830381600087803b15801561300b57600080fd5b505af115801561301f573d6000803e3d6000fd5b505050505b50600101612f59565b60006103498251603881901b1790565b60608160405160200161305091906155c7565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b031916036130b957827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516130ac91906155e3565b60405180910390a2505050565b60006130c484613d6b565b905060005b81518110156131975760008282815181106130e6576130e661548b565b602002602001015190506131126040826affffffffffffffffffffff1916613c7b90919063ffffffff16565b1561318e576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf459061315b908990899089906004016155f6565b600060405180830381600087803b15801561317557600080fd5b505af1158015613189573d6000803e3d6000fd5b505050505b506001016130c9565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516131c891906155e3565b60405180910390a260006131dc8585613a57565b90506132358160006131ed86613733565b67ffffffffffffffff81111561320557613205614e9d565b6040519080825280601f01601f19166020018201604052801561322f576020820181803683370190505b50613f72565b6000613240846128dd565b11156132615760006132528686613e9c565b905061325f816020613f88565b505b60005b825181101561078a5760008382815181106132815761328161548b565b602002602001015190506132ad6080826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15613329576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132f6908a908a908a906004016155f6565b600060405180830381600087803b15801561331057600080fd5b505af1158015613324573d6000803e3d6000fd5b505050505b50600101613264565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612d10565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106133985761339861548b565b6020026020010181815250506104c67f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133f391906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613fc5565b60006060836001600160a01b03166000613422858989614000565b60405161342f91906155c7565b60006040518083038185875af1925050503d806000811461346c576040519150601f19603f3d011682016040523d82523d6000602084013e613471565b606091505b509097909650945050505050565b6040805160008082526020820190925260006134dc7f7462776f726c640000000000000000005472616e73616374696f6e436f6e746583837e14010014000000000000000000000000000000000000000000000000000000614017565b60601c9392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106135205761352061548b565b602002602001018181525050600061353a858360006140d4565b9050612aeb61354c826000845161410e565b61419c565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106135875761358761548b565b602002602001018181525050610b41848260006135a3866141ad565b6141bd565b60006135b26136f4565b9050306001600160a01b038216036135ce576104c683836141f8565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d90613615908690869060040161561f565b600060405180830381600087803b15801561362f57600080fd5b505af11580156116f8573d6000803e3d6000fd5b600061364d6136f4565b9050306001600160a01b038216036136705761366b85858585613fc5565b6104c3565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f3262906136bb908890889088908890600401615638565b600060405180830381600087803b1580156136d557600080fd5b505af11580156136e9573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061372e573391505090565b919050565b60006008613743600260206154a1565b61374d91906154b4565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b1761291b565b60608282604051602001612d1092919061566c565b600080805b8360ff168110156108b8576137e560ff601b83900360080287901c168361536a565b91506001016137c3565b611bdd60f21b846001600160f01b0319160361384657837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516138399392919061569b565b60405180910390a2610b41565b60006138528585613a57565b9050600061385f86613d6b565b905060005b81518110156139345760008282815181106138815761388161548b565b602002602001015190506138ad6004826affffffffffffffffffffff1916613c7b90919063ffffffff16565b1561392b576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906138f8908b908b908b908b906004016156d8565b600060405180830381600087803b15801561391257600080fd5b505af1158015613926573d6000803e3d6000fd5b505050505b50600101613864565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516139699392919061569b565b60405180910390a2613984828565ffffffffffff1685613f72565b60005b81518110156116f85760008282815181106139a4576139a461548b565b602002602001015190506139d06008826affffffffffffffffffffff1916613c7b90919063ffffffff16565b15613a4e576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613a1b908b908b908b908b906004016156d8565b600060405180830381600087803b158015613a3557600080fd5b505af1158015613a49573d6000803e3d6000fd5b505050505b50600101613987565b60008282604051602001613a6c929190615711565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613ad357602082048401935060208281613acf57613acf61574d565b0691505b508254600882021b6020829003808411156108b8576001850154600882021c82179150509392505050565b6000613b2a827f01ffc9a700000000000000000000000000000000000000000000000000000000613b3f565b801561034957506113d3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613be0575060208210155b8015613bec5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613c3157613c3161548b565b60209081029190910101526000613c697f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836140d4565b90506114f861354c826000845161410e565b60008160ff1682613c8c8560581c90565b1660ff1614905092915050565b60006060600080613ca98661420b565b90925090506001600160a01b038216613cc65785610e7587610d4a565b80613cd557613cd586896142c3565b8615613d19576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613d01826142da565b9050613d1682613d118b8461536a565b614353565b50505b6000613d258760101b90565b71ffffffffffffffffffffffffffffffffffff191614613d5057613d4b88888488613407565b613d5c565b613d5c888884886143d2565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613da557613da561548b565b60209081029190910101526000613c697f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836140d4565b8215613e575760208310613e0757602083048401935060208381613e0357613e0361574d565b0692505b8215613e575760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613e48575050610b41565b50600194909401939182900391015b5b60208210613e795780518455600190930192601f1990910190602001613e58565b8115610b41576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613eb1929190615711565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613f07929190615711565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104c683838351613f838560200190565b613ddd565b60006020613f9783601f61536a565b613fa19190615763565b613fab908461536a565b90505b808310156104c65760008355600183019250613fae565b6000613fd18585614433565b90506000613fee828560ff166028026038011c64ffffffffff1690565b905061078a8686868460008888614446565b606083838360405160200161377493929190615785565b6000806140226136f4565b9050306001600160a01b038216036140485761404086868686612abe565b9150506114f8565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906140939089908990899089906004016157c4565b602060405180830381865afa1580156140b0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404091906157f3565b60606114f86140e4858585613ef2565b6000614109856140f48989614433565b9060ff166028026038011c64ffffffffff1690565b6147ee565b60008183118061411e5750835182115b1561415b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103df9392919061580c565b60208401614169848261536a565b9050600061417785856154a1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061291b8360156000614811565b60608161291b816015600061488c565b60006141c98585614433565b905060006141e6828560ff166028026038011c64ffffffffff1690565b905061078a8686866000858888614446565b6103728282614206856148e0565b613066565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106142455761424561548b565b60209081029190910101526000808061429e7f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000614965565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6142cd8282614a6d565b61037257610cd382610d4a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106143135761431361548b565b602090810291909101015260006114f87f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612abe565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106143895761438961548b565b6020026020010181815250506104c67f7462776f726c6400000000000000000042616c616e636573000000000000000060001b826000856040516020016113a191815260200190565b60006060836001600160a01b03166143eb848888614000565b6040516143f891906155c7565b600060405180830381855af49150503d806000811461346c576040519150601f19603f3d011682016040523d82523d6000602084013e613471565b600061291b6144428484613e9c565b5490565b613a3160f11b876001600160f01b0319161461447657613a3160f11b8788604051602001610ef691815260200190565b6000614491828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836144aa91906154a1565b6144b4919061536a565b90508082141580156144d65750816144cc8688615831565b64ffffffffff1614155b15614526576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103df565b818664ffffffffff161115614577576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103df565b6000614584848984614aa3565b905060006145918b613d6b565b905060005b815181101561465c5760008282815181106145b3576145b361548b565b602002602001015190506145df6010826affffffffffffffffffffff1916613c7b90919063ffffffff16565b1561465357606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016146209796959493929190615856565b600060405180830381600087803b15801561463a57600080fd5b505af115801561464e573d6000803e3d6000fd5b505050505b50600101614596565b5064ffffffffff881660005b8a60ff168160ff16101561469b5761468f878260ff166028026038011c64ffffffffff1690565b90910190600101614668565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516146d49594939291906158b4565b60405180910390a2508284146146f55760006146f08c8c613e9c565b839055505b60006147028c8c8c613ef2565b9050614716818a64ffffffffff1689613f72565b5060005b81518110156147e05760008282815181106147375761473761548b565b602002602001015190506147636020826affffffffffffffffffffff1916613c7b90919063ffffffff16565b156147d757606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016147a49796959493929190615856565b600060405180830381600087803b1580156147be57600080fd5b505af11580156147d2573d6000803e3d6000fd5b505050505b5060010161471a565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526108b885858584614b71565b6060600061481f8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816148455761484561574d565b04905060405193506020840160208202810160405281855260005b82811015614880578451871c825293870193602090910190600101614860565b50505050509392505050565b8251606090600061489d85836154b4565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614880578051871b835291870191600191909101906020016148bf565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161492f57507e60030220202000000000000000000000000000000000000000000000000000919050565b61034961495c7f746273746f72650000000000000000005461626c65730000000000000000000084614c3d565b60206000613aad565b606060006060600061497685613733565b9050614983878783614c59565b93506000614990866128dd565b90508015614a62576149a28888614433565b935066ffffffffffffff841667ffffffffffffffff8111156149c6576149c6614e9d565b6040519080825280601f01601f1916602001820160405280156149f0576020820181803683370190505b5092506020830160005b828160ff161015614a5f576000614a128b8b84613ef2565b90506000614a2f888460ff166028026038011c64ffffffffff1690565b9050614a3e8260008387614b71565b614a48818561536a565b935050508080614a5790615906565b9150506149fa565b50505b505093509350939050565b6000614a93616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614c92565b8061291b575061291b8383614c92565b600064ffffffffff821115614ae7576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103df565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614b195780850382019150614b21565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614bf85760208310614b9b57602083048401935060208381614b9757614b9761574d565b0692505b8215614bf8576020839003600081841015614bbe5750600019600884021c614bc8565b50600019600882021c5b8554600886021b818451168219821617845250818411614be9575050610b41565b50600194909401939182900391015b5b60208210614c1a5783548152600190930192601f1990910190602001614bf9565b8115610b41576000600019600884021c8251865482191691161782525050505050565b6040805160208101849052908101829052600090606001613a6c565b606081600003614c78575060408051602081019091526000815261291b565b6000614c848585613a57565b9050612aeb816000856147ee565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614ccb57614ccb61548b565b602002602001018181525050826001600160a01b031660001b81600181518110614cf757614cf761548b565b60209081029190910101526000614d377f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612abe565b9050612aeb8160f81c90565b80356001600160e01b03198116811461372e57600080fd5b600060208284031215614d6d57600080fd5b61291b82614d43565b6001600160a01b03811681146109fa57600080fd5b60008060408385031215614d9e57600080fd5b823591506020830135614db081614d76565b809150509250929050565b60008083601f840112614dcd57600080fd5b50813567ffffffffffffffff811115614de557600080fd5b6020830191508360208260051b8501011115614e0057600080fd5b9250929050565b60008060008060008060008060c0898b031215614e2357600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614e5757600080fd5b614e638c838d01614dbb565b909650945060a08b0135915080821115614e7c57600080fd5b50614e898b828c01614dbb565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614edc57614edc614e9d565b604052919050565b600082601f830112614ef557600080fd5b813567ffffffffffffffff811115614f0f57614f0f614e9d565b614f226020601f19601f84011601614eb3565b818152846020838601011115614f3757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614f6957600080fd5b8335614f7481614d76565b925060208401359150604084013567ffffffffffffffff811115614f9757600080fd5b614fa386828701614ee4565b9150509250925092565b60008060408385031215614fc057600080fd5b82359150602083013567ffffffffffffffff811115614fde57600080fd5b614fea85828601614ee4565b9150509250929050565b60008060006060848603121561500957600080fd5b83359250602084013561501b81614d76565b91506040840135801515811461503057600080fd5b809150509250925092565b803560ff8116811461372e57600080fd5b60008060006060848603121561506157600080fd5b83359250602084013561507381614d76565b91506150816040850161503b565b90509250925092565b60008060006060848603121561509f57600080fd5b83359250602084013567ffffffffffffffff8111156150bd57600080fd5b6150c986828701614ee4565b92505061508160408501614d43565b600080604083850312156150eb57600080fd5b82356150f681614d76565b9150602083013567ffffffffffffffff811115614fde57600080fd5b60006020828403121561512457600080fd5b5035919050565b60008060006060848603121561514057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614f9757600080fd5b60006020828403121561517757600080fd5b813561291b81614d76565b60005b8381101561519d578181015183820152602001615185565b50506000910152565b600081518084526151be816020860160208601615182565b601f01601f19169290920160200192915050565b8281526040602082015260006114f860408301846151a6565b600067ffffffffffffffff8084111561520657615206614e9d565b8360051b602061521860208301614eb3565b8681529185019160208101903684111561523157600080fd5b865b848110156152655780358681111561524b5760008081fd5b61525736828b01614ee4565b845250918301918301615233565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612aeb60608301846151a6565b600083516152ac818460208801615182565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516152e6816002840160208801615182565b01600201949350505050565b8051602080830151919081101561297c5760001960209190910360031b1b16919050565b60208152600061291b60208301846151a6565b60408152600061533c60408301856151a6565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561034957610349615354565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516153c6816003860160208901615182565b8084019050816003820152845191506153e6826004830160208801615182565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561547e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261546c8583516151a6565b94509285019290850190600101615432565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561034957610349615354565b808202811582820484141761034957610349615354565b6001600160a01b0384168152826020820152606060408201526000612aeb60608301846151a6565b60008151808452602080850194506020840160005b8381101561552457815187529582019590820190600101615508565b509495945050505050565b60808152600061554260808301876154f3565b828103602084015261555481876151a6565b90508460408401528281036060840152613bec81856151a6565b86815260c06020820152600061558760c08301886154f3565b828103604084015261559981886151a6565b905085606084015282810360808401526155b381866151a6565b9150508260a0830152979650505050505050565b600082516155d9818460208701615182565b9190910192915050565b60208152600061291b60208301846154f3565b83815260606020820152600061560f60608301856154f3565b9050826040830152949350505050565b8281526040602082015260006114f860408301846154f3565b84815260806020820152600061565160808301866154f3565b60ff851660408401528281036060840152613bec81856151a6565b6000835161567e818460208801615182565b835190830190615692818360208801615182565b01949350505050565b6060815260006156ae60608301866154f3565b65ffffffffffff8516602084015282810360408401526156ce81856151a6565b9695505050505050565b8481526080602082015260006156f160808301866154f3565b65ffffffffffff851660408401528281036060840152613bec81856151a6565b8281526000602080830184516020860160005b8281101561574057815184529284019290840190600101615724565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261578057634e487b7160e01b600052601260045260246000fd5b500490565b60008451615797818460208901615182565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b8481526080602082015260006157dd60808301866154f3565b60ff949094166040830152506060015292915050565b60006020828403121561580557600080fd5b5051919050565b60608152600061581f60608301866151a6565b60208301949094525060400152919050565b64ffffffffff81811683821601908082111561584f5761584f615354565b5092915050565b87815260e06020820152600061586f60e08301896154f3565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526158a681856151a6565b9a9950505050505050505050565b60a0815260006158c760a08301886154f3565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526158fa81856151a6565b98975050505050505050565b600060ff821660ff810361591c5761591c615354565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004f6738038062004f67833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614e396200012e60003960008181610726015281816115df015261166e015260006106be01526000610656015260006105d5015260005050614e396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780637c5b0335146100ff5780639081c75814610112578063e1af802c1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b6100956100903660046145a5565b610122565b60405190151581526020015b60405180910390f35b6100b2610207565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046145fd565b610216565b005b604051601f1936013581526020016100a1565b6100ea61010d3660046145fd565b610248565b6100b2610263565b6100b261026d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f255f267f00000000000000000000000000000000000000000000000000000000145b8061020157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610211610277565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102506102a9565b610258610593565b61026061074c565b50565b6000610211610cbc565b6000610211610cc6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102a65750335b90565b6102b1610cd0565b6102b9610f48565b6102c1610f99565b6102c9610fe5565b6102d1611031565b6102d961107d565b6102e16110c1565b6102e961110d565b6102f1611171565b6102f96111d5565b610301611237565b610309611299565b6103116112e5565b610319611329565b60408051616e7360f01b6020820152600060228201819052603082015261035b91015b604051602081830303815290604052610354906146ae565b6001611375565b60408051616e7360f01b602082015260006022820181905260308201526103a391015b604051602081830303815290604052610396906146ae565b61039e610207565b61141b565b60408051616e7360f01b602082015260006022820181905260308201526103ed91015b6040516020818303038152906040526103de906146ae565b6103e6610207565b60016114e0565b60408051616e7360f01b60208201527f73746f7265000000000000000000000000000000000000000000000000000000602282015260006030820152610433910161033c565b60408051616e7360f01b60208201527f73746f7265000000000000000000000000000000000000000000000000000000602282015260006030820152610479910161037e565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104bf91016103c6565b60408051616e7360f01b60208201527f776f726c64000000000000000000000000000000000000000000000000000000602282015260006030820152610505910161033c565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261054b910161037e565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261059191016103c6565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610614917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261060f906146ae565b6115a2565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261067c917f000000000000000000000000000000000000000000000000000000000000000091016105f7565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106e4917f000000000000000000000000000000000000000000000000000000000000000091016105f7565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610591917f000000000000000000000000000000000000000000000000000000000000000091016105f7565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614e0b6022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b60048110156108b1576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108a9910160405160208183030381529060405261088d906146ae565b83836004811061089f5761089f6146d2565b602002015161165f565b60010161082b565b506040805160a0810182526033918101828152600092829190614daf60608401398152602001604051806060016040528060318152602001614c7e603191399052905060005b6002811015610974576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261096c91015b60405160208183030381529060405261095a906146ae565b83836002811061089f5761089f6146d2565b6001016108f7565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614d0a602891399052905060005b6002811015610a34576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a2c9101610942565b6001016109dd565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e0830152815281516060810183528281526000926020808401929190614bc9908301398152602001604051806060016040528060288152602001614caf602891398152602001604051806060016040528060248152602001614ba56024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614de2602991398152602001604051806060016040528060258152602001614d32602591398152602001604051806060016040528060248152602001614c5a602491398152602001604051806060016040528060288152602001614c32602891398152602001604051806060016040528060338152602001614cd7603391398152602001604051806060016040528060298152602001614c096029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614d7d603291398152602001604051806060016040528060268152602001614d57602691399052905060005b600e811015610cb5576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610cad9101604051602081830303815290604052610c9b906146ae565b8383600e811061089f5761089f6146d2565b600101610c39565b5050505050565b6000610211611706565b6000610211611755565b610cf97f746273746f72650000000000000000005461626c6573000000000000000000006117a1565b15610d7757604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d6e9291600401614738565b60405180910390fd5b610da07f746273746f72650000000000000000005265736f7572636549647300000000006117a1565b15610dd857604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610d2d565b610e7f7f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610e2461182e565b610e2c6118a6565b610e346119f5565b604051602001610e4491906147ab565b604051602081830303815290604052610e5b611a7a565b604051602001610e6b91906147ab565b604051602081830303815290604052611c42565b610eea7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610eb361182e565b610ebb611d09565b610ec3611d43565b604051602001610ed391906147ab565b604051602081830303815290604052610e5b611dba565b610f157f746273746f72650000000000000000005461626c6573000000000000000000006001611375565b610f407f746273746f72650000000000000000005265736f7572636549647300000000006001611375565b610591611e31565b6105917f7462776f726c640000000000000000004e616d6573706163654f776e65720000630500400560da1b610f7c61182e565b610f84611e93565b610f8c611ecd565b610f94611f44565b611fbb565b6105917f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fcd61182e565b610fd561208f565b610fdd611ecd565b610f946120c9565b6105917f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b611019612140565b611021611d09565b6110296121bf565b610f94612289565b6105917f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b611065612300565b61106d61182e565b61107561237f565b610f94612449565b6105917f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b6110b161182e565b6110b961182e565b611075611ecd565b6105917f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110f56124c0565b6110fd611d09565b6111056124fa565b610f946125c4565b6105917f7462776f726c6400000000000000000053797374656d730000000000000000007e1502001401000000000000000000000000000000000000000000000000000061115961182e565b61116161263b565b6111696126ba565b610f94612731565b6105917f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111bd6127fb565b6111c5612835565b6111cd6128b4565b610f9461292b565b6105917f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c010000000000000000000000000000000000000000000000000000000061121f6127fb565b6112276129f5565b61122f6128b4565b610f94612a2f565b6105917f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061128161182e565b611289612aa6565b6112916126ba565b610f94612ae0565b6105917f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112cd611e93565b6112d561182e565b6112dd612b57565b610f946126ba565b6105917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573630500400560da1b611319612bce565b611321611e93565b611291612be7565b6105917f7462776f726c640000000000000000005472616e73616374696f6e436f6e7465630500400560da1b61135d612bce565b611365611e93565b61136d612be7565b610f94612c1a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab6146d2565b6020026020010181815250506114167f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113f991151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612c91565b505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611451576114516146d2565b6020026020010181815250506114167f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016114c3919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f19818403018152919052630500400560da1b612c91565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611515576115156146d2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061154e5761154e6146d2565b60200260200101818152505061159c7f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113f991151560f81b815260010190565b50505050565b6114166115ad610207565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612ca6565b61141661166a610207565b60007f0000000000000000000000000000000000000000000000000000000000000000858586805190602001206040516024016116a9939291906147be565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612ca6565b60408051600080825260208201909252600061174b7f7462776f726c640000000000000000005472616e73616374696f6e436f6e74658383630500400560da1b612cd3565b60601c9392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061179c573391505090565b919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106117da576117da6146d2565b6020908102919091010152600061181a7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612daa565b90506118268160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110611868576118686146d2565b602002602001019060c581111561188157611881614809565b908160c581111561189457611894614809565b9052506118a081612de0565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106118e1576118e16146d2565b602002602001019060c58111156118fa576118fa614809565b908160c581111561190d5761190d614809565b81525050605f81600181518110611926576119266146d2565b602002602001019060c581111561193f5761193f614809565b908160c581111561195257611952614809565b81525050605f8160028151811061196b5761196b6146d2565b602002602001019060c581111561198457611984614809565b908160c581111561199757611997614809565b8152505060c4816003815181106119b0576119b06146d2565b602002602001019060c58111156119c9576119c9614809565b908160c58111156119dc576119dc614809565b8152505060c481600481518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611a0c5790505090506040518060400160405280600781526020017f7461626c6549640000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a925790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611af257611af26146d2565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611b4657611b466146d2565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b9a57611b9a6146d2565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611bee57611bee6146d2565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110611a6c57611a6c6146d2565b6000611c4f868686612f9b565b90506000611c5d8484612fd1565b90506000611c6b8585612ff1565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611ca557611ca56146d2565b6020908102919091010152611cfd7f746273746f72650000000000000000005461626c657300000000000000000000828686867e6003022020200000000000000000000000000000000000000000000000000061301d565b50505050505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d5a5790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611dd15790505090506040518060400160405280600681526020017f657869737473000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6105917f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611e7b61182e565b611e83612aa6565b611e8b6119f5565b610f9461335e565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ee45790505090506040518060400160405280600b81526020017f6e616d657370616365496400000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081611f5b5790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6000611fc5611755565b90503073ffffffffffffffffffffffffffffffffffffffff821603611ff757611ff28787878787876133d5565b612086565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990612053908a908a908a908a908a908a9060040161481f565b600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816120e05790505090506040518060400160405280600781526020017f62616c616e63650000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061217a5761217a6146d2565b602002602001019060c581111561219357612193614809565b908160c58111156121a6576121a6614809565b81525050605f81600181518110611868576118686146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816121d55790505090506040518060400160405280600d81526020017f6d6f64756c65416464726573730000000000000000000000000000000000000081525081600081518110612235576122356146d2565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e7473486173680000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816122a05790505090506040518060400160405280600b81526020017f6973496e7374616c6c656400000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061233a5761233a6146d2565b602002602001019060c581111561235357612353614809565b908160c581111561236657612366614809565b81525050606181600181518110611868576118686146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816123955790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106123f5576123f56146d2565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816124605790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c49640000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061233a5761233a6146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816125105790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110612570576125706146d2565b60200260200101819052506040518060400160405280600681526020017f63616c6c6572000000000000000000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816125db5790505090506040518060400160405280600681526020017f616363657373000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110612675576126756146d2565b602002602001019060c581111561268e5761268e614809565b908160c58111156126a1576126a1614809565b81525050606081600181518110611868576118686146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816126d15790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816127475790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106127a7576127a76146d2565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110611a6c57611a6c6146d2565b60408051600180825281830190925260009182919060208083019080368337019050509050604381600081518110611868576118686146d2565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061286f5761286f6146d2565b602002602001019060c581111561288857612888614809565b908160c581111561289b5761289b614809565b81525050604381600181518110611868576118686146d2565b604080516001808252818301909252606091816020015b60608152602001906001900390816128cb5790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f720000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160028082526060828101909352816020015b60608152602001906001900390816129415790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106129a1576129a16146d2565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600181518110611a6c57611a6c6146d2565b6040805160018082528183019092526000918291906020808301908036833701905050905060c581600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a465790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e617475726500000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b6040805160018082528183019092526000918291906020808301908036833701905050905060b681600081518110611868576118686146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081612af75790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b6e5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b604080516000808252602082019092526118a081612de0565b60408051600080825260208201909252606091612c14565b6060815260200190600190039081612bff5790505b50905090565b604080516001808252818301909252606091816020015b6060815260200190600190039081612c315790505090506040518060400160405280600e81526020017f66697273744d736753656e64657200000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b610cb58585612ca0848761380c565b85613845565b6060600080612cb787878787613ae0565b9150915081612cc957612cc981613b61565b9695505050505050565b600080612cde611755565b90503073ffffffffffffffffffffffffffffffffffffffff821603612d1157612d0986868686612daa565b915050611826565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990612d699089908990899089906004016148a5565b602060405180830381865afa158015612d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0991906148d4565b6000612dd7612db98686613b69565b60ff858116601b0360080285901c16612dd2858761380c565b613bbf565b95945050505050565b6000601c82511115612e0a578151604051635318beb960e01b8152600401610d6e91815260200190565b60008080805b8551811015612ee5576000612e4e878381518110612e3057612e306146d2565b602002602001015160c5811115612e4957612e49614809565b613c10565b905080600003612e6357600190920191612e9b565b8215612e9b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612ebc57612ebc6146d2565b602002602001015160c5811115612ed557612ed5614809565b901b949094179350600101612e10565b506005811115612f0b57604051635318beb960e01b815260048101829052602401610d6e565b84518190036008612f1e60026020614903565b612f289190614916565b83901b939093179260086001612f4060026020614903565b612f4a9190614903565b612f549190614916565b81901b93909317926008600180612f6d60026020614903565b612f779190614903565b612f819190614903565b612f8b9190614916565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b6060828260405160200161300692919061492d565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036130a957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161309c949392919061495c565b60405180910390a2613356565b60006130b487613c70565b905060005b815181101561318d5760008282815181106130d6576130d66146d2565b602002602001015190506131026001826affffffffffffffffffffff1916613cf990919063ffffffff16565b15613184576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613151908c908c908c908c908c908c906004016149a6565b600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b505050505b506001016130b9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516131c4949392919061495c565b60405180910390a260006131d88888613b69565b905060006020870190506131f0826000895184613d17565b60006131fb85613dd6565b111561327f57600061320d8a8a613e13565b878155905060208601915060008060005b61322788613dd6565b8160ff16101561327a5761323c8d8d83613e69565b92506132578a8260ff166028026038011c64ffffffffff1690565b91506132668360008488613d17565b61327082866149ff565b945060010161321e565b505050505b60005b8351811015611cfd57600084828151811061329f5761329f6146d2565b602002602001015190506132cb6002826affffffffffffffffffffff1916613cf990919063ffffffff16565b1561334d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061331a908e908e908e908e908e908e906004016149a6565b600060405180830381600087803b15801561333457600080fd5b505af1158015613348573d6000803e3d6000fd5b505050505b50600101613282565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816133755790505090506040518060400160405280600581526020017f686f6f6b7300000000000000000000000000000000000000000000000000000081525081600081518110611a6c57611a6c6146d2565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061346957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b156134e5577f746200000000000000000000000000000000000000000000000000000000000086876040516020016134a391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d6e939291600401614a12565b6134ee85613ee9565b6134f9846001614130565b613504836000614130565b60e084901c60e885901c0160ff168251146135645760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b60e085901c60e886901c0160ff168151146135c45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461363c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b613645856142cc565b61364e846142cc565b146136a05761365c856142cc565b613665846142cc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b6136a985613dd6565b6136b284613dd6565b14613704576136c085613dd6565b6136c984613dd6565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b60005b613710866142cc565b8110156137a65761373561372485836142de565b60c5811115612e4957612e49614809565b6008601b8390030287901c60ff161461379e576008601b8290030286901c60ff1661376361372486846142de565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d6e565b600101613707565b506137b0866117a1565b156137c9578586604051602001610d2d91815260200190565b61380186868686866040516020016137e191906147ab565b60405160208183030381529060405286604051602001610e6b91906147ab565b613356866001611375565b600080805b8360ff1681101561383d5761383360ff601b83900360080287901c16836149ff565b9150600101613811565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036138cf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516138c293929190614a53565b60405180910390a261159c565b60006138db8585613b69565b905060006138e886613c70565b905060005b81518110156139bd57600082828151811061390a5761390a6146d2565b602002602001015190506139366004826affffffffffffffffffffff1916613cf990919063ffffffff16565b156139b4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613981908b908b908b908b90600401614a86565b600060405180830381600087803b15801561399b57600080fd5b505af11580156139af573d6000803e3d6000fd5b505050505b506001016138ed565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516139f293929190614a53565b60405180910390a2613a0d828565ffffffffffff16856142ff565b60005b8151811015612086576000828281518110613a2d57613a2d6146d2565b60200260200101519050613a596008826affffffffffffffffffffff1916613cf990919063ffffffff16565b15613ad7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613aa4908b908b908b908b90600401614a86565b600060405180830381600087803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b505050505b50600101613a10565b600060608373ffffffffffffffffffffffffffffffffffffffff16613b06848888614315565b604051613b139190614abf565b600060405180830381855af49150503d8060008114613b4e576040519150601f19603f3d011682016040523d82523d6000602084013e613b53565b606091505b509097909650945050505050565b805160208201fd5b60008282604051602001613b7e929190614adb565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613be557602082048401935060208281613be157613be1614b17565b0691505b508254600882021b60208290038084111561383d576001850154600882021c82179150509392505050565b6000808260c5811115613c2557613c25614809565b60ff1690506061811015613c3f57601f1660010192915050565b60618360c5811115613c5357613c53614809565b03613c615750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613caa57613caa6146d2565b60209081029190910101526000613ce27f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361432c565b9050611826613cf48260008451614366565b6143f4565b60008160ff1682613d0a8560581c90565b1660ff1614905092915050565b8215613d915760208310613d4157602083048401935060208381613d3d57613d3d614b17565b0692505b8215613d915760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613d8257505061159c565b50600194909401939182900391015b5b60208210613db35780518455600190930192601f1990910190602001613d92565b811561159c576000600019600884021c8554835182191691161785555050505050565b60006008600180613de960026020614903565b613df39190614903565b613dfd9190614903565b613e079190614916565b8260ff911c1692915050565b60008282604051602001613e28929190614adb565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e7e929190614adb565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613f20576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613f2b82613dd6565b90506005811115613f72576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d6e565b6000613f7d836142cc565b90506000613f8b83836149ff565b9050601c811115613fd2576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d6e565b6000805b8381101561407d5760ff601b82900360080287901c16600081900361402a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d6e565b6020811115614068576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d6e565b61407281846149ff565b925050600101613fd6565b5061408785614405565b81146140d35761409685614405565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d6e565b825b601c8110156133565760ff601b82900360080287901c168015614127576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d6e565b506001016140d5565b8015801561413c575081155b1561415d57604051635318beb960e01b815260006004820152602401610d6e565b600061416883613dd6565b9050600581111561418f57604051635318beb960e01b815260048101829052602401610d6e565b600061419a846142cc565b905060006141a883836149ff565b9050601c8111156141cf57604051635318beb960e01b815260048101829052602401610d6e565b6000805b8381101561423b5760006141ea61372489846142de565b905080600003614226576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61423081846149ff565b9250506001016141d3565b5061424586614405565b81146142705761425486614405565b604051635318beb960e01b8152600401610d6e91815260200190565b825b8281101561208657600061428961372489846142de565b905080156142c3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101614272565b600060086001613df360026020614903565b6000601b8290036008028360ff911c1660c5811115612fea57612fea614809565b611416838383516143108560200190565b613d17565b6060838383604051602001612fb993929190614b2d565b606061182661433c858585613e69565b60006143618561434c8989614428565b9060ff166028026038011c64ffffffffff1690565b61443b565b6000818311806143765750835182115b156143b3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d6e93929190614b7f565b602084016143c184826149ff565b905060006143cf8585614903565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612fea836015600061445e565b6000600861441560026020614903565b61441f9190614916565b9190911c919050565b6000612fea6144378484613e13565b5490565b60405160208101601f19603f848401011660405282825261383d858585846144d9565b6060600061446c8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161449257614492614b17565b04905060405193506020840160208202810160405281855260005b828110156144cd578451871c8252938701936020909101906001016144ad565b50505050509392505050565b82156145605760208310614503576020830484019350602083816144ff576144ff614b17565b0692505b82156145605760208390036000818410156145265750600019600884021c614530565b50600019600882021c5b8554600886021b81845116821982161784525081841161455157505061159c565b50600194909401939182900391015b5b602082106145825783548152600190930192601f1990910190602001614561565b811561159c576000600019600884021c8251865482191691161782525050505050565b6000602082840312156145b757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612fea57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561460f57600080fd5b813567ffffffffffffffff8082111561462757600080fd5b818401915084601f83011261463b57600080fd5b81358181111561464d5761464d6145e7565b604051601f8201601f19908116603f01168101908382118183101715614675576146756145e7565b8160405282815287602084870101111561468e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613c6a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156147035781810151838201526020016146eb565b50506000910152565b600081518084526147248160208601602086016146e8565b601f01601f19169290920160200192915050565b828152604060208201526000611826604083018461470c565b60008282518085526020808601955060208260051b8401016020860160005b8481101561479e57601f1986840301895261478c83835161470c565b98840198925090830190600101614770565b5090979650505050505050565b602081526000612fea6020830184614751565b8381526060602082015260006147d7606083018561470c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061484a60c0830185614751565b82810360a084015261485c8185614751565b9998505050505050505050565b60008151808452602080850194506020840160005b8381101561489a5781518752958201959082019060010161487e565b509495945050505050565b8481526080602082015260006148be6080830186614869565b60ff949094166040830152506060015292915050565b6000602082840312156148e657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610201576102016148ed565b8082028115828204841417610201576102016148ed565b6000835161493f8184602088016146e8565b8351908301906149538183602088016146e8565b01949350505050565b60808152600061496f6080830187614869565b8281036020840152614981818761470c565b9050846040840152828103606084015261499b818561470c565b979650505050505050565b86815260c0602082015260006149bf60c0830188614869565b82810360408401526149d1818861470c565b905085606084015282810360808401526149eb818661470c565b9150508260a0830152979650505050505050565b80820180821115610201576102016148ed565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612dd7606083018461470c565b606081526000614a666060830186614869565b65ffffffffffff851660208401528281036040840152612cc9818561470c565b848152608060208201526000614a9f6080830186614869565b65ffffffffffff85166040840152828103606084015261499b818561470c565b60008251614ad18184602087016146e8565b9190910192915050565b8281526000602080830184516020860160005b82811015614b0a57815184529284019290840190600101614aee565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614b3f8184602089016146e8565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b606081526000614b92606083018661470c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:204:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:320;;;:::i;:::-;;2170:134:113;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;5071:1492:204:-;;;:::i;2787:146:113:-;;;:::i;6567:861:204:-;;;:::i;1875:141:113:-;;;:::i;1819:584:107:-;;;:::i;:::-;;;4024:14:208;;4017:22;3999:41;;3987:2;3972:18;1819:584:107;3859:187:208;3475:1592:204;;;:::i;2240:1231::-;;;:::i;2022:142:113:-;;;:::i;1572:26:107:-;;;;;;;;;1916:320:204;1954:13;:11;:13::i;:::-;1946:5;:21;;;;-1:-1:-1;;;;;1946:21:204;;;;;;;;;1997:31;;1973:23;;1997:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2030:12:204;;;2040:1;2030:12;;;;;;;;;1973:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:22;2104:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2131:5:204;;2155:8;;2079:46;;-1:-1:-1;;;;;;2131:5:204;;:23;;2155:25;;578:36:59;2820:46;816:18:99;2819:74:59;;2708:191;2155:25:204;2131:50;;;;;;;;;;;;;4796:25:208;;4784:2;4769:18;;4619:208;2131:50:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2187:5:204;;2208:8;;2187:44;;;;;;;;5084:25:208;;;;-1:-1:-1;;;;;5145:55:208;;;5125:18;;;5118:83;2187:5:204;5217:18:208;;;5210:50;2187:5:204;;;;-1:-1:-1;2187:20:204;;-1:-1:-1;5057:18:208;;2187:44:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:296;1916:320::o;2170:134:113:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:113;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:113;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:113;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5071:1492:204;5199:10;;;;;5207:1;5199:10;;;4796:25:208;5150:4:204;;5199:7;;;;4769:18:208;;5199:10:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5266:9:204;;5257:19;;-1:-1:-1;;;5257:19:204;;-1:-1:-1;;;;;5266:9:204;;;5257:19;;;6049:74:208;5257:8:204;;-1:-1:-1;5257:8:204;;-1:-1:-1;6022:18:208;;5257:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5282:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;5337:5;;5369:9;;;719:71:186;;;-1:-1:-1;;;719:71:186;;;6317:92:208;5337:5:204;6425:11:208;;;6418:100;;;;769:20:186;6534:12:208;;;6527:101;-1:-1:-1;;;;;5337:5:204;;;;:24;;5369:9;;;6644:12:208;719:71:186;;;;;;;;;;;;711:80;;;:::i;:::-;5473:9:204;;5414:84;;-1:-1:-1;;;;;5473:9:204;;;5414:84;;;7203:74:208;7293:18;;;7286:34;;;7176:18;;5414:84:204;;;-1:-1:-1;;5414:84:204;;;;;;;;;;;;;;-1:-1:-1;;;;;5414:84:204;;;;;5337:167;;5414:84;5337:167;;;;;;;;;;5414:84;5337:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:14;:12;:14::i;:::-;5607:9;;5598:19;;-1:-1:-1;;;5598:19:204;;-1:-1:-1;;;;;5607:9:204;;;5598:19;;;6049:74:208;5598:8:204;;;;6022:18:208;;5598:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;5713:5;;5728:9;;5739:8;;;5749:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5749:45:204;-1:-1:-1;;;5749:45:204;;;5713:82;;-1:-1:-1;;;5713:82:204;;5687:23;;-1:-1:-1;;;;;5713:5:204;;;;:14;;:82;;5728:9;;;;;5739:8;;5749:45;;5713:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5713:82:204;;;;;;;;;;;;:::i;:::-;5687:108;;5801:14;:12;:14::i;:::-;5821:23;5858:10;5847:33;;;;;;;;;;;;:::i;:::-;5979:9;;5821:59;;-1:-1:-1;5953:36:204;;5821:59;;-1:-1:-1;;;;;5979:9:204;5953:8;:36::i;:::-;6081:21;;;;;;;;4796:25:208;;;6081:7:204;;;;4769:18:208;;6081:21:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6117:9:204;;6108:19;;-1:-1:-1;;;6108:19:204;;-1:-1:-1;;;;;6117:9:204;;;6108:19;;;6049:74:208;6108:8:204;;-1:-1:-1;6108:8:204;;-1:-1:-1;6022:18:208;;6108:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:5:204;;6148:9;;6159:8;;;6169:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6169:45:204;-1:-1:-1;;;6169:45:204;;;6133:82;;-1:-1:-1;;;6133:82:204;;-1:-1:-1;;;;;6133:5:204;;;;-1:-1:-1;6133:14:204;;-1:-1:-1;6133:82:204;;6148:9;;;;;6159:8;;6169:45;;6133:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:82:204;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6305:7:204;;6313:16;:12;6328:1;6313:16;:::i;:::-;6305:25;;;;;;;;;;;;;4796::208;;4784:2;4769:18;;4619:208;6305:25:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6345:9:204;;6336:19;;-1:-1:-1;;;6336:19:204;;-1:-1:-1;;;;;6345:9:204;;;6336:19;;;6049:74:208;6336:8:204;;-1:-1:-1;6336:8:204;;-1:-1:-1;6022:18:208;;6336:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6448:9:204;;6459;;6377:92;;;-1:-1:-1;;;;;6448:9:204;;;6377:92;;;10091:34:208;6459:9:204;;;;10141:18:208;;;;10134:43;;;;6377:92:204;;;;;;;;;;10003:18:208;;;;6377:92:204;;;;;;;-1:-1:-1;;;;;6377:92:204;6400:46;6377:92;;;6361:109;;;;:15;;-1:-1:-1;6361:15:204;;-1:-1:-1;6361:109:204;;6377:92;6361:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:5:204;;6491:9;;6502:8;;;6512:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6512:45:204;-1:-1:-1;;;6512:45:204;;;6476:82;;-1:-1:-1;;;6476:82:204;;-1:-1:-1;;;;;6476:5:204;;;;-1:-1:-1;6476:14:204;;-1:-1:-1;6476:82:204;;6491:9;;;;;6502:8;;6512:45;;6476:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:82:204;;;;;;;;;;;;:::i;:::-;;5121:1442;;;5071:1492::o;2787:146:113:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:861:204;6706:32;6741:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6706:47;;6759:32;6794:122;-1:-1:-1;;;6794:122:204;;:25;:122::i;:::-;6922:5;;:76;;;;;;;;5084:25:208;;;-1:-1:-1;;;;;5145:55:208;;;5125:18;;;5118:83;6922:5:204;5217:18:208;;;5210:50;6759:157:204;;-1:-1:-1;6922:5:204;;;:20;;5057:18:208;;6922:76:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7121:9:204;;7112:19;;-1:-1:-1;;;7112:19:204;;-1:-1:-1;;;;;7121:9:204;;;7112:19;;;6049:74:208;7112:8:204;;-1:-1:-1;7112:8:204;;-1:-1:-1;6022:18:208;;7112:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7160:179:204;;;-1:-1:-1;;;;;11031:55:208;;7160:179:204;;;11013:74:208;7295:36:204;11103:18:208;;;;11096:107;;;;7160:179:204;;;;;;;;;;10986:18:208;;;;7160:179:204;;;;;;;-1:-1:-1;;;;;7160:179:204;7192:49;7160:179;;;7137:208;;;;;:15;;-1:-1:-1;7137:15:204;;-1:-1:-1;7137:208:204;;7160:179;7137:208;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7351:5:204;;7376:9;;7410:12;;;7351:5;7410:12;;;;;;;;;-1:-1:-1;;;;;7351:5:204;;;;-1:-1:-1;7351:24:204;;-1:-1:-1;7376:9:204;;;;;7387:21;;7410:12;;;;;;;;;;-1:-1:-1;7410:12:204;7351:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6635:793;;6567:861::o;1875:141:113:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:107;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:107;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7203:74:208;;;2221:17:107;7293:18:208;;;7286:34;2196:43:107;;;;;;;;;7176:18:208;;;2196:43:107;;;-1:-1:-1;;1671:64:107;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:107;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:107:o;3475:1592:204:-;3628:9;;3619:19;;-1:-1:-1;;;3619:19:204;;-1:-1:-1;;;;;3628:9:204;;;3619:19;;;6049:74:208;3619:8:204;;;;6022:18:208;;3619:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3644:51;;;;;;;;;;;;;;;;;;:14;:51::i;:::-;3701:5;;3733:9;;;546:73:186;;;-1:-1:-1;;;546:73:186;;;6317:92:208;3701:5:204;6425:11:208;;;6418:100;;;;596:22:186;6534:12:208;;;6527:101;-1:-1:-1;;;;;3701:5:204;;;;:24;;3733:9;;;6644:12:208;546:73:186;;;;;;;;;;;;538:82;;;:::i;:::-;3841:9:204;;3852:8;;3780:85;;-1:-1:-1;;;;;3841:9:204;;;3780:85;;;12766:74:208;12856:18;;;12849:34;3862:1:204;12899:18:208;;;12892:34;12739:18;;3780:85:204;;;-1:-1:-1;;3780:85:204;;;;;;;;;;;;;;-1:-1:-1;;;;;3780:85:204;;;;;3701:170;;3780:85;3701:170;;;;;;;;;;3780:85;3701:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:14;:12;:14::i;:::-;3974:9;;3965:19;;-1:-1:-1;;;3965:19:204;;-1:-1:-1;;;;;3974:9:204;;;3965:19;;;6049:74:208;3965:8:204;;;;6022:18:208;;3965:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3990:60;;;;;;;;;;;;;;;;;;:14;:60::i;:::-;4082:5;;4097:9;;4108:8;;;4118:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4118:45:204;-1:-1:-1;;;4118:45:204;;;4082:82;;-1:-1:-1;;;4082:82:204;;4056:23;;-1:-1:-1;;;;;4082:5:204;;;;:14;;:82;;4097:9;;;;;4108:8;;4118:45;;4082:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4082:82:204;;;;;;;;;;;;:::i;:::-;4056:108;;4170:14;:12;:14::i;:::-;4190:23;4227:10;4216:33;;;;;;;;;;;;:::i;:::-;4348:9;;4190:59;;-1:-1:-1;4322:36:204;;4190:59;;-1:-1:-1;;;;;4348:9:204;4322:8;:36::i;:::-;4453:9;;4444:19;;-1:-1:-1;;;4444:19:204;;-1:-1:-1;;;;;4453:9:204;;;4444:19;;;6049:74:208;4444:8:204;;;;6022:18:208;;4444:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:5:204;;4497:9;;4508:8;;4518:50;;4482:5;4518:50;;;4796:25:208;-1:-1:-1;;;;;4482:5:204;;;;-1:-1:-1;4482:14:204;;-1:-1:-1;4497:9:204;;;;;4769:18:208;;4518:50:204;;;-1:-1:-1;;4518:50:204;;;;;;;;;;;;;;-1:-1:-1;;;;;4518:50:204;;;;;4482:87;;4518:50;4482:87;;;;;;;;;;4518:50;4482:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:87:204;;;;;;;;;;;;:::i;:::-;4469:100;;4575:43;4632:10;4621:47;;;;;;;;;;;;:::i;:::-;4750:21;;4773:9;;4575:93;;-1:-1:-1;4741:42:204;;-1:-1:-1;;;;;4773:9:204;4741:8;:42::i;:::-;4849:9;;4840:19;;-1:-1:-1;;;4840:19:204;;-1:-1:-1;;;;;4849:9:204;;;4840:19;;;6049:74:208;4840:8:204;;;;6022:18:208;;4840:19:204;5903:226:208;2240:1231:204;2394:9;;2385:19;;-1:-1:-1;;;2385:19:204;;-1:-1:-1;;;;;2394:9:204;;;2385:19;;;6049:74:208;2385:8:204;;;;6022:18:208;;2385:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2410:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;2465:5;;2497:9;;;371:71:186;;;-1:-1:-1;;;371:71:186;;;6317:92:208;2465:5:204;6425:11:208;;;6418:100;;;;421:20:186;6534:12:208;;;6527:101;-1:-1:-1;;;;;2465:5:204;;;;:24;;2497:9;;;6644:12:208;371:71:186;;;;;;;;;;;;363:80;;;:::i;:::-;2618:9:204;;2629:8;;;2639:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2639:45:204;-1:-1:-1;;;2639:45:204;;;2542:154;;;;-1:-1:-1;;;;;2618:9:204;;;;2542:154;;:::i;:::-;;;;-1:-1:-1;;2542:154:204;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:154:204;;;;;2465:237;;2542:154;2465:237;;;;;;;;;;2542:154;2465:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:14;:12;:14::i;:::-;2805:9;;2796:19;;-1:-1:-1;;;2796:19:204;;-1:-1:-1;;;;;2805:9:204;;;2796:19;;;6049:74:208;2796:8:204;;;;6022:18:208;;2796:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;2911:5;;2926:9;;2937:8;;;2947:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:45:204;-1:-1:-1;;;2947:45:204;;;2911:82;;-1:-1:-1;;;2911:82:204;;2885:23;;-1:-1:-1;;;;;2911:5:204;;;;:14;;:82;;2926:9;;;;;2937:8;;2947:45;;2911:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2911:82:204;;;;;;;;;;;;:::i;:::-;2885:108;;2999:14;:12;:14::i;:::-;3019:23;3056:10;3045:33;;;;;;;;;;;;:::i;:::-;3177:9;;3019:59;;-1:-1:-1;3151:36:204;;3019:59;;-1:-1:-1;;;;;3177:9:204;3151:8;:36::i;:::-;3253:9;;3244:19;;-1:-1:-1;;;3244:19:204;;-1:-1:-1;;;;;3253:9:204;;;3244:19;;;6049:74:208;3244:8:204;;;;6022:18:208;;3244:19:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3356:9:204;;3367;;3285:92;;;-1:-1:-1;;;;;3356:9:204;;;3285:92;;;10091:34:208;3367:9:204;;;;10141:18:208;;;;10134:43;;;;3285:92:204;;;;;;;;;;10003:18:208;;;;3285:92:204;;;;;;;-1:-1:-1;;;;;3285:92:204;3308:46;3285:92;;;3269:109;;;;:15;;-1:-1:-1;3269:15:204;;-1:-1:-1;3269:109:204;;3285:92;3269:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:5:204;;3399:9;;3410:8;;;3420:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3420:45:204;-1:-1:-1;;;3420:45:204;;;3384:82;;-1:-1:-1;;;3384:82:204;;-1:-1:-1;;;;;3384:5:204;;;;-1:-1:-1;3384:14:204;;-1:-1:-1;3384:82:204;;3399:9;;;;;3410:8;;3420:45;;3384:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:82:204;;;;;;;;;;;;:::i;:::-;;2290:1181;;2240:1231::o;2022:142:113:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:113;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;232:137:106:-;264:16;313:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;286:40;;330:5;-1:-1:-1;;;;;330:16:106;;347:18;:16;:18::i;:::-;330:36;;;;;;;;;;-1:-1:-1;;;;;6067:55:208;;;330:36:106;;;6049:74:208;6022:18;;330:36:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:137;:::o;330:580:0:-;394:39;;;;;;;;;14698:21:208;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:108;14869:20:208;;;14862:52;394:8:0;;;;14834:19:208;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:108;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:108;;883:22:0;;;;;;;309:37:108;883:20:0;:22;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;14698:21:208;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:108;14869:20:208;;;14862:52;953:23:0;;-1:-1:-1;987:8:0;;;;14834:19:208;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;20307:2:208;1214:49:0;;;20289:21:208;20346:2;20326:18;;;20319:30;20385:27;20365:18;;;20358:55;20430:18;;1214:49:0;20105:349:208;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;3622:277:107:-;3690:1;-1:-1:-1;;;;;3685:6:107;:1;-1:-1:-1;;;;;3685:6:107;;3681:212;;3712:44;;;;;22422:2:208;22404:21;;;22461:2;22441:18;;;22434:30;22500:34;22495:2;22480:18;;22473:62;22571:7;22566:2;22551:18;;22544:35;22611:3;22596:19;;22220:401;3712:44:107;;;;;;;;3775:34;;;22838:21:208;;;22895:2;22875:18;;;22868:30;22934:12;22929:2;22914:18;;22907:40;-1:-1:-1;;;;;23021:55:208;;23014:4;22999:20;;22992:85;3775:34:107;;;;;;;22979:3:208;3775:34:107;;;3828;;;23300:21:208;;;23357:2;23337:18;;;23330:30;23396:12;23391:2;23376:18;;23369:40;-1:-1:-1;;;;;23483:55:208;;23476:4;23461:20;;23454:85;3828:34:107;;;;;;;23441:3:208;3828:34:107;;;3876:6;:4;:6::i;:::-;3622:277;;:::o;980:257:59:-;1067:10;1196:26;438:6;385:5:16;1196:26:59;:::i;:::-;1123:15;;;1142:31;385:5:16;1142:31:59;;;;1123:51;1178:13;;;:45;;;1123:101;;-1:-1:-1;980:257:59;;;;;:::o;506:219:105:-;543:10;592:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;628:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;663:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;692:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;570:152;;;;;:::i;:::-;-1:-1:-1;;;;;23976:15:208;;;23958:34;;24028:15;;;24023:2;24008:18;;24001:43;24080:15;;;24075:2;24060:18;;24053:43;24132:15;;;24127:2;24112:18;;24105:43;23884:3;23869:19;570:152:105;;;;;;;;;;;;;;;;;;;;;;;559:163;;506:219;:::o;1754:155:0:-;1818:86;317:28:108;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;4796:25:208;;;4784:2;4769:18;;4619:208;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;:::-;1754:155;:::o;2409:432:107:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;12766:74:208;;;2677:17:107;12856:18:208;;;12849:34;;;;2712:4:107;12899:18:208;;;12892:34;2489:11:107;;1671:64;2586:43;;12739:18:208;;2652:67:107;;;-1:-1:-1;;2652:67:107;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:107;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:107;2820:7;:14;;;;;;;;2409:432::o;5630:121:121:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:121;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:121;;;;;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:208:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:208;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:208;;14:681;-1:-1:-1;;;;;;14:681:208:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;-1:-1:-1;;1384:95:208;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:208;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:208;;;;2283:5;-1:-1:-1;;;2311:15:208;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:208;;700:1697;-1:-1:-1;;;;;;;;;700:1697:208:o;2402:250::-;2487:1;2497:113;2511:6;2508:1;2505:13;2497:113;;;2587:11;;;2581:18;2568:11;;;2561:39;2533:2;2526:10;2497:113;;;-1:-1:-1;;2644:1:208;2626:16;;2619:27;2402:250::o;2657:330::-;2699:3;2737:5;2731:12;2764:6;2759:3;2752:19;2780:76;2849:6;2842:4;2837:3;2833:14;2826:4;2819:5;2815:16;2780:76;:::i;:::-;2901:2;2889:15;-1:-1:-1;;2885:88:208;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:208:o;2992:862::-;3154:4;3183:2;3223;3212:9;3208:18;3253:2;3242:9;3235:21;3276:6;3311;3305:13;3342:6;3334;3327:22;3380:2;3369:9;3365:18;3358:25;;3442:2;3432:6;3429:1;3425:14;3414:9;3410:30;3406:39;3392:53;;3480:2;3472:6;3468:15;3501:1;3511:314;3525:6;3522:1;3519:13;3511:314;;;-1:-1:-1;;3602:9:208;3594:6;3590:22;3586:95;3581:3;3574:108;3705:40;3738:6;3729;3723:13;3705:40;:::i;:::-;3695:50;-1:-1:-1;3803:12:208;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:208;;2992:862;-1:-1:-1;;;;;;;2992:862:208:o;4051:184::-;4103:77;4100:1;4093:88;4200:4;4197:1;4190:15;4224:4;4221:1;4214:15;4240:374;-1:-1:-1;;;;;4455:6:208;4451:55;4440:9;4433:74;4543:2;4538;4527:9;4523:18;4516:30;4414:4;4563:45;4604:2;4593:9;4589:18;4581:6;4563:45;:::i;:::-;4555:53;4240:374;-1:-1:-1;;;;4240:374:208:o;5271:437::-;5350:1;5346:12;;;;5393;;;5414:61;;5468:4;5460:6;5456:17;5446:27;;5414:61;5521:2;5513:6;5510:14;5490:18;5487:38;5484:218;;5558:77;5555:1;5548:88;5659:4;5656:1;5649:15;5687:4;5684:1;5677:15;5484:218;;5271:437;;;:::o;6667:357::-;6785:12;;6832:4;6821:16;;;6815:23;;6785:12;6850:16;;6847:171;;;-1:-1:-1;;6924:4:208;6920:17;;;;6917:1;6913:25;6909:98;6898:110;;6667:357;-1:-1:-1;6667:357:208:o;7331:440::-;-1:-1:-1;;;;;7569:6:208;7565:55;7554:9;7547:74;7657:6;7652:2;7641:9;7637:18;7630:34;7700:2;7695;7684:9;7680:18;7673:30;7528:4;7720:45;7761:2;7750:9;7746:18;7738:6;7720:45;:::i;:::-;7712:53;7331:440;-1:-1:-1;;;;;7331:440:208:o;7776:673::-;7851:5;7881:18;7922:2;7914:6;7911:14;7908:40;;;7928:18;;:::i;:::-;8062:2;8056:9;8128:2;8116:15;;-1:-1:-1;;8112:24:208;;;8138:2;8108:33;8104:42;8092:55;;;8162:18;;;8182:22;;;8159:46;8156:72;;;8208:18;;:::i;:::-;8248:10;8244:2;8237:22;8277:6;8268:15;;8307:6;8299;8292:22;8347:3;8338:6;8333:3;8329:16;8326:25;8323:45;;;8364:1;8361;8354:12;8323:45;8377:66;8436:6;8429:4;8421:6;8417:17;8412:3;8377:66;:::i;:::-;;;;7776:673;;;;;:::o;8454:457::-;8533:6;8586:2;8574:9;8565:7;8561:23;8557:32;8554:52;;;8602:1;8599;8592:12;8554:52;8635:9;8629:16;8668:18;8660:6;8657:30;8654:50;;;8700:1;8697;8690:12;8654:50;8723:22;;8776:4;8768:13;;8764:27;-1:-1:-1;8754:55:208;;8805:1;8802;8795:12;8754:55;8828:77;8897:7;8892:2;8886:9;8881:2;8877;8873:11;8828:77;:::i;8916:162::-;-1:-1:-1;;;;;9003:5:208;8999:54;8992:5;8989:65;8979:93;;9068:1;9065;9058:12;9083:267;9161:6;9214:2;9202:9;9193:7;9189:23;9185:32;9182:52;;;9230:1;9227;9220:12;9182:52;9262:9;9256:16;9281:39;9314:5;9281:39;:::i;:::-;9339:5;9083:267;-1:-1:-1;;;9083:267:208:o;9537:184::-;9589:77;9586:1;9579:88;9686:4;9683:1;9676:15;9710:4;9707:1;9700:15;9726:125;9791:9;;;9812:10;;;9809:36;;;9825:18;;:::i;:::-;9726:125;;;;:::o;10188:218::-;10335:2;10324:9;10317:21;10298:4;10355:45;10396:2;10385:9;10381:18;10373:6;10355:45;:::i;11516:430::-;11713:66;11705:6;11701:79;11696:3;11689:92;11671:3;11810:6;11804:13;11826:74;11893:6;11889:1;11884:3;11880:11;11873:4;11865:6;11861:17;11826:74;:::i;:::-;11920:16;;;;11938:1;11916:24;;11516:430;-1:-1:-1;;;11516:430:208:o;11951:287::-;12080:3;12118:6;12112:13;12134:66;12193:6;12188:3;12181:4;12173:6;12169:17;12134:66;:::i;:::-;12216:16;;;;;11951:287;-1:-1:-1;;11951:287:208:o;12243:277::-;12310:6;12363:2;12351:9;12342:7;12338:23;12334:32;12331:52;;;12379:1;12376;12369:12;12331:52;12411:9;12405:16;12464:5;12457:13;12450:21;12443:5;12440:32;12430:60;;12486:1;12483;12476:12;13119:591;13229:6;13282:2;13270:9;13261:7;13257:23;13253:32;13250:52;;;13298:1;13295;13288:12;13250:52;13331:2;13325:9;13373:2;13365:6;13361:15;13442:6;13430:10;13427:22;13406:18;13394:10;13391:34;13388:62;13385:88;;;13453:18;;:::i;:::-;13489:2;13482:22;13526:16;;13551:39;13526:16;13551:39;:::i;:::-;13599:21;;13674:2;13659:18;;;13653:25;13636:15;;;13629:50;;;;-1:-1:-1;13606:6:208;13119:591;-1:-1:-1;13119:591:208:o;13715:521::-;-1:-1:-1;;;;;13989:6:208;13985:55;13974:9;13967:74;14077:6;14072:2;14061:9;14057:18;14050:34;14120:3;14115:2;14104:9;14100:18;14093:31;13948:4;14141:46;14182:3;14171:9;14167:19;14159:6;14141:46;:::i;:::-;14133:54;;14223:6;14218:2;14207:9;14203:18;14196:34;13715:521;;;;;;;:::o;15051:781::-;15101:3;15142:5;15136:12;15171:36;15197:9;15171:36;:::i;:::-;15226:1;15243:17;;;15269:191;;;;15474:1;15469:357;;;;15236:590;;15269:191;15317:66;15306:9;15302:82;15297:3;15290:95;15440:6;15433:14;15426:22;15418:6;15414:35;15409:3;15405:45;15398:52;;15269:191;;15469:357;15500:5;15497:1;15490:16;15529:4;15574;15571:1;15561:18;15601:1;15615:165;15629:6;15626:1;15623:13;15615:165;;;15707:14;;15694:11;;;15687:35;15750:16;;;;15644:10;;15615:165;;;15619:3;;;15809:6;15804:3;15800:16;15793:23;;15236:590;;;;;15051:781;;;;:::o;15837:664::-;16187:66;16182:3;16175:79;16157:3;16273:47;16316:2;16311:3;16307:12;16299:6;16273:47;:::i;:::-;16340:66;16329:78;;16436:31;16431:2;16423:11;;16416:52;16492:2;16484:11;;15837:664;-1:-1:-1;;;15837:664:208:o;17025:694::-;17368:66;17363:3;17356:79;17338:3;17464:6;17458:13;17480:75;17548:6;17543:2;17538:3;17534:12;17527:4;17519:6;17515:17;17480:75;:::i;:::-;17619:66;17614:2;17574:16;;;;17606:11;;;17599:87;-1:-1:-1;17710:2:208;17702:11;;17025:694;-1:-1:-1;17025:694:208:o;17724:543::-;17826:2;17821:3;17818:11;17815:446;;;17862:1;17886:5;17883:1;17876:16;17930:4;17927:1;17917:18;18000:2;17988:10;17984:19;17981:1;17977:27;17971:4;17967:38;18036:4;18024:10;18021:20;18018:47;;;-1:-1:-1;18059:4:208;18018:47;18114:2;18109:3;18105:12;18102:1;18098:20;18092:4;18088:31;18078:41;;18169:82;18187:2;18180:5;18177:13;18169:82;;;18232:17;;;18213:1;18202:13;18169:82;;18503:1464;18629:3;18623:10;18656:18;18648:6;18645:30;18642:56;;;18678:18;;:::i;:::-;18707:97;18797:6;18757:38;18789:4;18783:11;18757:38;:::i;:::-;18751:4;18707:97;:::i;:::-;18859:4;;18916:2;18905:14;;18933:1;18928:782;;;;19754:1;19771:6;19768:89;;;-1:-1:-1;19823:19:208;;;19817:26;19768:89;-1:-1:-1;;18400:1:208;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;19870:81;;18898:1063;;18928:782;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;18964:79:208;;;19141:236;19155:7;19152:1;19149:14;19141:236;;;19244:19;;;19238:26;19223:42;;19336:27;;;;19304:1;19292:14;;;;19171:19;;19141:236;;;19145:3;19405:6;19396:7;19393:19;19390:261;;;19466:19;;;19460:26;-1:-1:-1;;19549:1:208;19545:14;;;19561:3;19541:24;19537:97;19533:102;19518:118;19503:134;;19390:261;-1:-1:-1;;;;;19697:1:208;19681:14;;;19677:22;19664:36;;-1:-1:-1;18503:1464:208:o;19972:128::-;20039:9;;;20060:11;;;20057:37;;;20074:18;;:::i;20459:197::-;20587:3;20612:38;20646:3;20638:6;20612:38;:::i;20661:1554::-;20780:3;20774:4;20771:13;20768:26;;20787:5;;20661:1554::o;20768:26::-;20817:37;20849:3;20843:10;20817:37;:::i;:::-;20877:18;20869:6;20866:30;20863:56;;;20899:18;;:::i;:::-;20928:97;21018:6;20978:38;21010:4;21004:11;20978:38;:::i;20928:97::-;21051:1;21079:2;21071:6;21068:14;21096:1;21091:867;;;;22002:1;22019:6;22016:89;;;-1:-1:-1;22071:19:208;;;22065:26;22016:89;-1:-1:-1;;18400:1:208;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;22118:81;;21061:1148;;21091:867;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;21127:79:208;;;14998:1;14991:14;;;15035:4;15022:18;;21350:9;21372:251;21386:7;21383:1;21380:14;21372:251;;;21468:21;;;21462:28;21447:44;;21518:1;21591:18;;;;21546:15;;;;21409:4;21402:12;21372:251;;;21376:3;21651:6;21642:7;21639:19;21636:263;;;21712:21;;21706:28;-1:-1:-1;;21809:3:208;21797:1;21793:14;;;21789:24;21785:97;21781:102;21766:118;21751:134;;;-1:-1:-1;;21945:1:208;21929:14;;;21925:22;21912:36;;-1:-1:-1;20661:1554:208:o;24622:764::-;25012:14;25007:3;25000:27;24982:3;25056:6;25050:13;25072:75;25140:6;25135:2;25130:3;25126:12;25119:4;25111:6;25107:17;25072:75;:::i;:::-;25211:3;25206:2;25166:16;;;25198:11;;;25191:24;25240:13;;25262:76;25240:13;25324:2;25316:11;;25309:4;25297:17;;25262:76;:::i;:::-;25358:17;25377:2;25354:26;;24622:764;-1:-1:-1;;;;24622:764:208:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCallFromCallboundDelegation()":"e187dc8f","testCallFromSystemDelegation()":"d671f65b","testCallFromTimeboundDelegation()":"89403ab3","testRegisterDelegationRevertInterfaceNotSupported()":"9d4218e6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromCallboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromSystemDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromTimeboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRegisterDelegationRevertInterfaceNotSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/StandardDelegationsModule.t.sol\":\"StandardDelegationsModuleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798\",\"dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55\",\"dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf\",\"dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4\",\"dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b\",\"dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb\",\"dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84\",\"dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1\",\"dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e\",\"dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924\",\"dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67\",\"dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263\",\"dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912\",\"dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6\",\"dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2\",\"dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99\",\"dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a\",\"dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d\",\"dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3\",\"dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210\",\"dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A\"]},\"node_modules/@latticexyz/store/src/StoreHook.sol\":{\"keccak256\":\"0x7774e2176bbb9e259f71c62f41d07e6284fecd2af062a47d3c88a3e9cccb61b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1048129389b95fac80da3edd0f7bbfa18bd51c13531ee650f9c1cbe3433ae8e8\",\"dweb:/ipfs/QmaSaxfGPxmSZHSyuKsrNR1xx3RpLRJh5jykSj94WDBxei\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd\",\"dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff\",\"dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787\",\"dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551\",\"dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea\",\"dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4\",\"dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44\",\"dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2\",\"dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN\"]},\"node_modules/@latticexyz/store/src/rightMask.sol\":{\"keccak256\":\"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38\",\"dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64\",\"dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb\",\"dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4\",\"dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf\",\"dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205\",\"dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed\",\"dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU\"]},\"node_modules/@latticexyz/store/test/EchoSubscriber.sol\":{\"keccak256\":\"0x4fe4e9c11d863342fc19014de491ab28638fb9b5e7a0af143c86b0ab29fd3f84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57d7b059a932a4a411e7a25f95b4d41e3370bfedcf878960c14134fc78ba6eaa\",\"dweb:/ipfs/QmVmfUDyjfX4mLnU4HxkPg79ALfQwXXgfRrQsMCYbCGp7k\"]},\"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol\":{\"keccak256\":\"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3\",\"dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze\"]},\"node_modules/@latticexyz/store/test/RevertSubscriber.sol\":{\"keccak256\":\"0x1df97686c247408971bc08a4b8d36ac804da3b14965eae34a1f192f65eb2e902\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ff2fb2cf1b170d9de43fb6b530d9eba342a2a52720f5ca20d51abbf386c8d28\",\"dweb:/ipfs/QmYhQL9ZKcusiadLG1binasmyh4vjnRWXchniBgJ9iiGXY\"]},\"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol\":{\"keccak256\":\"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5\",\"dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c\",\"dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89\",\"dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6\",\"dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d\",\"dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3\",\"dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd\",\"dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc\",\"dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0x61392feda0588aba0f72be7c44c65d9115604b5f3d61a79a716d2cc78906bb01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cd374cc3c8b05140aa54d712cbd541a51fc7cb4065f7bfc172f64169c1a818a\",\"dweb:/ipfs/QmcsHDhXQFUDB5vf8kES61teypHLuMxNdheat9TN8wY9so\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0x7d478d15961646ee2889e30169e4e4045ed98c92bfa398abda9299179c234ca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6aa9999fb5bed10c89639cbc1caf099971abaa8c481a581038227e6c14210776\",\"dweb:/ipfs/QmdxsLT2cFi9Y7buNBVC1WWeKKjNyNDTrpkuRNwGYSGAFz\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3\",\"dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020\",\"dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9\",\"dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d\",\"dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7\"]},\"node_modules/@latticexyz/world/src/SystemHook.sol\":{\"keccak256\":\"0xe960a82dbc824f1543d1113471040bb1c8d332508d9c362f6c433634dee86737\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8f43c0e555a3e2bfc59376b5af61147c136d718eee871972888630445287da4\",\"dweb:/ipfs/QmcxoLoyuqxFR32rb8CEL5TtsauqvFSFYUnuBmJt2Xrtk6\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0xbdee403ebb8dfa1af0b7834ae616bb99ce65bdbb7086bf46da13e2b4c6718ba6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5287378d13c57585f46693d8a3e7af34f28b13ca07a10462a19d7898ad3ccc1\",\"dweb:/ipfs/QmZyHGiekhTt69AiLSTo4FjQYttCUgm8zeqJMmb8DNNdPF\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0x570da3c73388cb2bcdce4b137968871d89ffe294ba00997029a505060f3a6f0d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b4bf9a472574066e6ebe765a8cbbc4ecff41820b5c72b4e92f92fa7c88d55\",\"dweb:/ipfs/QmXX9AUXdVH1xdDZLD1FS3MNoHmunYL1BYt8Ar9iDwVtTU\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74\",\"dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f\",\"dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4\",\"dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5\",\"dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45\",\"dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6\",\"dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol\":{\"keccak256\":\"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8\",\"dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478\",\"dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458\",\"dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd\",\"dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7\",\"dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol\":{\"keccak256\":\"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69\",\"dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e\",\"dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35\",\"dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e\",\"dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c\",\"dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2\",\"dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c\",\"dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7\",\"dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR\"]},\"node_modules/@latticexyz/world/src/codegen/tables/TransactionContext.sol\":{\"keccak256\":\"0xbf501d3d05958c923bb4cb8ca11d5d7c0fba898eda1235bbb1bea95e8f77ed9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb206c972ff952de239ace637c9ead2e069035d1676ea18690289572d8663d1\",\"dweb:/ipfs/QmYRENaiEAexz1xEy9YoX2Xj7nAdr29g7dEsbshK3VoXNE\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571\",\"dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/modules/init/InitModule.sol\":{\"keccak256\":\"0xe3e58555b9115b44ac97d5261ec3ce5d37cbe0b96d7b254d95e4bc31ff9f95bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f4b8ccca3ee2707941e262a3c5a1dd245b5506e91fd734df37ccd8657e15691\",\"dweb:/ipfs/QmPaB918Y9zphf6NbLuBge5u3zgPKTTQdhD1yFavnwaLcu\"]},\"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol\":{\"keccak256\":\"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6\",\"dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc\"]},\"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol\":{\"keccak256\":\"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c\",\"dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9\"]},\"node_modules/@latticexyz/world/src/modules/init/constants.sol\":{\"keccak256\":\"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752\",\"dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8\",\"dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c\",\"dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160\",\"dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216\",\"dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7\",\"dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535\",\"dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw\"]},\"node_modules/@latticexyz/world/src/modules/init/types.sol\":{\"keccak256\":\"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411\",\"dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658\",\"dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C\"]},\"node_modules/@latticexyz/world/src/requireNamespace.sol\":{\"keccak256\":\"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6\",\"dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi\"]},\"node_modules/@latticexyz/world/src/requireValidNamespace.sol\":{\"keccak256\":\"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027\",\"dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8\",\"dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d\",\"dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e\",\"dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d\",\"dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12\"]},\"node_modules/@latticexyz/world/test/DelegationControlMock.sol\":{\"keccak256\":\"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d\",\"dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf\"]},\"node_modules/@latticexyz/world/test/World.t.sol\":{\"keccak256\":\"0x9741435a6d4b2ab65cb16b0ff1e46179012d51f33ec292188224f243c5918414\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://002db4ebf5ee5f69626d5905e22b192c41f8723774e3e7385d00ec7c3102d891\",\"dweb:/ipfs/QmbRRJpeWo528Nve5FyHE2jcCSjrgg1juTgnZFB55GyPk9\"]},\"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol\":{\"keccak256\":\"0x6a980c5814c0b4f581ac686a9957a4ee4aeebf944fbb7f3bcd747aa46e6711f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ca863d25e983ca61e718d22fa1118c41bb82237fe8c7ef715378a84da8f239\",\"dweb:/ipfs/QmWEELBroj9fSPvkpT8DJ6JeeYSNcAqTyTsv37pqrArQfc\"]},\"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol\":{\"keccak256\":\"0xfacef9348a1b8a406863449a5575ca653d9ee4c3b145349864c987fa7134de8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://434dd592d088cc53df20ac637bd46d49facd071c661a68727e99a0ee4151eeaf\",\"dweb:/ipfs/QmaSLkwAAnWVwZzp4FntXo4N2qgxXtLNVeFU4fewTQ3wZe\"]},\"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol\":{\"keccak256\":\"0x3bb0aed7826ecbd8083d2694422c16922dcb5c0460ec5c6e26f2f8c091071136\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bd053f250292932423222426fb129931a7192d5b2cb294044098a23f0e7603\",\"dweb:/ipfs/QmduMJzo59L6biSEestyzzHUVEzj3cohA14rDNuMWr8ehX\"]},\"node_modules/@latticexyz/world/test/createInitModule.sol\":{\"keccak256\":\"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc\",\"dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa\"]},\"node_modules/@latticexyz/world/test/createWorld.sol\":{\"keccak256\":\"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4\",\"dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/modules/std-delegations/CallboundDelegationControl.sol\":{\"keccak256\":\"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44\",\"dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF\"]},\"src/modules/std-delegations/StandardDelegationsModule.sol\":{\"keccak256\":\"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67\",\"dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK\"]},\"src/modules/std-delegations/SystemboundDelegationControl.sol\":{\"keccak256\":\"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815\",\"dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq\"]},\"src/modules/std-delegations/TimeboundDelegationControl.sol\":{\"keccak256\":\"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb\",\"dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb\"]},\"src/modules/std-delegations/constants.sol\":{\"keccak256\":\"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b\",\"dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC\"]},\"src/modules/std-delegations/tables/CallboundDelegations.sol\":{\"keccak256\":\"0xff415bd15a84962a2e56a0768b554f3afca9a1e53539f2d34255e7cfa2e7fa22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a1fdadc45e7950047ae325a98345ea821e97eb52500934a026fd3ae8ea83a1f\",\"dweb:/ipfs/QmWxjjvpSpkU2zJu4Z5HFYjwXnZATDWeJEwQeE43LxtZSb\"]},\"src/modules/std-delegations/tables/SystemboundDelegations.sol\":{\"keccak256\":\"0xf4b5beed9f89b55c448245a14bccae045705036e83229964162617ec610e8529\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56d22e0cae215d83dffd1a355910c66cb291bf0ac8efc4af19174c678fe4b643\",\"dweb:/ipfs/QmSUdSn7sMN1gutnEwkcffkfGq4iurL3R9g3FzbUNiaXZg\"]},\"src/modules/std-delegations/tables/TimeboundDelegations.sol\":{\"keccak256\":\"0xe7136185cac83d57113c5500a7ec74d523357d24623c493fe8c6ec9c00d61d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://deffe13dd00f4c6b021d94d67209eb8f303e3fe496cfd85e6da1cef171b05cc6\",\"dweb:/ipfs/QmaJ3iV1nFcojWJF6Wxe4BBhf7AHpe6EesBjFLTsHvnTZh\"]},\"test/StandardDelegationsModule.t.sol\":{\"keccak256\":\"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812\",\"dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromCallboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromSystemDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromTimeboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/StandardDelegationsModule.t.sol":"StandardDelegationsModuleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd","urls":["bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798","dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd","urls":["bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55","dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728","urls":["bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf","dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09","urls":["bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4","dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3","urls":["bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b","dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec","urls":["bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb","dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79","urls":["bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84","dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f","urls":["bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1","dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99","urls":["bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e","dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449","urls":["bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924","dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167","urls":["bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67","dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc","urls":["bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263","dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d","urls":["bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912","dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e","urls":["bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6","dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18","urls":["bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2","dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8","urls":["bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99","dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5","urls":["bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a","dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f","urls":["bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d","dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20","urls":["bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3","dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd","urls":["bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210","dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreHook.sol":{"keccak256":"0x7774e2176bbb9e259f71c62f41d07e6284fecd2af062a47d3c88a3e9cccb61b1","urls":["bzz-raw://1048129389b95fac80da3edd0f7bbfa18bd51c13531ee650f9c1cbe3433ae8e8","dweb:/ipfs/QmaSaxfGPxmSZHSyuKsrNR1xx3RpLRJh5jykSj94WDBxei"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28","urls":["bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd","dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9","urls":["bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff","dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c","urls":["bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787","dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7","urls":["bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551","dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763","urls":["bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea","dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b","urls":["bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4","dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270","urls":["bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44","dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50","urls":["bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2","dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN"],"license":"MIT"},"node_modules/@latticexyz/store/src/rightMask.sol":{"keccak256":"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410","urls":["bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38","dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305","urls":["bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64","dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554","urls":["bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb","dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7","urls":["bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4","dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29","urls":["bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf","dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a","urls":["bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205","dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61","urls":["bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed","dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU"],"license":"MIT"},"node_modules/@latticexyz/store/test/EchoSubscriber.sol":{"keccak256":"0x4fe4e9c11d863342fc19014de491ab28638fb9b5e7a0af143c86b0ab29fd3f84","urls":["bzz-raw://57d7b059a932a4a411e7a25f95b4d41e3370bfedcf878960c14134fc78ba6eaa","dweb:/ipfs/QmVmfUDyjfX4mLnU4HxkPg79ALfQwXXgfRrQsMCYbCGp7k"],"license":"MIT"},"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol":{"keccak256":"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd","urls":["bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3","dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze"],"license":"MIT"},"node_modules/@latticexyz/store/test/RevertSubscriber.sol":{"keccak256":"0x1df97686c247408971bc08a4b8d36ac804da3b14965eae34a1f192f65eb2e902","urls":["bzz-raw://6ff2fb2cf1b170d9de43fb6b530d9eba342a2a52720f5ca20d51abbf386c8d28","dweb:/ipfs/QmYhQL9ZKcusiadLG1binasmyh4vjnRWXchniBgJ9iiGXY"],"license":"MIT"},"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol":{"keccak256":"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02","urls":["bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5","dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439","urls":["bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c","dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a","urls":["bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89","dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3","urls":["bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6","dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e","urls":["bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d","dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695","urls":["bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3","dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909","urls":["bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd","dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc","urls":["bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc","dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0x61392feda0588aba0f72be7c44c65d9115604b5f3d61a79a716d2cc78906bb01","urls":["bzz-raw://7cd374cc3c8b05140aa54d712cbd541a51fc7cb4065f7bfc172f64169c1a818a","dweb:/ipfs/QmcsHDhXQFUDB5vf8kES61teypHLuMxNdheat9TN8wY9so"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0x7d478d15961646ee2889e30169e4e4045ed98c92bfa398abda9299179c234ca6","urls":["bzz-raw://6aa9999fb5bed10c89639cbc1caf099971abaa8c481a581038227e6c14210776","dweb:/ipfs/QmdxsLT2cFi9Y7buNBVC1WWeKKjNyNDTrpkuRNwGYSGAFz"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635","urls":["bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3","dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd","urls":["bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020","dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3","urls":["bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9","dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2","urls":["bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d","dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemHook.sol":{"keccak256":"0xe960a82dbc824f1543d1113471040bb1c8d332508d9c362f6c433634dee86737","urls":["bzz-raw://c8f43c0e555a3e2bfc59376b5af61147c136d718eee871972888630445287da4","dweb:/ipfs/QmcxoLoyuqxFR32rb8CEL5TtsauqvFSFYUnuBmJt2Xrtk6"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0xbdee403ebb8dfa1af0b7834ae616bb99ce65bdbb7086bf46da13e2b4c6718ba6","urls":["bzz-raw://f5287378d13c57585f46693d8a3e7af34f28b13ca07a10462a19d7898ad3ccc1","dweb:/ipfs/QmZyHGiekhTt69AiLSTo4FjQYttCUgm8zeqJMmb8DNNdPF"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0x570da3c73388cb2bcdce4b137968871d89ffe294ba00997029a505060f3a6f0d","urls":["bzz-raw://840b4bf9a472574066e6ebe765a8cbbc4ecff41820b5c72b4e92f92fa7c88d55","dweb:/ipfs/QmXX9AUXdVH1xdDZLD1FS3MNoHmunYL1BYt8Ar9iDwVtTU"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd","urls":["bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74","dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d","urls":["bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f","dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4","urls":["bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4","dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a","urls":["bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5","dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b","urls":["bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45","dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4","urls":["bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6","dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol":{"keccak256":"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772","urls":["bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8","dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c","urls":["bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478","dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f","urls":["bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458","dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8","urls":["bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd","dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b","urls":["bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7","dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol":{"keccak256":"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395","urls":["bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69","dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc","urls":["bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e","dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf","urls":["bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35","dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd","urls":["bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e","dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568","urls":["bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c","dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68","urls":["bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2","dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194","urls":["bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c","dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21","urls":["bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7","dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/TransactionContext.sol":{"keccak256":"0xbf501d3d05958c923bb4cb8ca11d5d7c0fba898eda1235bbb1bea95e8f77ed9b","urls":["bzz-raw://ceb206c972ff952de239ace637c9ead2e069035d1676ea18690289572d8663d1","dweb:/ipfs/QmYRENaiEAexz1xEy9YoX2Xj7nAdr29g7dEsbshK3VoXNE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51","urls":["bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571","dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/InitModule.sol":{"keccak256":"0xe3e58555b9115b44ac97d5261ec3ce5d37cbe0b96d7b254d95e4bc31ff9f95bb","urls":["bzz-raw://1f4b8ccca3ee2707941e262a3c5a1dd245b5506e91fd734df37ccd8657e15691","dweb:/ipfs/QmPaB918Y9zphf6NbLuBge5u3zgPKTTQdhD1yFavnwaLcu"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol":{"keccak256":"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa","urls":["bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6","dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol":{"keccak256":"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9","urls":["bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c","dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/constants.sol":{"keccak256":"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9","urls":["bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752","dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol":{"keccak256":"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2","urls":["bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8","dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol":{"keccak256":"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b","urls":["bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c","dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol":{"keccak256":"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7","urls":["bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160","dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93","urls":["bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216","dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol":{"keccak256":"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f","urls":["bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7","dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e","urls":["bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535","dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/types.sol":{"keccak256":"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3","urls":["bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411","dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730","urls":["bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658","dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireNamespace.sol":{"keccak256":"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1","urls":["bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6","dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireValidNamespace.sol":{"keccak256":"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc","urls":["bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027","dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a","urls":["bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8","dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145","urls":["bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d","dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be","urls":["bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e","dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed","urls":["bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d","dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12"],"license":"MIT"},"node_modules/@latticexyz/world/test/DelegationControlMock.sol":{"keccak256":"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e","urls":["bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d","dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf"],"license":"MIT"},"node_modules/@latticexyz/world/test/World.t.sol":{"keccak256":"0x9741435a6d4b2ab65cb16b0ff1e46179012d51f33ec292188224f243c5918414","urls":["bzz-raw://002db4ebf5ee5f69626d5905e22b192c41f8723774e3e7385d00ec7c3102d891","dweb:/ipfs/QmbRRJpeWo528Nve5FyHE2jcCSjrgg1juTgnZFB55GyPk9"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol":{"keccak256":"0x6a980c5814c0b4f581ac686a9957a4ee4aeebf944fbb7f3bcd747aa46e6711f6","urls":["bzz-raw://75ca863d25e983ca61e718d22fa1118c41bb82237fe8c7ef715378a84da8f239","dweb:/ipfs/QmWEELBroj9fSPvkpT8DJ6JeeYSNcAqTyTsv37pqrArQfc"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol":{"keccak256":"0xfacef9348a1b8a406863449a5575ca653d9ee4c3b145349864c987fa7134de8c","urls":["bzz-raw://434dd592d088cc53df20ac637bd46d49facd071c661a68727e99a0ee4151eeaf","dweb:/ipfs/QmaSLkwAAnWVwZzp4FntXo4N2qgxXtLNVeFU4fewTQ3wZe"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol":{"keccak256":"0x3bb0aed7826ecbd8083d2694422c16922dcb5c0460ec5c6e26f2f8c091071136","urls":["bzz-raw://99bd053f250292932423222426fb129931a7192d5b2cb294044098a23f0e7603","dweb:/ipfs/QmduMJzo59L6biSEestyzzHUVEzj3cohA14rDNuMWr8ehX"],"license":"MIT"},"node_modules/@latticexyz/world/test/createInitModule.sol":{"keccak256":"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383","urls":["bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc","dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa"],"license":"MIT"},"node_modules/@latticexyz/world/test/createWorld.sol":{"keccak256":"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196","urls":["bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4","dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/modules/std-delegations/CallboundDelegationControl.sol":{"keccak256":"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202","urls":["bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44","dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF"],"license":"MIT"},"src/modules/std-delegations/StandardDelegationsModule.sol":{"keccak256":"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75","urls":["bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67","dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK"],"license":"MIT"},"src/modules/std-delegations/SystemboundDelegationControl.sol":{"keccak256":"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad","urls":["bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815","dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq"],"license":"MIT"},"src/modules/std-delegations/TimeboundDelegationControl.sol":{"keccak256":"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093","urls":["bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb","dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb"],"license":"MIT"},"src/modules/std-delegations/constants.sol":{"keccak256":"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d","urls":["bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b","dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC"],"license":"MIT"},"src/modules/std-delegations/tables/CallboundDelegations.sol":{"keccak256":"0xff415bd15a84962a2e56a0768b554f3afca9a1e53539f2d34255e7cfa2e7fa22","urls":["bzz-raw://3a1fdadc45e7950047ae325a98345ea821e97eb52500934a026fd3ae8ea83a1f","dweb:/ipfs/QmWxjjvpSpkU2zJu4Z5HFYjwXnZATDWeJEwQeE43LxtZSb"],"license":"MIT"},"src/modules/std-delegations/tables/SystemboundDelegations.sol":{"keccak256":"0xf4b5beed9f89b55c448245a14bccae045705036e83229964162617ec610e8529","urls":["bzz-raw://56d22e0cae215d83dffd1a355910c66cb291bf0ac8efc4af19174c678fe4b643","dweb:/ipfs/QmSUdSn7sMN1gutnEwkcffkfGq4iurL3R9g3FzbUNiaXZg"],"license":"MIT"},"src/modules/std-delegations/tables/TimeboundDelegations.sol":{"keccak256":"0xe7136185cac83d57113c5500a7ec74d523357d24623c493fe8c6ec9c00d61d3e","urls":["bzz-raw://deffe13dd00f4c6b021d94d67209eb8f303e3fe496cfd85e6da1cef171b05cc6","dweb:/ipfs/QmaJ3iV1nFcojWJF6Wxe4BBhf7AHpe6EesBjFLTsHvnTZh"],"license":"MIT"},"test/StandardDelegationsModule.t.sol":{"keccak256":"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a","urls":["bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812","dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN"],"license":"MIT"}},"version":1},"id":204}
1
+ {"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testCallFromCallboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromSystemDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromTimeboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556200005061737960f01b686e616d65737061636560b81b697465737453797374656d60b01b62000089565b602055602180546001600160a01b03199081166001179091556022805490911660021790553480156200008257600080fd5b50620000f6565b60006200009960706010620000ce565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b80820180821115620000f057634e487b7160e01b600052601160045260246000fd5b92915050565b6201f6e680620001076000396000f3fe60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a696040518060600160405280602881526020016201f6886028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f6040518060600160405280602181526020016201f63f6021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a81526020016201f6b0602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd96040518060600160405280602881526020016201f6606028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b617292806200376083390190565b611668806200a9f283390190565b61028c806200c05a83390190565b61535f806200c2e683390190565b611c68806201164583390190565b61178f80620132ad83390190565b610b388062014a3c83390190565b6157fb806201557483390190565b6148d0806201ad6f83390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b6119f38062002c7e83390190565b61192d806200467183390190565b6112f48062005f9e83390190565b60805160a05160c05160e051612b596200012560003960006106130152600061049101526000610310015260005050612b596000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004612628565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004612680565b610203565b005b604051601f193601358152602001610096565b6100df610102366004612680565b610235565b6100a76106e9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe6106f3565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061023f6106e9565b9050610249610725565b6102516107c0565b61025961084c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526102ee90612731565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161038c9250612779565b600060405180830381855af49150503d80600081146103c7576040519150601f19603f3d011682016040523d82523d6000602084013e6103cc565b606091505b5091509150816103df576103df816108e0565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261046f90612731565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161050d9250612779565b600060405180830381855af49150503d8060008114610548576040519150601f19603f3d011682016040523d82523d6000602084013e61054d565b606091505b5090925090508161056157610561816108e0565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105f190612731565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161068f9250612779565b600060405180830381855af49150503d80600081146106ca576040519150601f19603f3d011682016040523d82523d6000602084013e6106cf565b606091505b509092509050816106e3576106e3816108e0565b50505050565b60006101fe6108e8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107225750335b90565b6107be7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e200100200000000000000000000000000000000000000000000000000000007e68040061615f5f0000000000000000000000000000000000000000000000007e2001001f0000000000000000000000000000000000000000000000000000006107b16108f2565b6107b9610a74565b610aeb565b565b6107be7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000007e48030061615f000000000000000000000000000000000000000000000000007e2001001f0000000000000000000000000000000000000000000000000000006107b1610bbf565b6107be7f7462000000000000000000000000000054696d65626f756e6444656c656761747e200100200000000000000000000000000000000000000000000000000000007e280200616100000000000000000000000000000000000000000000000000007e2001001f0000000000000000000000000000000000000000000000000000006108d8610cdf565b6107b9610da9565b805160208201fd5b60006101fe610e20565b60408051600480825260a08201909252606091816020015b606081526020019060019003908161090a5790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061096a5761096a612795565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106109be576109be612795565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610a1257610a12612795565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610a6657610a66612795565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610a8b5790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610a6657610a66612795565b6000610af5610e20565b90503073ffffffffffffffffffffffffffffffffffffffff821603610b2757610b22878787878787610e6c565b610bb6565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610b83908a908a908a908a908a908a90600401612831565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050505b50505050505050565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610bd75790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610c3757610c37612795565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610c8b57610c8b612795565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610a6657610a66612795565b6040805160028082526060828101909352816020015b6060815260200190600190039081610cf55790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610d5557610d55612795565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610a6657610a66612795565b604080516001808252818301909252606091816020015b6060815260200190600190039081610dc05790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610a6657610a66612795565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e67573391505090565b919050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614801590610f0057507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610f85577f74620000000000000000000000000000000000000000000000000000000000008687604051602001610f3a91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610f7c93929160040161287b565b60405180910390fd5b610f8e8561130e565b610f99846001611555565b610fa4836000611555565b60e084901c60e885901c0160ff168251146110045760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b60e085901c60e886901c0160ff168151146110645760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110dc5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b6110e5856116f1565b6110ee846116f1565b14611140576110fc856116f1565b611105846116f1565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b61114985611723565b61115284611723565b146111a45761116085611723565b61116984611723565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b60005b6111b0866116f1565b81101561124b576111da6111c48583611740565b60c58111156111d5576111d56128bc565b611768565b6008601b8390030287901c60ff1614611243576008601b8290030286901c60ff166112086111c48684611740565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b6001016111a7565b50611255866117c8565b156112af57858660405160200161126e91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610f7c92916004016128d2565b6112fb86868686866040516020016112c791906128eb565b604051602081830303815290604052866040516020016112e791906128eb565b60405160208183030381529060405261186d565b611306866001611950565b505050505050565b80611345576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061135082611723565b90506005811115611397576040517f6793df620000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610f7c565b60006113a2836116f1565b905060006113b08383612914565b9050601c8111156113f7576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610f7c565b6000805b838110156114a25760ff601b82900360080287901c16600081900361144f576040517f53b2dd0500000000000000000000000000000000000000000000000000000000815260048101839052602401610f7c565b602081111561148d576040517f7237f23700000000000000000000000000000000000000000000000000000000815260048101839052602401610f7c565b6114978184612914565b9250506001016113fb565b506114ac85611a0e565b81146114f8576114bb85611a0e565b6040517feba964de000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610f7c565b825b601c8110156113065760ff601b82900360080287901c16801561154c576040517f1d8d44db00000000000000000000000000000000000000000000000000000000815260048101839052602401610f7c565b506001016114fa565b80158015611561575081155b156115825760405163d498615960e01b815260006004820152602401610f7c565b600061158d83611723565b905060058111156115b45760405163d498615960e01b815260048101829052602401610f7c565b60006115bf846116f1565b905060006115cd8383612914565b9050601c8111156115f45760405163d498615960e01b815260048101829052602401610f7c565b6000805b8381101561166057600061160f6111c48984611740565b90508060000361164b576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116558184612914565b9250506001016115f8565b5061166a86611a0e565b81146116955761167986611a0e565b60405163d498615960e01b8152600401610f7c91815260200190565b825b82811015610bb65760006116ae6111c48984611740565b905080156116e8576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611697565b60006008600161170360026020612927565b61170d9190612927565b611717919061293a565b8260ff911c1692915050565b6000600860018061173660026020612927565b6117039190612927565b6000601b8290036008028360ff911c1660c5811115611761576117616128bc565b9392505050565b6000808260c581111561177d5761177d6128bc565b60ff169050606181101561179757601f1660010192915050565b60618360c58111156117ab576117ab6128bc565b036117b95750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061180157611801612795565b602090810291909101015260006118597f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611a31565b90506118658160f81c90565b949350505050565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006118a48484611a67565b905060006118b28585611a84565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106118ec576118ec612795565b60209081029190910101526119447f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611ab0565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061198657611986612795565b602002602001018181525050611a097f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119d491151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611de9565b505050565b60006008611a1e60026020612927565b611a28919061293a565b9190911c919050565b6000611a5e611a408686611e05565b60ff858116601b0360080285901c16611a598587611e5b565b611e94565b95945050505050565b8151815160009181810160389190911b1760609190911b17611761565b60608282604051602001611a99929190612951565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611b3c57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b2f94939291906129bc565b60405180910390a2611306565b6000611b4787611ee5565b905060005b8151811015611c20576000828281518110611b6957611b69612795565b60200260200101519050611b956001826affffffffffffffffffffff1916611f6e90919063ffffffff16565b15611c17576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611be4908c908c908c908c908c908c90600401612a06565b600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b505050505b50600101611b4c565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611c5794939291906129bc565b60405180910390a26000611c6b8888611e05565b90506000602087019050611c83826000895184611f8c565b6000611c8e85611723565b1115611d12576000611ca08a8a61204b565b878155905060208601915060008060005b611cba88611723565b8160ff161015611d0d57611ccf8d8d836120a1565b9250611cea8a8260ff166028026038011c64ffffffffff1690565b9150611cf98360008488611f8c565b611d038286612914565b9450600101611cb1565b505050505b60005b8351811015611944576000848281518110611d3257611d32612795565b60200260200101519050611d5e6002826affffffffffffffffffffff1916611f6e90919063ffffffff16565b15611de0576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611dad908e908e908e908e908e908e90600401612a06565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b505050505b50600101611d15565b611dfe8585611df88487611e5b565b85612121565b5050505050565b60008282604051602001611e1a929190612a5f565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611e8c57611e8260ff601b83900360080287901c1683612914565b9150600101611e60565b509392505050565b600060208210611eba57602082048401935060208281611eb657611eb6612a9b565b0691505b508254600882021b602082900380841115611e8c576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611f1f57611f1f612795565b60209081029190910101526000611f577f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836123bc565b9050611865611f6982600084516123f6565b612484565b60008160ff1682611f7f8560581c90565b1660ff1614905092915050565b82156120065760208310611fb657602083048401935060208381611fb257611fb2612a9b565b0692505b82156120065760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611ff75750506106e3565b50600194909401939182900391015b5b602082106120285780518455600190930192601f1990910190602001612007565b81156106e3576000600019600884021c8554835182191691161785555050505050565b60008282604051602001612060929190612a5f565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016120b6929190612a5f565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121ab57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219e93929190612ab1565b60405180910390a26106e3565b60006121b78585611e05565b905060006121c486611ee5565b905060005b81518110156122995760008282815181106121e6576121e6612795565b602002602001015190506122126004826affffffffffffffffffffff1916611f6e90919063ffffffff16565b15612290576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061225d908b908b908b908b90600401612aee565b600060405180830381600087803b15801561227757600080fd5b505af115801561228b573d6000803e3d6000fd5b505050505b506001016121c9565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122ce93929190612ab1565b60405180910390a26122e9828565ffffffffffff1685612495565b60005b8151811015610bb657600082828151811061230957612309612795565b602002602001015190506123356008826affffffffffffffffffffff1916611f6e90919063ffffffff16565b156123b3576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612380908b908b908b908b90600401612aee565b600060405180830381600087803b15801561239a57600080fd5b505af11580156123ae573d6000803e3d6000fd5b505050505b506001016122ec565b60606118656123cc8585856120a1565b60006123f1856123dc89896124ab565b9060ff166028026038011c64ffffffffff1690565b6124be565b6000818311806124065750835182115b15612443578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610f7c93929190612b27565b602084016124518482612914565b9050600061245f8585612927565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061176183601560006124e1565b611a09838383516124a68560200190565b611f8c565b60006117616124ba848461204b565b5490565b60405160208101601f19603f8484010116604052828252611e8c8585858461255c565b606060006124ef8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161251557612515612a9b565b04905060405193506020840160208202810160405281855260005b82811015612550578451871c825293870193602090910190600101612530565b50505050509392505050565b82156125e357602083106125865760208304840193506020838161258257612582612a9b565b0692505b82156125e35760208390036000818410156125a95750600019600884021c6125b3565b50600019600882021c5b8554600886021b8184511682198216178452508184116125d45750506106e3565b50600194909401939182900391015b5b602082106126055783548152600190930192601f19909101906020016125e4565b81156106e3576000600019600884021c8251865482191691161782525050505050565b60006020828403121561263a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461176157600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561269257600080fd5b813567ffffffffffffffff808211156126aa57600080fd5b818401915084601f8301126126be57600080fd5b8135818111156126d0576126d061266a565b604051601f8201601f19908116603f011681019083821181831017156126f8576126f861266a565b8160405282815287602084870101111561271157600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156117c25760001960209190910360031b1b16919050565b60005b83811015612770578181015183820152602001612758565b50506000910152565b6000825161278b818460208701612755565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600081518084526127c3816020860160208601612755565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561282457601f198684030189526128128383516127ab565b988401989250908301906001016127f6565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061285c60c08301856127d7565b82810360a084015261286e81856127d7565b9998505050505050505050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611a5e60608301846127ab565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061186560408301846127ab565b60208152600061176160208301846127d7565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6128fe565b818103818111156101ee576101ee6128fe565b80820281158282048414176101ee576101ee6128fe565b60008351612963818460208801612755565b835190830190612977818360208801612755565b01949350505050565b60008151808452602080850194506020840160005b838110156129b157815187529582019590820190600101612995565b509495945050505050565b6080815260006129cf6080830187612980565b82810360208401526129e181876127ab565b905084604084015282810360608401526129fb81856127ab565b979650505050505050565b86815260c060208201526000612a1f60c0830188612980565b8281036040840152612a3181886127ab565b90508560608401528281036080840152612a4b81866127ab565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612a8e57815184529284019290840190600101612a72565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612ac46060830186612980565b65ffffffffffff851660208401528281036040840152612ae481856127ab565b9695505050505050565b848152608060208201526000612b076080830186612980565b65ffffffffffff8516604084015282810360608401526129fb81856127ab565b606081526000612b3a60608301866127ab565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506119d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a61008536600461152b565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611627565b6101f6565b6100e56100e036600461167e565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b87856103dc565b600192505050610261565b801561025a5760001901610231866102526101e7565b8785856104c7565b6000925050505b9392505050565b6102836102736101e7565b85858580519060200120856104c7565b50505050565b60006101f16105fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376116dd565b6020026020010181815250508381600281518110610357576103576116dd565b6020026020010181815250508281600381518110610377576103776116dd565b602090810291909101015260006103cf7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610606565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061041f5761041f6116dd565b602002602001018181525050836001600160a01b031660001b8160018151811061044b5761044b6116dd565b602002602001018181525050828160028151811061046b5761046b6116dd565b602002602001018181525050818160038151811061048b5761048b6116dd565b60209081029190910101526104c07f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106c3565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061050a5761050a6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610536576105366116dd565b6020026020010181815250508381600281518110610556576105566116dd565b6020026020010181815250508281600381518110610576576105766116dd565b6020026020010181815250506105f47f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105bf91815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061076c565b505050505050565b60006101f1610821565b600080610611610821565b9050306001600160a01b038216036106375761062f86868686610860565b9150506103d4565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061068290899089908990899060040161172f565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061175e565b60006106cd610821565b9050306001600160a01b038216036106ee576106e98383610896565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906107359086908690600401611777565b600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050505050565b6000610776610821565b9050306001600160a01b0382160361079a5761079586868686866108ad565b6105f4565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906107e790899089908990899089906004016117d6565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061085b573391505090565b919050565b600061088d61086f86866108c2565b60ff858116601b0360080285901c166108888587610918565b610951565b95945050505050565b6108a982826108a4856109a2565b610a27565b5050565b6104c085856108bc8487610918565b85610d26565b600082826040516020016108d792919061181d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109495761093f60ff601b83900360080287901c168361186f565b915060010161091d565b509392505050565b6000602082106109775760208204840193506020828161097357610973611882565b0691505b508254600882021b602082900380841115610949576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016109f157507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1610a1e7f746273746f72650000000000000000005461626c65730000000000000000000084610fc1565b60206000610951565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610aad57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610aa09190611898565b60405180910390a2505050565b6000610ab884610fdd565b905060005b8151811015610b8b576000828281518110610ada57610ada6116dd565b60200260200101519050610b066040826affffffffffffffffffffff191661106690919063ffffffff16565b15610b82576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b4f908990899089906004016118ab565b600060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050505b50600101610abd565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bbc9190611898565b60405180910390a26000610bd085856108c2565b9050610c29816000610be186611084565b67ffffffffffffffff811115610bf957610bf9611584565b6040519080825280601f01601f191660200182016040528015610c23576020820181803683370190505b506110a7565b6000610c34846110bd565b1115610c55576000610c4686866110fa565b9050610c53816020611150565b505b60005b82518110156105f4576000838281518110610c7557610c756116dd565b60200260200101519050610ca16080826affffffffffffffffffffff191661106690919063ffffffff16565b15610d1d576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610cea908a908a908a906004016118ab565b600060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050505b50600101610c58565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610db057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610da3939291906118d4565b60405180910390a2610283565b6000610dbc85856108c2565b90506000610dc986610fdd565b905060005b8151811015610e9e576000828281518110610deb57610deb6116dd565b60200260200101519050610e176004826affffffffffffffffffffff191661106690919063ffffffff16565b15610e95576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e62908b908b908b908b90600401611911565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505050505b50600101610dce565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610ed3939291906118d4565b60405180910390a2610eee828565ffffffffffff16856110a7565b60005b8151811015610763576000828281518110610f0e57610f0e6116dd565b60200260200101519050610f3a6008826affffffffffffffffffffff191661106690919063ffffffff16565b15610fb8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f85908b908b908b908b90600401611911565b600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b505050505b50600101610ef1565b60408051602081018490529081018290526000906060016108d7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611017576110176116dd565b6020908102919091010152600061104f7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361118d565b90506103d461106182600084516111c7565b61125e565b60008160ff16826110778560581c90565b1660ff1614905092915050565b6000600861109460026020611955565b61109e9190611968565b9190911c919050565b6106e9838383516110b88560200190565b61126f565b600060086001806110d060026020611955565b6110da9190611955565b6110e49190611955565b6110ee9190611968565b8260ff911c1692915050565b6000828260405160200161110f92919061181d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061115f83601f61186f565b611169919061197f565b611173908461186f565b90505b808310156106e95760008355600183019250611176565b60606103d461119d85858561132e565b60006111c2856111ad89896113ae565b9060ff166028026038011c64ffffffffff1690565b6113c1565b6000818311806111d75750835182115b1561121d578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401611214939291906119a1565b60405180910390fd5b6020840161122b848261186f565b905060006112398585611955565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006113e4565b82156112e957602083106112995760208304840193506020838161129557611295611882565b0692505b82156112e95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112da575050610283565b50600194909401939182900391015b5b6020821061130b5780518455600190930192601f19909101906020016112ea565b8115610283576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161134392919061181d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102616113bd84846110fa565b5490565b60405160208101601f19603f84840101166040528282526109498585858461145f565b606060006113f28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161141857611418611882565b04905060405193506020840160208202810160405281855260005b82811015611453578451871c825293870193602090910190600101611433565b50505050509392505050565b82156114e657602083106114895760208304840193506020838161148557611485611882565b0692505b82156114e65760208390036000818410156114ac5750600019600884021c6114b6565b50600019600882021c5b8554600886021b8184511682198216178452508184116114d7575050610283565b50600194909401939182900391015b5b602082106115085783548152600190930192601f19909101906020016114e7565b8115610283576000600019600884021c8251865482191691161782525050505050565b60006020828403121561153d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b038116811461085b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115ab57600080fd5b813567ffffffffffffffff808211156115c6576115c6611584565b604051601f8301601f19908116603f011681019082821181831017156115ee576115ee611584565b8160405283815286602085880101111561160757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561163c57600080fd5b6116458461156d565b925060208401359150604084013567ffffffffffffffff81111561166857600080fd5b6116748682870161159a565b9150509250925092565b6000806000806080858703121561169457600080fd5b61169d8561156d565b935060208501359250604085013567ffffffffffffffff8111156116c057600080fd5b6116cc8782880161159a565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561172457815187529582019590820190600101611708565b509495945050505050565b84815260806020820152600061174860808301866116f3565b60ff949094166040830152506060015292915050565b60006020828403121561177057600080fd5b5051919050565b8281526040602082015260006103d460408301846116f3565b6000815180845260005b818110156117b65760208185018101518683018201520161179a565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117ef60a08301876116f3565b60ff86166040840152828103606084015261180a8186611790565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561184c57815184529284019290840190600101611830565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611859565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846116f3565b8381526060602082015260006118c460608301856116f3565b9050826040830152949350505050565b6060815260006118e760608301866116f3565b65ffffffffffff8516602084015282810360408401526119078185611790565b9695505050505050565b84815260806020820152600061192a60808301866116f3565b65ffffffffffff85166040840152828103606084015261194a8185611790565b979650505050505050565b818103818111156101e1576101e1611859565b80820281158282048414176101e1576101e1611859565b60008261199c57634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006119b46060830186611790565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061190d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046114b4565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611523565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046115ee565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103a3565b6001915050610254565b801561024e5760001901610227856102476101e7565b868461046d565b60009150505b9392505050565b61026e6102666101e7565b84848461046d565b505050565b60006101f1610581565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f5611621565b602002602001018181525050836001600160a01b031660001b8160018151811061032157610321611621565b602002602001018181525050828160028151811061034157610341611621565b602090810291909101015260006103997f7462000000000000000000000000000053797374656d626f756e6444656c656783837e2001002000000000000000000000000000000000000000000000000000000061058b565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b816000815181106103e6576103e6611621565b602002602001018181525050826001600160a01b031660001b8160018151811061041257610412611621565b602002602001018181525050818160028151811061043257610432611621565b60209081029190910101526104677f7462000000000000000000000000000053797374656d626f756e6444656c656782610650565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104b0576104b0611621565b602002602001018181525050836001600160a01b031660001b816001815181106104dc576104dc611621565b60200260200101818152505082816002815181106104fc576104fc611621565b60200260200101818152505061057a7f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161054591815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006106f4565b5050505050565b60006101f16107aa565b6000806105966107aa565b9050306001600160a01b038216036105bc576105b4868686866107e9565b915050610648565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610607908990899089908990600401611673565b602060405180830381865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906116a2565b949350505050565b600061065a6107aa565b9050306001600160a01b038216036106765761026e838361081f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106bd90869086906004016116bb565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050565b60006106fe6107aa565b9050306001600160a01b038216036107225761071d8686868686610836565b6107a2565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061076f908990899089908990899060040161171a565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806107e4573391505090565b919050565b60006108166107f8868661084b565b60ff858116601b0360080285901c1661081185876108a1565b6108da565b95945050505050565b610832828261082d8561092b565b6109b0565b5050565b61057a858561084584876108a1565b85610caf565b60008282604051602001610860929190611761565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108d2576108c860ff601b83900360080287901c16836117b3565b91506001016108a6565b509392505050565b600060208210610900576020820484019350602082816108fc576108fc6117c6565b0691505b508254600882021b6020829003808411156108d2576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161097a57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e16109a77f746273746f72650000000000000000005461626c65730000000000000000000084610f4a565b602060006108da565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610a3657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610a2991906117dc565b60405180910390a2505050565b6000610a4184610f66565b905060005b8151811015610b14576000828281518110610a6357610a63611621565b60200260200101519050610a8f6040826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610b0b576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610ad8908990899089906004016117ef565b600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050505b50600101610a46565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610b4591906117dc565b60405180910390a26000610b59858561084b565b9050610bb2816000610b6a8661100d565b67ffffffffffffffff811115610b8257610b8261150d565b6040519080825280601f01601f191660200182016040528015610bac576020820181803683370190505b50611030565b6000610bbd84611046565b1115610bde576000610bcf8686611083565b9050610bdc8160206110d9565b505b60005b82518110156107a2576000838281518110610bfe57610bfe611621565b60200260200101519050610c2a6080826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610ca6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610c73908a908a908a906004016117ef565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505b50600101610be1565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d3957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d2c93929190611818565b60405180910390a2610467565b6000610d45858561084b565b90506000610d5286610f66565b905060005b8151811015610e27576000828281518110610d7457610d74611621565b60200260200101519050610da06004826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610e1e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610deb908b908b908b908b9060040161184b565b600060405180830381600087803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b505050505b50600101610d57565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5c93929190611818565b60405180910390a2610e77828565ffffffffffff1685611030565b60005b81518110156106eb576000828281518110610e9757610e97611621565b60200260200101519050610ec36008826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610f41576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0e908b908b908b908b9060040161184b565b600060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050505b50600101610e7a565b6040805160208101849052908101829052600090606001610860565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fa057610fa0611621565b60209081029190910101526000610fd87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611116565b9050610648610fea8260008451611150565b6111e7565b60008160ff16826110008560581c90565b1660ff1614905092915050565b6000600861101d6002602061188f565b61102791906118a2565b9190911c919050565b61026e838383516110418560200190565b6111f8565b600060086001806110596002602061188f565b611063919061188f565b61106d919061188f565b61107791906118a2565b8260ff911c1692915050565b60008282604051602001611098929190611761565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206110e883601f6117b3565b6110f291906118b9565b6110fc90846117b3565b90505b8083101561026e57600083556001830192506110ff565b60606106486111268585856112b7565b600061114b856111368989611337565b9060ff166028026038011c64ffffffffff1690565b61134a565b6000818311806111605750835182115b156111a6578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119d939291906118db565b60405180910390fd5b602084016111b484826117b3565b905060006111c2858561188f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061136d565b821561127257602083106112225760208304840193506020838161121e5761121e6117c6565b0692505b82156112725760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611263575050610467565b50600194909401939182900391015b5b602082106112945780518455600190930192601f1990910190602001611273565b8115610467576000600019600884021c8554835182191691161785555050505050565b600083836040516020016112cc929190611761565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546113468484611083565b5490565b60405160208101601f19603f84840101166040528282526108d2858585846113e8565b6060600061137b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816113a1576113a16117c6565b04905060405193506020840160208202810160405281855260005b828110156113dc578451871c8252938701936020909101906001016113bc565b50505050509392505050565b821561146f57602083106114125760208304840193506020838161140e5761140e6117c6565b0692505b821561146f5760208390036000818410156114355750600019600884021c61143f565b50600019600882021c5b8554600886021b818451168219821617845250818411611460575050610467565b50600194909401939182900391015b5b602082106114915783548152600190930192601f1990910190602001611470565b8115610467576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b03811681146107e457600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561153857600080fd5b611541846114f6565b925060208401359150604084013567ffffffffffffffff8082111561156557600080fd5b818601915086601f83011261157957600080fd5b81358181111561158b5761158b61150d565b604051601f8201601f19908116603f011681019083821181831017156115b3576115b361150d565b816040528281528960208487010111156115cc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561160357600080fd5b61160c846114f6565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116685781518752958201959082019060010161164c565b509495945050505050565b84815260806020820152600061168c6080830186611637565b60ff949094166040830152506060015292915050565b6000602082840312156116b457600080fd5b5051919050565b8281526040602082015260006106486040830184611637565b6000815180845260005b818110156116fa576020818501810151868301820152016116de565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061173360a0830187611637565b60ff86166040840152828103606084015261174e81866116d4565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561179057815184529284019290840190600101611774565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e161179d565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611637565b8381526060602082015260006118086060830185611637565b9050826040830152949350505050565b60608152600061182b6060830186611637565b65ffffffffffff85166020840152828103604084015261039981856116d4565b8481526080602082015260006118646080830186611637565b65ffffffffffff85166040840152828103606084015261188481856116d4565b979650505050505050565b818103818111156101e1576101e161179d565b80820281158282048414176101e1576101e161179d565b6000826118d657634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006118ee60608301866116d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506112d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a610085366004610efb565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da366004610f77565b610203565b604051601f193601358152602001610096565b610105610100366004611042565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b8383610361565b5050565b60006101fe61046c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061106c565b602090810291909101015260006103587f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610476565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103af576103af61106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103e8576103e861106c565b6020026020010181815250506104667f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161043191815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610555565b50505050565b60006101fe610625565b600080610481610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104b4576104ac86868686610671565b91505061054d565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061050c9089908990899089906004016110be565b602060405180830381865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906110ed565b949350505050565b600061055f610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105905761058b868686868661069e565b61061d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906105ea908990899089908990899060040161114c565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066c573391505090565b919050565b600061035861068086866106ba565b60ff858116601b0360080285901c166106998587610710565b610749565b6106b385856106ad8487610710565b8561079a565b5050505050565b600082826040516020016106cf929190611193565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107415761073760ff601b83900360080287901c16836111e5565b9150600101610715565b509392505050565b60006020821061076f5760208204840193506020828161076b5761076b6111f8565b0691505b508254600882021b602082900380841115610741576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361082457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108179392919061120e565b60405180910390a2610466565b600061083085856106ba565b9050600061083d86610a3e565b905060005b815181101561091257600082828151811061085f5761085f61106c565b6020026020010151905061088b6004826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610909576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906108d6908b908b908b908b9060040161124b565b600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050505b50600101610842565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109479392919061120e565b60405180910390a2610962828565ffffffffffff1685610ae5565b60005b8151811015610a355760008282815181106109825761098261106c565b602002602001015190506109ae6008826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610a2c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906109f9908b908b908b908b9060040161124b565b600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b505050505b50600101610965565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7857610a7861106c565b60209081029190910101526000610ab07f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b00565b905061054d610ac28260008451610b3a565b610bd1565b60008160ff1682610ad88560581c90565b1660ff1614905092915050565b610afb83838351610af68560200190565b610be9565b505050565b606061054d610b10858585610ca8565b6000610b3585610b208989610d28565b9060ff166028026038011c64ffffffffff1690565b610d3b565b600081831180610b4a5750835182115b15610b90578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b879392919061128f565b60405180910390fd5b60208401610b9e84826111e5565b90506000610bac85856112b4565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610be28360156000610d5e565b9392505050565b8215610c635760208310610c1357602083048401935060208381610c0f57610c0f6111f8565b0692505b8215610c635760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c54575050610466565b50600194909401939182900391015b5b60208210610c855780518455600190930192601f1990910190602001610c64565b8115610466576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610cbd929190611193565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610be2610d378484610dd9565b5490565b60405160208101601f19603f848401011660405282825261074185858584610e2f565b60606000610d6c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d9257610d926111f8565b04905060405193506020840160208202810160405281855260005b82811015610dcd578451871c825293870193602090910190600101610dad565b50505050509392505050565b60008282604051602001610dee929190611193565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610eb65760208310610e5957602083048401935060208381610e5557610e556111f8565b0692505b8215610eb6576020839003600081841015610e7c5750600019600884021c610e86565b50600019600882021c5b8554600886021b818451168219821617845250818411610ea7575050610466565b50600194909401939182900391015b5b60208210610ed85783548152600190930192601f1990910190602001610eb7565b8115610466576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f0d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610be257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461066c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610f8c57600080fd5b610f9584610f3d565b925060208401359150604084013567ffffffffffffffff80821115610fb957600080fd5b818601915086601f830112610fcd57600080fd5b813581811115610fdf57610fdf610f61565b604051601f8201601f19908116603f0116810190838211818310171561100757611007610f61565b8160405282815289602084870101111561102057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561105557600080fd5b61105e83610f3d565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156110b357815187529582019590820190600101611097565b509495945050505050565b8481526080602082015260006110d76080830186611082565b60ff949094166040830152506060015292915050565b6000602082840312156110ff57600080fd5b5051919050565b6000815180845260005b8181101561112c57602081850181015186830182015201611110565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061116560a0830187611082565b60ff8616604084015282810360608401526111808186611106565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156111c2578151845292840192908401906001016111a6565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6111cf565b634e487b7160e01b600052601260045260246000fd5b6060815260006112216060830186611082565b65ffffffffffff8516602084015282810360408401526112418185611106565b9695505050505050565b8481526080602082015260006112646080830186611082565b65ffffffffffff8516604084015282810360608401526112848185611106565b979650505050505050565b6060815260006112a26060830186611106565b60208301949094525060400152919050565b818103818111156101ee576101ee6111cf56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611648806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c146102b6578063ea29e3ba146102cb576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611165565b6102e0565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610379565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611233565b610388565b6040516101699190611300565b3480156101e557600080fd5b506101f96101f4366004611313565b61040c565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610559565b34801561023c57600080fd5b5061025061024b3660046113ad565b610563565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046113c6565b6105ad565b3480156102ad57600080fd5b506101876105ea565b3480156102c257600080fd5b506101876105f4565b3480156102d757600080fd5b506101f96105fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103836106ea565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103b2919061140f565b600060405180830381855af49150503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50915091508161040457805181602001fd5b949350505050565b60408051600080825260208201909252906104487f7462000000000000000000000000000000000000000000000000000000000000868661071c565b9050306104536107a3565b73ffffffffffffffffffffffffffffffffffffffff16036104af576104aa81838560405160200161048b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107ef565b610552565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104e591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161051f959493929190611467565b600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050505b5050505050565b60006103836107a3565b6040805180820190915260008082526020820152604051806040016040528061058a610379565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105e19190611300565b60405180910390fd5b6000610383610379565b6000610383610559565b306106076107a3565b73ffffffffffffffffffffffffffffffffffffffff160361068b577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610681906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106819060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107195750335b90565b600061072a607060106114ce565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107ea573391505090565b919050565b61055285858585856108008b610805565b61088a565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161085457507e60030220202000000000000000000000000000000000000000000000000000919050565b6103736108817f746273746f72650000000000000000005461626c65730000000000000000000084610bd0565b60206000610c29565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361091657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161090994939291906114e1565b60405180910390a2610bc8565b600061092187610c7b565b905060005b81518110156109fa5760008282815181106109435761094361152b565b6020026020010151905061096f6001826affffffffffffffffffffff1916610d0490919063ffffffff16565b156109f1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109be908c908c908c908c908c908c90600401611541565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b50600101610926565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a3194939291906114e1565b60405180910390a26000610a458888610d22565b90506000602087019050610a5d826000895184610d37565b6000610a6885610df5565b1115610aec576000610a7a8a8a610e32565b878155905060208601915060008060005b610a9488610df5565b8160ff161015610ae757610aa98d8d83610e88565b9250610ac48a8260ff166028026038011c64ffffffffff1690565b9150610ad38360008488610d37565b610add82866114ce565b9450600101610a8b565b505050505b60005b8351811015610bc3576000848281518110610b0c57610b0c61152b565b60200260200101519050610b386002826affffffffffffffffffffff1916610d0490919063ffffffff16565b15610bba576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610b87908e908e908e908e908e908e90600401611541565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050505b50600101610aef565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c4f57602082048401935060208281610c4b57610c4b61159a565b0691505b508254600882021b602082900380841115610c73576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610cb557610cb561152b565b60209081029190910101526000610ced7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f08565b9050610404610cff8260008451610f42565b610fd0565b60008160ff1682610d158560581c90565b1660ff1614905092915050565b60008282604051602001610be89291906115b0565b8215610db15760208310610d6157602083048401935060208381610d5d57610d5d61159a565b0692505b8215610db15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610da2575050610def565b50600194909401939182900391015b5b60208210610dd35780518455600190930192601f1990910190602001610db2565b8115610def5783548151600019600885021c9182169119161784555b50505050565b60006008600180610e08600260206115ec565b610e1291906115ec565b610e1c91906115ec565b610e2691906115ff565b8260ff911c1692915050565b60008282604051602001610e479291906115b0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610e9d9291906115b0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6060610404610f18858585610e88565b6000610f3d85610f288989610fe8565b9060ff166028026038011c64ffffffffff1690565b610ffb565b600081831180610f525750835182115b15610f8f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105e193929190611616565b60208401610f9d84826114ce565b90506000610fab85856115ec565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610fe1836015600061101e565b9392505050565b6000610fe1610ff78484610e32565b5490565b60405160208101601f19603f8484010116604052828252610c7385858584611099565b6060600061102c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110525761105261159a565b04905060405193506020840160208202810160405281855260005b8281101561108d578451871c82529387019360209091019060010161106d565b50505050509392505050565b821561112057602083106110c3576020830484019350602083816110bf576110bf61159a565b0692505b82156111205760208390036000818410156110e65750600019600884021c6110f0565b50600019600882021c5b8554600886021b818451168219821617845250818411611111575050610def565b50600194909401939182900391015b5b602082106111425783548152600190930192601f1990910190602001611121565b8115610def576000600019600884021c8251865482191691161782525050505050565b60006020828403121561117757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610fe157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111d8576111d86111a7565b604051601f8501601f19908116603f01168101908282118183101715611200576112006111a7565b8160405280935085815286868601111561121957600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561124657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461126a57600080fd5b9150602083013567ffffffffffffffff81111561128657600080fd5b8301601f8101851361129757600080fd5b6112a6858235602084016111bd565b9150509250929050565b60005b838110156112cb5781810151838201526020016112b3565b50506000910152565b600081518084526112ec8160208601602086016112b0565b601f01601f19169290920160200192915050565b602081526000610fe160208301846112d4565b60008060006060848603121561132857600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461135857600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461138d57600080fd5b9150604084013580151581146113a257600080fd5b809150509250925092565b6000602082840312156113bf57600080fd5b5035919050565b6000602082840312156113d857600080fd5b813567ffffffffffffffff8111156113ef57600080fd5b8201601f8101841361140057600080fd5b610404848235602084016111bd565b600082516114218184602087016112b0565b9190910192915050565b60008151808452602080850194506020840160005b8381101561145c57815187529582019590820190600101611440565b509495945050505050565b85815260a06020820152600061148060a083018761142b565b828103604084015261149281876112d4565b905084606084015282810360808401526114ac81856112d4565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610373576103736114b8565b6080815260006114f4608083018761142b565b828103602084015261150681876112d4565b9050846040840152828103606084015261152081856112d4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061155a60c083018861142b565b828103604084015261156c81886112d4565b9050856060840152828103608084015261158681866112d4565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156115df578151845292840192908401906001016115c3565b5091979650505050505050565b81810381811115610373576103736114b8565b8082028115828204841417610373576103736114b8565b60608152600061162960608301866112d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061026c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f366004610216565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b60006101826000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff16905080610211573391505090565b919050565b60006020828403121561022857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025857600080fd5b939250505056fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b604051640322e302e360dc1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a233608052604051640322e302e360dc1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a260805161528b620000d46000396000818161036f01526112a8015261528b6000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614389565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614389565b61025f34846143c6565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614436565b610983565b6040516103a591906144ec565b3480156103e757600080fd5b506102646103f6366004614541565b6109c6565b34801561040757600080fd5b50610264610416366004614541565b610a79565b34801561042757600080fd5b506103ce6104363660046145ce565b610b24565b34801561044757600080fd5b5061026461045636600461462c565b610b6e565b34801561046757600080fd5b506102646104763660046146d9565b610c57565b34801561048757600080fd5b506102646104963660046146d9565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476f565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483f565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614886565b610e07565b6040516103a5939291906148d9565b34801561051757600080fd5b506103ce610526366004614979565b610e5c565b34801561053757600080fd5b506102646105463660046149e2565b610e6b565b34801561055757600080fd5b507f322e302e300000000000000000000000000000000000000000000000000000006104bb565b6103ce61058c366004614a43565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614436565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9c565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614afb565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b52565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8c565b611116565b34801561063d57600080fd5b5061026461064c366004614c1b565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca8565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e2565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145ce565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476f565b611444565b3480156106dd57600080fd5b506102646106ec366004614436565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476f565b6114cf565b34801561071d57600080fd5b5061026461072c366004614541565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc5565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc5565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc5565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614389565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614389565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cdb565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614788565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c6565b9350505080806116b990614d06565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc5565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d25565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc5565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d25565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4d565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cdb565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efc565b6114c885858585856119f18b611a39565b612f1f565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4d565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613264565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d66565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efc565b9998505050505050505050565b6111128282611bcf85611a39565b613280565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc5565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc5565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357f565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d25565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d79565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc5565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4d565b6135fa565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761360a565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a6565b611f213360008484604051602401611ec491906144ec565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b033500000000000000000000000000000000000000000000000000000000179052613701565b506111128282805190602001206001613712565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd7565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f6565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc5565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e0a565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd7565b60405180910390a26120fd828565ffffffffffff1685613868565b60005b8151811015610d0457600082828151811061211d5761211d614cc5565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e0a565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387e565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613895565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613895565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e43565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613939565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ee565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a97565b905061247982613b29565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ed1565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d66565b604080516000815260208101909152889088612ac2565b600061253b82613bc6565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614eea565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c6565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f26565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d66565b61268b9190614f3c565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efc565b600060086001806126e060026020614d66565b6126ea9190614d66565b6126f49190614d66565b6126fe9190614f3c565b8260ff911c1692915050565b600061094f6127198484613c58565b5490565b60008383604051602001612732929190614eea565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f26565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc5565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cae565b613d3c565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4d565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ed1565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c6565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613df1565b612a31565b612a3188888488613e69565b90999098509650505050505050565b6000600860016126ea60026020614d66565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efc565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613eca565b8061094f575061094f8383613eca565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f53565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d66565b612bc091906143c6565b9050808214158015612be2575081612bd88688614f94565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f93565b90506000612c9d8b6137f6565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc5565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb9565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d604051612de296959493929190615017565b60405180910390a250828414612e03576000612dfe8c8c613c58565b839055505b6000612e108c8c8c61271d565b9050612e24818a64ffffffffff1689613868565b5060005b8151811015612eee576000828281518110612e4557612e45614cc5565b60200260200101519050612e716020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee557606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb29796959493929190614fb9565b600060405180830381600087803b158015612ecc57600080fd5b505af1158015612ee0573d6000803e3d6000fd5b505050505b50600101612e28565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fab57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9e9493929190615066565b60405180910390a2610a71565b6000612fb6876137f6565b905060005b815181101561308f576000828281518110612fd857612fd8614cc5565b602002602001015190506130046001826affffffffffffffffffffff191661290790919063ffffffff16565b15613086576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613053908c908c908c908c908c908c906004016150a5565b600060405180830381600087803b15801561306d57600080fd5b505af1158015613081573d6000803e3d6000fd5b505050505b50600101612fbb565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c69493929190615066565b60405180910390a260006130da8888612591565b905060006020870190506130f2826000895184614061565b60006130fd856126cd565b111561318157600061310f8a8a613c58565b878155905060208601915060008060005b613129886126cd565b8160ff16101561317c5761313e8d8d8361271d565b92506131598a8260ff166028026038011c64ffffffffff1690565b91506131688360008488614061565b61317282866143c6565b9450600101613120565b505050505b60005b83518110156132585760008482815181106131a1576131a1614cc5565b602002602001015190506131cd6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324f576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321c908e908e908e908e908e908e906004016150a5565b600060405180830381600087803b15801561323657600080fd5b505af115801561324a573d6000803e3d6000fd5b505050505b50600101613184565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f991906150fe565b60405180910390a2505050565b6000613311846137f6565b905060005b81518110156133e457600082828151811061333357613333614cc5565b6020026020010151905061335f6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133db576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a890899089908990600401615111565b600060405180830381600087803b1580156133c257600080fd5b505af11580156133d6573d6000803e3d6000fd5b505050505b50600101613316565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341591906150fe565b60405180910390a260006134298585612591565b905061348281600061343a86612671565b67ffffffffffffffff81111561345257613452614788565b6040519080825280601f01601f19166020018201604052801561347c576020820181803683370190505b50613868565b600061348d846126cd565b11156134ae57600061349f8686613c58565b90506134ac816020614120565b505b60005b8251811015610a715760008382815181106134ce576134ce614cc5565b602002602001015190506134fa6080826affffffffffffffffffffff191661290790919063ffffffff16565b15613576576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613543908a908a908a90600401615111565b600060405180830381600087803b15801561355d57600080fd5b505af1158015613571573d6000803e3d6000fd5b505050505b506001016134b1565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f290614389565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364357613643614cc5565b6020908102919091010152600061369b7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136b0828261415d565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e69565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375357613753614cc5565b602002602001018181525050828160018151811061377357613773614cc5565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137c191151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061383057613830614cc5565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138798560200190565b614061565b600061388c607060106143c6565b9190911b919050565b606060005b60108110156138fa577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138fa5760010161389a565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613944614179565b9050306001600160a01b0382160361396257611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ad90899089908990899060040161513a565b602060405180830381865afa1580156139ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff9190615169565b60006139f8614179565b9050306001600160a01b03821603613a1c57613a1786868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a699089908990899089908990600401615182565b600060405180830381600087803b158015613a8357600080fd5b505af1158015613258573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ad057613ad0614cc5565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6257613b62614cc5565b60209081029190910101526000613bba7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bff57613bff614cc5565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6d929190614eea565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbe5750835182115b15613cfb578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151c9565b60208401613d0984826143c6565b90506000613d178585614d66565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b3565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8757613d87614cc5565b602090810291909101015260008080613de07f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422e565b60006060836001600160a01b03166000613e0c85898961423a565b604051613e1991906151ee565b60006040518083038185875af1925050503d8060008114613e56576040519150601f19603f3d011682016040523d82523d6000602084013e613e5b565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e8284888861423a565b604051613e8f91906151ee565b600060405180830381855af49150503d8060008114613e56576040519150601f19603f3d011682016040523d82523d6000602084013e613e5b565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0357613f03614cc5565b602002602001018181525050826001600160a01b031660001b81600181518110613f2f57613f2f614cc5565b60209081029190910101526000613f877f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd7576040517f7149a3c100000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106140095780850382019150614011565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140db576020831061408b5760208304840193506020838161408757614087614f26565b0692505b82156140db5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140cc575050611965565b50600194909401939182900391015b5b602082106140fd5780518455600190930192601f19909101906020016140dc565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412f83601f6143c6565b614139919061520a565b61414390846143c6565b90505b8083101561084e5760008355600183019250614146565b600061416883614269565b801561094f575061094f83836142b5565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141c18560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e7576141e7614f26565b04905060405193506020840160208202810160405281855260005b82811015614222578451871c825293870193602090910190600101614202565b50505050509392505050565b6000806116db8561436d565b60608383836040516020016142519392919061522c565b60405160208183030381529060405290509392505050565b6000614295827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b5565b8015610dc557506142ae826001600160e01b03196142b5565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614356575060208210155b80156143625750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143aa576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143b0565b60008083601f8401126143eb57600080fd5b50813567ffffffffffffffff81111561440357600080fd5b6020830191508360208260051b850101111561441e57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444e57600080fd5b85359450602086013567ffffffffffffffff81111561446c57600080fd5b614478888289016143d9565b909550935061448b905060408701614425565b949793965091946060013592915050565b60005b838110156144b757818101518382015260200161449f565b50506000910152565b600081518084526144d881602086016020860161449c565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144c0565b60008083601f84011261451157600080fd5b50813567ffffffffffffffff81111561452957600080fd5b60208301915083602082850101111561441e57600080fd5b6000806000806000806080878903121561455a57600080fd5b86359550602087013567ffffffffffffffff8082111561457957600080fd5b6145858a838b016143d9565b909750955085915061459960408a01614425565b945060608901359150808211156145af57600080fd5b506145bc89828a016144ff565b979a9699509497509295939492505050565b600080600080606085870312156145e457600080fd5b84359350602085013567ffffffffffffffff81111561460257600080fd5b61460e878288016143d9565b9094509250614621905060408601614425565b905092959194509250565b60008060008060008060008060a0898b03121561464857600080fd5b88359750602089013567ffffffffffffffff8082111561466757600080fd5b6146738c838d016143d9565b909950975060408b013591508082111561468c57600080fd5b6146988c838d016144ff565b909750955060608b0135945060808b01359150808211156146b857600080fd5b506146c58b828c016144ff565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f457600080fd5b87359650602088013567ffffffffffffffff8082111561471357600080fd5b61471f8b838c016143d9565b909850965086915061473360408b01614425565b955060608a013591508082111561474957600080fd5b506147568a828b016144ff565b989b979a50959894979596608090950135949350505050565b60006020828403121561478157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c7576147c7614788565b604052919050565b600082601f8301126147e057600080fd5b813567ffffffffffffffff8111156147fa576147fa614788565b61480d6020601f19601f8401160161479e565b81815284602083860101111561482257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485257600080fd5b82359150602083013567ffffffffffffffff81111561487057600080fd5b61487c858286016147cf565b9150509250929050565b6000806000806060858703121561489c57600080fd5b84359350602085013567ffffffffffffffff8111156148ba57600080fd5b6148c6878288016143d9565b9598909750949560400135949350505050565b6060815260006148ec60608301866144c0565b846020840152828103604084015261097981856144c0565b600082601f83011261491557600080fd5b8135602067ffffffffffffffff82111561493157614931614788565b8160051b61494082820161479e565b928352848101820192828101908785111561495a57600080fd5b83870192505b8483101561436257823582529183019190830190614960565b600080600080600060a0868803121561499157600080fd5b85359450602086013567ffffffffffffffff8111156149af57600080fd5b6149bb88828901614904565b9450506149ca60408701614425565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f757600080fd5b83359250602084013567ffffffffffffffff811115614a1557600080fd5b614a21868287016143d9565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5857600080fd5b8335614a6381614a2e565b925060208401359150604084013567ffffffffffffffff811115614a8657600080fd5b614a92868287016147cf565b9150509250925092565b60008060008060808587031215614ab257600080fd5b84359350602085013567ffffffffffffffff811115614ad057600080fd5b614adc87828801614904565b935050614aeb60408601614425565b9396929550929360600135925050565b600080600060608486031215614b1057600080fd5b83359250602084013567ffffffffffffffff811115614b2e57600080fd5b614b3a86828701614904565b925050614b4960408501614425565b90509250925092565b60008060408385031215614b6557600080fd5b8235614b7081614a2e565b9150602083013567ffffffffffffffff81111561487057600080fd5b60008060008060008060808789031215614ba557600080fd5b86359550602087013567ffffffffffffffff80821115614bc457600080fd5b614bd08a838b016143d9565b90975095506040890135915065ffffffffffff82168214614bf057600080fd5b909350606088013590808211156145af57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3757600080fd5b88359750602089013567ffffffffffffffff80821115614c5657600080fd5b614c628c838d016143d9565b9099509750879150614c7660408c01614425565b9650614c8460608c01614c06565b9550614c9260808c01614c06565b945060a08b01359150808211156146b857600080fd5b600060208284031215614cba57600080fd5b813561094f81614a2e565b634e487b7160e01b600052603260045260246000fd5b604081526000614cee60408301856144c0565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1c57614d1c6143b0565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144c0565b60ff8281168282160390811115610dc557610dc56143b0565b81810381811115610dc557610dc56143b0565b600060208284031215614d8b57600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dcc57815187529582019590820190600101614db0565b509495945050505050565b606081526000614dea6060830186614d9b565b65ffffffffffff85166020840152828103604084015261097981856144c0565b848152608060208201526000614e236080830186614d9b565b65ffffffffffff85166040840152828103606084015261436281856144c0565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea481600386016020890161449c565b808401905081600382015284519150614ec482600483016020880161449c565b0160040195945050505050565b8281526040602082015260006107aa60408301846144c0565b8281526000602080830184516020860160005b82811015614f1957815184529284019290840190600101614efd565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143b0565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144c0565b64ffffffffff818116838216019080821115614fb257614fb26143b0565b5092915050565b87815260e060208201526000614fd260e0830189614d9b565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500981856144c0565b9a9950505050505050505050565b60c08152600061502a60c0830189614d9b565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a0840152611bb481856144c0565b6080815260006150796080830187614d9b565b828103602084015261508b81876144c0565b9050846040840152828103606084015261436281856144c0565b86815260c0602082015260006150be60c0830188614d9b565b82810360408401526150d081886144c0565b905085606084015282810360808401526150ea81866144c0565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d9b565b83815260606020820152600061512a6060830185614d9b565b9050826040830152949350505050565b8481526080602082015260006151536080830186614d9b565b60ff949094166040830152506060015292915050565b60006020828403121561517b57600080fd5b5051919050565b85815260a06020820152600061519b60a0830187614d9b565b60ff8616604084015282810360608401526151b681866144c0565b9150508260808301529695505050505050565b6060815260006151dc60608301866144c0565b60208301949094525060400152919050565b6000825161520081846020870161449c565b9190910192915050565b60008261522757634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523e81846020890161449c565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b506080516157ca620000316000396000610c2b01526157ca6000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636548a90a116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b80636548a90a146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c17565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c56565b61032c565b005b610176610186366004614cd2565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614e1f565b61042d565b6101d16101cc366004614e78565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614ebf565b6105fe565b604051601f19360135815260200161015a565b61017661021e366004614f17565b610779565b6101d1610231366004614f55565b6107e5565b610176610244366004614fb8565b6108c0565b610176610257366004614c56565b610982565b61017661026a366004614ff2565b6109c1565b61017661027d366004614ff2565b6109f3565b61017661029036600461500b565b610a88565b6101766102a3366004615045565b610b3d565b6101766102b6366004614f17565b610b56565b610193610c17565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610c21565b6103458261034061041e565b610c85565b61034f8282610cfe565b5050565b61035b610c21565b600061036689610d29565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d40565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc9291906150b2565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e54565b6103f48861034061041e565b61041488888888610405888a6150cb565b61040f87896150cb565b610e9f565b5050505050505050565b60006104286112af565b905090565b610435610c21565b61044761044061041e565b84846112e1565b610450826113b4565b156104a3576000610460836113d0565b905061048c817f1a86b5500000000000000000000000000000000000000000000000000000000061146c565b6104a061049761041e565b848460006114c7565b50505b505050565b60006104b2610c21565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d40565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615151565b61051683610e54565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114f4565b90506000818460405160200161056292919061517a565b60405160208183030381529060405290508080519060200120925060006105888461157e565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361162e565b6105ea81876116f9565b6105f485846116f9565b5050505092915050565b610606610c21565b61737960f01b836001600160f01b0319161461062c5761737960f01b836104d885610d40565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761065081610e54565b61065c8161034061041e565b610686837fb5dee1270000000000000000000000000000000000000000000000000000000061146c565b600061069185610d29565b6fffffffffffffffffffffffffffffffff1916036106b3578361038885610d40565b60006106be846117c2565b905080158015906106cf5750848114155b15610711576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b600061071c866113d0565b90506001600160a01b038116156107455761073681611847565b61074083826118c6565b610750565b610750866001611964565b61075b868686611a05565b6107658587611aa8565b61077183866001611b33565b505050505050565b610781610c21565b6107ab827f1873396a0000000000000000000000000000000000000000000000000000000061146c565b6107ce616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e54565b6107da8361034061041e565b6104a3838383611be2565b60006107ef610c21565b60408051616e7360f01b602082015260006022820181905260308201526108319101604051602081830303815290604052610829906151d2565b61034061041e565b8280519060200120905060008280519060200120905060006108528361157e565b90508015610898576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319841660048201526024016103bc565b6108a383878461162e565b6108ad82856116f9565b6108b783866116f9565b50509392505050565b6108c8610c21565b6108f2827f6fdd1c800000000000000000000000000000000000000000000000000000000061146c565b61096e6108fd61041e565b6000848460405160240161091191906151f6565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611ca5565b5061034f8282805190602001206001611cb6565b61098a610c21565b6109968261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d65565b6109c9610c21565b6109d281611e78565b6109db81610e54565b6109e78161034061041e565b6109f081611ea9565b50565b6109fb610c21565b610a0481611e78565b610a0d81611f14565b610a1681612106565b15610a595780610a2582610d40565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc9291906150b2565b610a64816001611964565b610a7581610a7061041e565b61218b565b6109f081610a8161041e565b6001611b33565b610a90610c21565b610a9983611e78565b610aa2826113b4565b610ad8576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae48361034061041e565b6000610aef836113d0565b9050610b1b817f1a86b5500000000000000000000000000000000000000000000000000000000061146c565b610b258484612255565b815115610b37576104a061049761041e565b50505050565b610b45610c21565b6109f0610b5061041e565b826122d4565b610b5e610c21565b61737960f01b836001600160f01b03191614610b845761737960f01b836104d885610d40565b610bae827f540fbfa80000000000000000000000000000000000000000000000000000000061146c565b610bb783610e54565b610bda616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e54565b610be68361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612376565b600061042861241b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c83576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610cb2616e7360f01b6dffffffffffffffffffffffffffff60801b851617612425565b6001600160a01b03161461034f57610cc982610d40565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc929190615209565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d65565b6000610d376070601061524a565b9190911b919050565b606081601081901b6000610d5383610d29565b90508271ffffffffffffffffffffffffffffffffffff19831615610d9457610d8f71ffffffffffffffffffffffffffffffffffff1984166114f4565b610dcb565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610df257610ded836114f4565b610e29565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e3b9392919061525d565b6040516020818303038152906040529350505050919050565b610e5d81612106565b6109f05780610e6b82610d40565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc9291906150b2565b613a3160f11b866001600160f01b03191614801590610ecd5750611bdd60f21b866001600160f01b03191614155b15610f2e57613a3160f11b8687604051602001610eec91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615151565b610f37856124b6565b610f428460016126fd565b610f4d8360006126fd565b60e084901c60e885901c0160ff16825114610fad5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1681511461100d5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110855760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61108e85612899565b61109784612899565b146110e9576110a585612899565b6110ae84612899565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110f2856128cb565b6110fb846128cb565b1461114d57611109856128cb565b611112846128cb565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61115986612899565b8110156111f45761118361116d85836128e8565b60c581111561117e5761117e6152d3565b612910565b6008601b8390030287901c60ff16146111ec576008601b8290030286901c60ff166111b161116d86846128e8565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b600101611150565b506111fe86612106565b1561125857858660405160200161121791815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc92916004016150b2565b6112a4868686868660405160200161127091906152e9565b6040516020818303038152906040528660405160200161129091906152e9565b604051602081830303815290604052612970565b610771866001611964565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112de5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106113225761132261536b565b602002602001018181525050826001600160a01b031660001b8160018151811061134e5761134e61536b565b602002602001018181525050610b377f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161139791815260200190565b60408051601f19818403018152919052630100080160dd1b612a37565b6000811515801561032657506113c982612a4c565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106114095761140961536b565b602090810291909101015260006114617f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612aac565b60601c949350505050565b6114768282612ae2565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114d887878787612afe565b91509150816114ea576114ea81612cce565b9695505050505050565b606060005b601081101561154a576fffffffffffffffffffffffffffffffff198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561154a576001016114f9565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115d6576115d661536b565b602090810291909101015260006115767f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612aac565b600061163a8383612cd6565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106116985761169861536b565b60209081029190910101526116f07f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612d15565b50505050505050565b606060006117068361301b565b905060006117138461302b565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061176c5761176c61536b565b60209081029190910101526107717f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612d15565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106118075761180761536b565b602090810291909101015260006115767f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612aac565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106118895761188961536b565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613054565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118fb576118fb61536b565b602002602001018181525050816001600160a01b031660001b816001815181106119275761192761536b565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613054565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061199a5761199a61536b565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119e891151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a37565b6000611a118383613320565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a5057611a5061536b565b60209081029190910101526116f07f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612d15565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611aea57611aea61536b565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161139791815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b6857611b6861536b565b602002602001018181525050826001600160a01b031660001b81600181518110611b9457611b9461536b565b602002602001018181525050610b377f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119e891151560f81b815260010190565b613a3160f11b836001600160f01b03191614611c1257613a3160f11b8384604051602001610eec91815260200190565b611c1b83612106565b611c74578283604051602001611c3391815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc92916004016150b2565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613350565b60606000806114d8878787876133f5565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cf757611cf761536b565b6020026020010181815250508281600181518110611d1757611d1761536b565b602002602001018181525050610b377f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119e891151560f81b815260010190565b6000611d71848461346d565b90506000815167ffffffffffffffff811115611d8f57611d8f614d68565b604051908082528060200260200182016040528015611db8578160200160208202803683370190505b5090506000805b8351811015611e6957846001600160a01b0316611e03858381518110611de757611de761536b565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e6157838181518110611e2357611e2361536b565b6020026020010151838381518110611e3d57611e3d61536b565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611dbf565b508082526107718686846134d8565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109f057616e7360f01b816104d883610d40565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611edf57611edf61536b565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261352f565b6000611f208260101b90565b90506000611f4271ffffffffffffffffffffffffffffffffffff1983166114f4565b80519091508015610b3757611f6482611f5c600184615381565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611ff5576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b612003600183615381565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f000000000000000000000000000000000000000000000000000000000000001480156120b0575061206b83611f5c83600161524a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120fe576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611ff8565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061213f5761213f61536b565b6020908102919091010152600061217f7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612aac565b90506115768160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121c1576121c161536b565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001612220919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a37565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061228b5761228b61536b565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161139791815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106123155761231561536b565b602002602001018181525050816001600160a01b031660001b816001815181106123415761234161536b565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261352f565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106123ac576123ac61536b565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b8260008560405160200161240791906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135ca565b600061042861367b565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061245e5761245e61536b565b602090810291909101015260006114617f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612aac565b806124ed576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124f8826128cb565b9050600581111561253f576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061254a83612899565b90506000612558838361524a565b9050601c81111561259f576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b8381101561264a5760ff601b82900360080287901c1660008190036125f7576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612635576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61263f818461524a565b9250506001016125a3565b50612654856136ba565b81146126a057612663856136ba565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107715760ff601b82900360080287901c1680156126f4576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b506001016126a2565b80158015612709575081155b1561272a5760405163d498615960e01b8152600060048201526024016103bc565b6000612735836128cb565b9050600581111561275c5760405163d498615960e01b8152600481018290526024016103bc565b600061276784612899565b90506000612775838361524a565b9050601c81111561279c5760405163d498615960e01b8152600481018290526024016103bc565b6000805b838110156128085760006127b761116d89846128e8565b9050806000036127f3576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127fd818461524a565b9250506001016127a0565b50612812866136ba565b811461283d57612821866136ba565b60405163d498615960e01b81526004016103bc91815260200190565b825b828110156116f057600061285661116d89846128e8565b90508015612890576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161283f565b6000600860016128ab60026020615381565b6128b59190615381565b6128bf9190615394565b8260ff911c1692915050565b600060086001806128de60026020615381565b6128ab9190615381565b6000601b8290036008028360ff911c1660c5811115612909576129096152d3565b9392505050565b6000808260c5811115612925576129256152d3565b60ff169050606181101561293f57601f1660010192915050565b60618360c5811115612953576129536152d3565b036129615750601492915050565b50600092915050565b50919050565b600061297d8686866136dd565b9050600061298b8484613713565b905060006129998585613730565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129d3576129d361536b565b6020908102919091010152612a2b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612d15565b50505050505050505050565b6104a08585612a468487613745565b8561377e565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612aa4906151d2565b909114919050565b6000612ad9612abb86866139e6565b60ff858116601b0360080285901c16612ad48587613745565b613a3c565b95945050505050565b6000612aed83613a8d565b801561290957506129098383613ace565b600060606000612b0d86613b86565b905060005b8151811015612be0576000828281518110612b2f57612b2f61536b565b60200260200101519050612b5b6001826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15612bd7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612ba4908c908c908c906004016153ab565b600060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050505b50600101612b12565b50612bed87858888613c28565b909350915060005b8151811015612cc3576000828281518110612c1257612c1261536b565b60200260200101519050612c3e6002826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15612cba576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c87908c908c908c906004016153ab565b600060405180830381600087803b158015612ca157600080fd5b505af1158015612cb5573d6000803e3d6000fd5b505050505b50600101612bf5565b505094509492505050565b805160208201fd5b60608282604051602001612cfe9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d6e57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d61949392919061540f565b60405180910390a2610771565b6000612d7987613cfa565b905060005b8151811015612e52576000828281518110612d9b57612d9b61536b565b60200260200101519050612dc76001826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15612e49576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612e16908c908c908c908c908c908c9060040161544e565b600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b505050505b50600101612d7e565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e89949392919061540f565b60405180910390a26000612e9d88886139e6565b90506000602087019050612eb5826000895184613d6c565b6000612ec0856128cb565b1115612f44576000612ed28a8a613e2b565b878155905060208601915060008060005b612eec886128cb565b8160ff161015612f3f57612f018d8d83613e81565b9250612f1c8a8260ff166028026038011c64ffffffffff1690565b9150612f2b8360008488613d6c565b612f35828661524a565b9450600101612ee3565b505050505b60005b8351811015612a2b576000848281518110612f6457612f6461536b565b60200260200101519050612f906002826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15613012576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fdf908e908e908e908e908e908e9060040161544e565b600060405180830381600087803b158015612ff957600080fd5b505af115801561300d573d6000803e3d6000fd5b505050505b50600101612f47565b60006103268251603881901b1790565b60608160405160200161303e91906154a7565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b031916036130a757827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161309a91906154c3565b60405180910390a2505050565b60006130b284613cfa565b905060005b81518110156131855760008282815181106130d4576130d461536b565b602002602001015190506131006040826affffffffffffffffffffff1916613c0a90919063ffffffff16565b1561317c576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590613149908990899089906004016154d6565b600060405180830381600087803b15801561316357600080fd5b505af1158015613177573d6000803e3d6000fd5b505050505b506001016130b7565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516131b691906154c3565b60405180910390a260006131ca85856139e6565b90506132238160006131db866136ba565b67ffffffffffffffff8111156131f3576131f3614d68565b6040519080825280601f01601f19166020018201604052801561321d576020820181803683370190505b50613f01565b600061322e846128cb565b111561324f5760006132408686613e2b565b905061324d816020613f17565b505b60005b825181101561077157600083828151811061326f5761326f61536b565b6020026020010151905061329b6080826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15613317576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132e4908a908a908a906004016154d6565b600060405180830381600087803b1580156132fe57600080fd5b505af1158015613312573d6000803e3d6000fd5b505050505b50600101613252565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cfe565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106133865761338661536b565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133e191906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f54565b60006060836001600160a01b03166000613410858989613f8f565b60405161341d91906154a7565b60006040518083038185875af1925050503d806000811461345a576040519150601f19603f3d011682016040523d82523d6000602084013e61345f565b606091505b509097909650945050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106134a7576134a761536b565b60200260200101818152505060006134c185836000613fa6565b9050612ad96134d38260008451613fe0565b61406e565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061350e5761350e61536b565b602002602001018181525050610b378482600061352a8661407f565b61408f565b600061353961367b565b9050306001600160a01b03821603613555576104a383836140ca565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061359c90869086906004016154ff565b600060405180830381600087803b1580156135b657600080fd5b505af11580156116f0573d6000803e3d6000fd5b60006135d461367b565b9050306001600160a01b038216036135f7576135f285858585613f54565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f326290613642908890889088908890600401615518565b600060405180830381600087803b15801561365c57600080fd5b505af1158015613670573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806136b5573391505090565b919050565b600060086136ca60026020615381565b6136d49190615394565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b17612909565b60608282604051602001612cfe92919061554c565b600080805b8360ff168110156137765761376c60ff601b83900360080287901c168361524a565b915060010161374a565b509392505050565b611bdd60f21b846001600160f01b031916036137d557837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516137c89392919061557b565b60405180910390a2610b37565b60006137e185856139e6565b905060006137ee86613cfa565b905060005b81518110156138c35760008282815181106138105761381061536b565b6020026020010151905061383c6004826affffffffffffffffffffff1916613c0a90919063ffffffff16565b156138ba576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613887908b908b908b908b906004016155ae565b600060405180830381600087803b1580156138a157600080fd5b505af11580156138b5573d6000803e3d6000fd5b505050505b506001016137f3565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138f89392919061557b565b60405180910390a2613913828565ffffffffffff1685613f01565b60005b81518110156116f05760008282815181106139335761393361536b565b6020026020010151905061395f6008826affffffffffffffffffffff1916613c0a90919063ffffffff16565b156139dd576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906139aa908b908b908b908b906004016155ae565b600060405180830381600087803b1580156139c457600080fd5b505af11580156139d8573d6000803e3d6000fd5b505050505b50600101613916565b600082826040516020016139fb9291906155e7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a6257602082048401935060208281613a5e57613a5e615623565b0691505b508254600882021b602082900380841115613776576001850154600882021c82179150509392505050565b6000613ab9827f01ffc9a700000000000000000000000000000000000000000000000000000000613ace565b801561032657506113c9826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b6f575060208210155b8015613b7b5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613bc057613bc061536b565b60209081029190910101526000613bf87f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613fa6565b90506115766134d38260008451613fe0565b60008160ff1682613c1b8560581c90565b1660ff1614905092915050565b60006060600080613c38866140dd565b90925090506001600160a01b038216613c555785610e6b87610d40565b80613c6457613c648689614195565b8615613ca8576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c90826141ac565b9050613ca582613ca08b8461524a565b614225565b50505b6000613cb48760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cdf57613cda888884886133f5565b613ceb565b613ceb888884886142a4565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d3457613d3461536b565b60209081029190910101526000613bf87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613fa6565b8215613de65760208310613d9657602083048401935060208381613d9257613d92615623565b0692505b8215613de65760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dd7575050610b37565b50600194909401939182900391015b5b60208210613e085780518455600190930192601f1990910190602001613de7565b8115610b37576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e409291906155e7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e969291906155e7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613f128560200190565b613d6c565b60006020613f2683601f61524a565b613f309190615639565b613f3a908461524a565b90505b808310156104a35760008355600183019250613f3d565b6000613f608585614305565b90506000613f7d828560ff166028026038011c64ffffffffff1690565b90506107718686868460008888614318565b60608383836040516020016136fb9392919061565b565b6060611576613fb6858585613e81565b6000613fdb85613fc68989614305565b9060ff166028026038011c64ffffffffff1690565b6146c2565b600081831180613ff05750835182115b1561402d578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc9392919061569a565b6020840161403b848261524a565b905060006140498585615381565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061290983601560006146e5565b6060816129098160156000614760565b600061409b8585614305565b905060006140b8828560ff166028026038011c64ffffffffff1690565b90506107718686866000858888614318565b61034f82826140d8856147b4565b613054565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106141175761411761536b565b6020908102919091010152600080806141707f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000614839565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61419f8282614941565b61034f57610cc982610d40565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141e5576141e561536b565b602090810291909101015260006115767f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612aac565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061425b5761425b61536b565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161139791815260200190565b60006060836001600160a01b03166142bd848888613f8f565b6040516142ca91906154a7565b600060405180830381855af49150503d806000811461345a576040519150601f19603f3d011682016040523d82523d6000602084013e61345f565b60006129096143148484613e2b565b5490565b613a3160f11b876001600160f01b0319161461434857613a3160f11b8788604051602001610eec91815260200190565b6000614363828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361437c9190615381565b614386919061524a565b90508082141580156143a857508161439e86886156bf565b64ffffffffff1614155b156143f8576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff161115614449576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b6000614456848984614977565b905060006144638b613cfa565b905060005b815181101561452e5760008282815181106144855761448561536b565b602002602001015190506144b16010826affffffffffffffffffffff1916613c0a90919063ffffffff16565b1561452557606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144f297969594939291906156e4565b600060405180830381600087803b15801561450c57600080fd5b505af1158015614520573d6000803e3d6000fd5b505050505b50600101614468565b5064ffffffffff881660005b8a60ff168160ff16101561456d57614561878260ff166028026038011c64ffffffffff1690565b9091019060010161453a565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d6040516145a896959493929190615742565b60405180910390a2508284146145c95760006145c48c8c613e2b565b839055505b60006145d68c8c8c613e81565b90506145ea818a64ffffffffff1689613f01565b5060005b81518110156146b457600082828151811061460b5761460b61536b565b602002602001015190506146376020826affffffffffffffffffffff1916613c0a90919063ffffffff16565b156146ab57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161467897969594939291906156e4565b600060405180830381600087803b15801561469257600080fd5b505af11580156146a6573d6000803e3d6000fd5b505050505b506001016145ee565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261377685858584614a45565b606060006146f38560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161471957614719615623565b04905060405193506020840160208202810160405281855260005b82811015614754578451871c825293870193602090910190600101614734565b50505050509392505050565b825160609060006147718583615394565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614754578051871b83529187019160019190910190602001614793565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161480357507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148307f746273746f72650000000000000000005461626c65730000000000000000000084614b11565b60206000613a3c565b606060006060600061484a856136ba565b9050614857878783614b2d565b93506000614864866128cb565b90508015614936576148768888614305565b935066ffffffffffffff841667ffffffffffffffff81111561489a5761489a614d68565b6040519080825280601f01601f1916602001820160405280156148c4576020820181803683370190505b5092506020830160005b828160ff1610156149335760006148e68b8b84613e81565b90506000614903888460ff166028026038011c64ffffffffff1690565b90506149128260008387614a45565b61491c818561524a565b93505050808061492b9061579e565b9150506148ce565b50505b505093509350939050565b6000614967616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b66565b8061290957506129098383614b66565b600064ffffffffff8211156149bb576040517f7149a3c1000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149ed57808503820191506149f5565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614acc5760208310614a6f57602083048401935060208381614a6b57614a6b615623565b0692505b8215614acc576020839003600081841015614a925750600019600884021c614a9c565b50600019600882021c5b8554600886021b818451168219821617845250818411614abd575050610b37565b50600194909401939182900391015b5b60208210614aee5783548152600190930192601f1990910190602001614acd565b8115610b37576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139fb565b606081600003614b4c5750604080516020810190915260008152612909565b6000614b5885856139e6565b9050612ad9816000856146c2565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b9f57614b9f61536b565b602002602001018181525050826001600160a01b031660001b81600181518110614bcb57614bcb61536b565b60209081029190910101526000614c0b7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612aac565b9050612ad98160f81c90565b600060208284031215614c2957600080fd5b81356001600160e01b03198116811461290957600080fd5b6001600160a01b03811681146109f057600080fd5b60008060408385031215614c6957600080fd5b823591506020830135614c7b81614c41565b809150509250929050565b60008083601f840112614c9857600080fd5b50813567ffffffffffffffff811115614cb057600080fd5b6020830191508360208260051b8501011115614ccb57600080fd5b9250929050565b60008060008060008060008060c0898b031215614cee57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614d2257600080fd5b614d2e8c838d01614c86565b909650945060a08b0135915080821115614d4757600080fd5b50614d548b828c01614c86565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614da757614da7614d68565b604052919050565b600082601f830112614dc057600080fd5b813567ffffffffffffffff811115614dda57614dda614d68565b614ded6020601f19601f84011601614d7e565b818152846020838601011115614e0257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e3457600080fd5b8335614e3f81614c41565b925060208401359150604084013567ffffffffffffffff811115614e6257600080fd5b614e6e86828701614daf565b9150509250925092565b60008060408385031215614e8b57600080fd5b82359150602083013567ffffffffffffffff811115614ea957600080fd5b614eb585828601614daf565b9150509250929050565b600080600060608486031215614ed457600080fd5b833592506020840135614ee681614c41565b915060408401358015158114614efb57600080fd5b809150509250925092565b803560ff811681146136b557600080fd5b600080600060608486031215614f2c57600080fd5b833592506020840135614f3e81614c41565b9150614f4c60408501614f06565b90509250925092565b600080600060608486031215614f6a57600080fd5b83359250602084013567ffffffffffffffff80821115614f8957600080fd5b614f9587838801614daf565b93506040860135915080821115614fab57600080fd5b50614e6e86828701614daf565b60008060408385031215614fcb57600080fd5b8235614fd681614c41565b9150602083013567ffffffffffffffff811115614ea957600080fd5b60006020828403121561500457600080fd5b5035919050565b60008060006060848603121561502057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e6257600080fd5b60006020828403121561505757600080fd5b813561290981614c41565b60005b8381101561507d578181015183820152602001615065565b50506000910152565b6000815180845261509e816020860160208601615062565b601f01601f19169290920160200192915050565b8281526040602082015260006115766040830184615086565b600067ffffffffffffffff808411156150e6576150e6614d68565b8360051b60206150f860208301614d7e565b8681529185019160208101903684111561511157600080fd5b865b848110156151455780358681111561512b5760008081fd5b61513736828b01614daf565b845250918301918301615113565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ad96060830184615086565b6000835161518c818460208801615062565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516151c6816002840160208801615062565b01600201949350505050565b8051602080830151919081101561296a5760001960209190910360031b1b16919050565b6020815260006129096020830184615086565b60408152600061521c6040830185615086565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561032657610326615234565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516152a6816003860160208901615062565b8084019050816003820152845191506152c6826004830160208801615062565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561535e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261534c858351615086565b94509285019290850190600101615312565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561032657610326615234565b808202811582820484141761032657610326615234565b6001600160a01b0384168152826020820152606060408201526000612ad96060830184615086565b60008151808452602080850194506020840160005b83811015615404578151875295820195908201906001016153e8565b509495945050505050565b60808152600061542260808301876153d3565b82810360208401526154348187615086565b90508460408401528281036060840152613b7b8185615086565b86815260c06020820152600061546760c08301886153d3565b82810360408401526154798188615086565b905085606084015282810360808401526154938186615086565b9150508260a0830152979650505050505050565b600082516154b9818460208701615062565b9190910192915050565b60208152600061290960208301846153d3565b8381526060602082015260006154ef60608301856153d3565b9050826040830152949350505050565b82815260406020820152600061157660408301846153d3565b84815260806020820152600061553160808301866153d3565b60ff851660408401528281036060840152613b7b8185615086565b6000835161555e818460208801615062565b835190830190615572818360208801615062565b01949350505050565b60608152600061558e60608301866153d3565b65ffffffffffff8516602084015282810360408401526114ea8185615086565b8481526080602082015260006155c760808301866153d3565b65ffffffffffff851660408401528281036060840152613b7b8185615086565b8281526000602080830184516020860160005b82811015615616578151845292840192908401906001016155fa565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261565657634e487b7160e01b600052601260045260246000fd5b500490565b6000845161566d818460208901615062565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006156ad6060830186615086565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156dd576156dd615234565b5092915050565b87815260e0602082015260006156fd60e08301896153d3565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526157348185615086565b9a9950505050505050505050565b60c08152600061575560c08301896153d3565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a08401526157918185615086565b9998505050505050505050565b600060ff821660ff81036157b4576157b4615234565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b50604051620048d0380380620048d0833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e051610100516147a26200012e60003960008181610701015281816113df01526115530152600061069901526000610631015260006105b00152600050506147a26000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004613f76565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004613fce565b610203565b005b604051601f193601358152602001610096565b6100df610102366004613fce565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610943565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b61029461094d565b61029c610bf5565b6102a4610c76565b6102ac610cda565b6102b4610d56565b6102bc610dba565b6102c4610df7565b6102cc610e73565b6102d4610eef565b6102dc610f83565b6102e4611013565b6102ec61108b565b6102f46110ef565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f9061407f565b600161115d565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b6040516020818303038152906040526103719061407f565b6103796101f4565b611203565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b99061407f565b6103c16101f4565b60016112e0565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea9061407f565b6113a2565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600061073161145f565b905060005b60048110156107bc576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107b491016040516020818303038152906040526107989061407f565b8383600481106107aa576107aa6140a3565b6020020151611544565b600101610736565b5060006107c76115e4565b905060005b6002811015610849576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261084191015b60405160208183030381529060405261082f9061407f565b8383600281106107aa576107aa6140a3565b6001016107cc565b506000610854611635565b905060005b60028110156108b0576040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526108a89101610817565b600101610859565b5060006108bb6116a3565b905060005b600e81101561093c576040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261093491016040516020818303038152906040526109229061407f565b8383600e81106107aa576107aa6140a3565b6001016108c0565b5050505050565b60006101fe6118b4565b6109767f746273746f72650000000000000000005461626c657300000000000000000000611900565b156109f457604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526109eb9291600401614109565b60405180910390fd5b610a1d7f746273746f72650000000000000000005265736f757263654964730000000000611900565b15610a5557604080517f746273746f72650000000000000000005265736f7572636549647300000000006020820181905291016109aa565b610b147f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000632001005f60d81b7e6003025f5f5fc4c40000000000000000000000000000000000000000000000610ac961198d565b604051602001610ad9919061417c565b604051602081830303815290604052610af0611a12565b604051602001610b00919061417c565b604051602081830303815290604052611bda565b610b977f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b632001005f60d81b7e01010060000000000000000000000000000000000000000000000000000000610b70611ca1565b604051602001610b80919061417c565b604051602081830303815290604052610af0611d18565b610bc27f746273746f72650000000000000000005461626c657300000000000000000000600161115d565b610bed7f746273746f72650000000000000000005265736f757263654964730000000000600161115d565b61056c611d8f565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000632001005f60d81b7e14010061000000000000000000000000000000000000000000000000000000610c69611e07565b610c71611e7e565b611ef5565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b632001005f60d81b7e2001001f000000000000000000000000000000000000000000000000000000610cd2611e07565b610c71611fc9565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b7e340200615f00000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610d4e612040565b610c7161210a565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b7e28020061610000000000000000000000000000000000000000000000000000632001005f60d81b610db2612181565b610c7161224b565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b632001005f60d81b80610db2611e07565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b7e3402005f6100000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610e6b6122c2565b610c7161238c565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e15020014010000000000000000000000000000000000000000000000000000632001005f60d81b7e15020061600000000000000000000000000000000000000000000000000000610ee7612403565b610c7161247a565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007e2402005f430000000000000000000000000000000000000000000000000000610f7b612544565b610c716125bb565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c01000000000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007c01c500000000000000000000000000000000000000000000000000000061100b612685565b610c716126fc565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611083612403565b610c71612773565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b7e14010061000000000000000000000000000000000000000000000000000000632001005f60d81b6110e76127ea565b610c71612403565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000060007e14010061000000000000000000000000000000000000000000000000000000611083612861565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611193576111936140a3565b6020026020010181815250506111fe7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016111e191151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612894565b505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611239576112396140a3565b6020026020010181815250506111fe7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016112ab919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612894565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611315576113156140a3565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061134e5761134e6140a3565b60200260200101818152505061139c7f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016111e191151560f81b815260010190565b50505050565b6111fe6113ad6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a9000000000000000000000000000000000000000000000000000000001790526128a9565b611467613f1b565b60405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c616464726573732900000081525081526020016040518060600160405280602281526020016147746022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905090565b6111fe61154f6101f4565b60007f00000000000000000000000000000000000000000000000000000000000000008585866040516024016115879392919061418f565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6548a90a000000000000000000000000000000000000000000000000000000001790526128a9565b6115ec613f42565b60405180604001604052806040518060600160405280603381526020016147186033913981526020016040518060600160405280603181526020016145e7603191399052919050565b61163d613f42565b60405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614673602891399052919050565b6116ab613f5b565b604051806101c001604052806040518060400160405280601c81526020017f696e7374616c6c4d6f64756c6528616464726573732c62797465732900000000815250815260200160405180606001604052806040815260200161453260409139815260200160405180606001604052806028815260200161461860289139815260200160405180606001604052806024815260200161450e6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d657370616365286279746573333229000000000000815250815260200160405180606001604052806029815260200161474b60299139815260200160405180606001604052806025815260200161469b6025913981526020016040518060600160405280602481526020016145c360249139815260200160405180606001604052806028815260200161459b6028913981526020016040518060600160405280603381526020016146406033913981526020016040518060600160405280602981526020016145726029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e28616464726573732900000081525081526020016040518060600160405280603281526020016146e66032913981526020016040518060600160405280602681526020016146c0602691399052919050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806118fb573391505090565b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611939576119396140a3565b602090810291909101015260006119797f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b6128d6565b90506119858160f81c90565b949350505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816119a45790505090506040518060400160405280600781526020017f7461626c6549640000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a2a5790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a8a57611a8a6140a3565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ade57611ade6140a3565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b3257611b326140a3565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b8657611b866140a3565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110611a0457611a046140a3565b6000611be786868661290c565b90506000611bf58484612942565b90506000611c038585612962565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c3d57611c3d6140a3565b6020908102919091010152611c957f746273746f72650000000000000000005461626c657300000000000000000000828686867e6003022020200000000000000000000000000000000000000000000000000061298e565b50505050505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cb85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d2f5790505090506040518060400160405280600681526020017f657869737473000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611dff61198d565b610c71612ccf565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e1e5790505090506040518060400160405280600b81526020017f6e616d657370616365496400000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e955790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6000611eff6118b4565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f3157611f2c878787878787612d46565b611fc0565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611f8d908a908a908a908a908a908a906004016141ba565b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050505b50505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611fe05790505090506040518060400160405280600781526020017f62616c616e63650000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816120565790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106120b6576120b66140a3565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e7473486173680000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816121215790505090506040518060400160405280600b81526020017f6973496e7374616c6c656400000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816121975790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106121f7576121f76140a3565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816122625790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c49640000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816122d85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110612338576123386140a3565b60200260200101819052506040518060400160405280600681526020017f63616c6c6572000000000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816123a35790505090506040518060400160405280600681526020017f616363657373000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161241a5790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816124905790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106124f0576124f06140a3565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161255b5790505090506040518060400160405280601581526020017f776f726c6446756e6374696f6e53656c6563746f72000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816125d15790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110612631576126316140a3565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161269c5790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f720000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816127135790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e617475726500000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161278a5790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816128015790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160008082526020820190925260609161288e565b60608152602001906001900390816128795790505b50905090565b61093c85856128a38487613182565b856131bb565b60606000806128ba87878787613456565b91509150816128cc576128cc816134d7565b9695505050505050565b60006129036128e586866134df565b60ff858116601b0360080285901c166128fe8587613182565b613535565b95945050505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612977929190614204565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612a1a57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612a0d949392919061426f565b60405180910390a2612cc7565b6000612a2587613586565b905060005b8151811015612afe576000828281518110612a4757612a476140a3565b60200260200101519050612a736001826affffffffffffffffffffff191661360f90919063ffffffff16565b15612af5576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612ac2908c908c908c908c908c908c906004016142b9565b600060405180830381600087803b158015612adc57600080fd5b505af1158015612af0573d6000803e3d6000fd5b505050505b50600101612a2a565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612b35949392919061426f565b60405180910390a26000612b4988886134df565b90506000602087019050612b6182600089518461362d565b6000612b6c856136ec565b1115612bf0576000612b7e8a8a613729565b878155905060208601915060008060005b612b98886136ec565b8160ff161015612beb57612bad8d8d8361377f565b9250612bc88a8260ff166028026038011c64ffffffffff1690565b9150612bd7836000848861362d565b612be18286614328565b9450600101612b8f565b505050505b60005b8351811015611c95576000848281518110612c1057612c106140a3565b60200260200101519050612c3c6002826affffffffffffffffffffff191661360f90919063ffffffff16565b15612cbe576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612c8b908e908e908e908e908e908e906004016142b9565b600060405180830381600087803b158015612ca557600080fd5b505af1158015612cb9573d6000803e3d6000fd5b505050505b50600101612bf3565b505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ce65790505090506040518060400160405280600581526020017f686f6f6b7300000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dda57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e56577f74620000000000000000000000000000000000000000000000000000000000008687604051602001612e1491815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526109eb93929160040161433b565b612e5f856137ff565b612e6a846001613a46565b612e75836000613a46565b60e084901c60e885901c0160ff16825114612ed55760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff16815114612f355760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612fad5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b612fb685613be2565b612fbf84613be2565b1461301157612fcd85613be2565b612fd684613be2565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b61301a856136ec565b613023846136ec565b1461307557613031856136ec565b61303a846136ec565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60005b61308186613be2565b81101561311c576130ab6130958583613bf4565b60c58111156130a6576130a661437c565b613c15565b6008601b8390030287901c60ff1614613114576008601b8290030286901c60ff166130d96130958684613bf4565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b600101613078565b5061312686611900565b1561313f5785866040516020016109aa91815260200190565b6131778686868686604051602001613157919061417c565b60405160208183030381529060405286604051602001610b00919061417c565b612cc786600161115d565b600080805b8360ff168110156131b3576131a960ff601b83900360080287901c1683614328565b9150600101613187565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361324557837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161323893929190614392565b60405180910390a261139c565b600061325185856134df565b9050600061325e86613586565b905060005b8151811015613333576000828281518110613280576132806140a3565b602002602001015190506132ac6004826affffffffffffffffffffff191661360f90919063ffffffff16565b1561332a576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906132f7908b908b908b908b906004016143c5565b600060405180830381600087803b15801561331157600080fd5b505af1158015613325573d6000803e3d6000fd5b505050505b50600101613263565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161336893929190614392565b60405180910390a2613383828565ffffffffffff1685613c75565b60005b8151811015611fc05760008282815181106133a3576133a36140a3565b602002602001015190506133cf6008826affffffffffffffffffffff191661360f90919063ffffffff16565b1561344d576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061341a908b908b908b908b906004016143c5565b600060405180830381600087803b15801561343457600080fd5b505af1158015613448573d6000803e3d6000fd5b505050505b50600101613386565b600060608373ffffffffffffffffffffffffffffffffffffffff1661347c848888613c8b565b60405161348991906143fe565b600060405180830381855af49150503d80600081146134c4576040519150601f19603f3d011682016040523d82523d6000602084013e6134c9565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016134f492919061441a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061355b5760208204840193506020828161355757613557614456565b0691505b508254600882021b6020829003808411156131b3576001850154600882021c82179150509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106135c0576135c06140a3565b602090810291909101015260006135f87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613ca2565b905061198561360a8260008451613cdc565b613d6a565b60008160ff16826136208560581c90565b1660ff1614905092915050565b82156136a757602083106136575760208304840193506020838161365357613653614456565b0692505b82156136a75760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161369857505061139c565b50600194909401939182900391015b5b602082106136c95780518455600190930192601f19909101906020016136a8565b811561139c576000600019600884021c8554835182191691161785555050505050565b600060086001806136ff6002602061446c565b613709919061446c565b613713919061446c565b61371d919061447f565b8260ff911c1692915050565b6000828260405160200161373e92919061441a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161379492919061441a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613836576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613841826136ec565b90506005811115613888576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016109eb565b600061389383613be2565b905060006138a18383614328565b9050601c8111156138e8576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016109eb565b6000805b838110156139935760ff601b82900360080287901c166000819003613940576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b602081111561397e576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b6139888184614328565b9250506001016138ec565b5061399d85613d7b565b81146139e9576139ac85613d7b565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109eb565b825b601c811015612cc75760ff601b82900360080287901c168015613a3d576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b506001016139eb565b80158015613a52575081155b15613a735760405163d498615960e01b8152600060048201526024016109eb565b6000613a7e836136ec565b90506005811115613aa55760405163d498615960e01b8152600481018290526024016109eb565b6000613ab084613be2565b90506000613abe8383614328565b9050601c811115613ae55760405163d498615960e01b8152600481018290526024016109eb565b6000805b83811015613b51576000613b006130958984613bf4565b905080600003613b3c576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b468184614328565b925050600101613ae9565b50613b5b86613d7b565b8114613b8657613b6a86613d7b565b60405163d498615960e01b81526004016109eb91815260200190565b825b82811015611fc0576000613b9f6130958984613bf4565b90508015613bd9576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101613b88565b6000600860016137096002602061446c565b6000601b8290036008028360ff911c1660c581111561295b5761295b61437c565b6000808260c5811115613c2a57613c2a61437c565b60ff1690506061811015613c4457601f1660010192915050565b60618360c5811115613c5857613c5861437c565b03613c665750601492915050565b50600092915050565b50919050565b6111fe83838351613c868560200190565b61362d565b606083838360405160200161292a93929190614496565b6060611985613cb285858561377f565b6000613cd785613cc28989613d9e565b9060ff166028026038011c64ffffffffff1690565b613db1565b600081831180613cec5750835182115b15613d29578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016109eb939291906144e8565b60208401613d378482614328565b90506000613d45858561446c565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061295b8360156000613dd4565b60006008613d8b6002602061446c565b613d95919061447f565b9190911c919050565b600061295b613dad8484613729565b5490565b60405160208101601f19603f84840101166040528282526131b385858584613e4f565b60606000613de28560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281613e0857613e08614456565b04905060405193506020840160208202810160405281855260005b82811015613e43578451871c825293870193602090910190600101613e23565b50505050509392505050565b8215613ed65760208310613e7957602083048401935060208381613e7557613e75614456565b0692505b8215613ed6576020839003600081841015613e9c5750600019600884021c613ea6565b50600019600882021c5b8554600886021b818451168219821617845250818411613ec757505061139c565b50600194909401939182900391015b5b60208210613ef85783548152600190930192601f1990910190602001613ed7565b811561139c576000600019600884021c8251865482191691161782525050505050565b60405180608001604052806004905b6060815260200190600190039081613f2a5790505090565b6040805180820190915260608152600160208201613f2a565b604080516101c0810190915260608152600d60208201613f2a565b600060208284031215613f8857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461295b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215613fe057600080fd5b813567ffffffffffffffff80821115613ff857600080fd5b818401915084601f83011261400c57600080fd5b81358181111561401e5761401e613fb8565b604051601f8201601f19908116603f0116810190838211818310171561404657614046613fb8565b8160405282815287602084870101111561405f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613c6f5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156140d45781810151838201526020016140bc565b50506000910152565b600081518084526140f58160208601602086016140b9565b601f01601f19169290920160200192915050565b82815260406020820152600061198560408301846140dd565b60008282518085526020808601955060208260051b8401016020860160005b8481101561416f57601f1986840301895261415d8383516140dd565b98840198925090830190600101614141565b5090979650505050505050565b60208152600061295b6020830184614122565b8381526060602082015260006141a860608301856140dd565b82810360408401526128cc81856140dd565b86815285602082015284604082015283606082015260c0608082015260006141e560c0830185614122565b82810360a08401526141f78185614122565b9998505050505050505050565b600083516142168184602088016140b9565b83519083019061422a8183602088016140b9565b01949350505050565b60008151808452602080850194506020840160005b8381101561426457815187529582019590820190600101614248565b509495945050505050565b6080815260006142826080830187614233565b828103602084015261429481876140dd565b905084604084015282810360608401526142ae81856140dd565b979650505050505050565b86815260c0602082015260006142d260c0830188614233565b82810360408401526142e481886140dd565b905085606084015282810360808401526142fe81866140dd565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee614312565b7fffff0000000000000000000000000000000000000000000000000000000000008416815282602082015260606040820152600061290360608301846140dd565b634e487b7160e01b600052602160045260246000fd5b6060815260006143a56060830186614233565b65ffffffffffff8516602084015282810360408401526128cc81856140dd565b8481526080602082015260006143de6080830186614233565b65ffffffffffff8516604084015282810360608401526142ae81856140dd565b600082516144108184602087016140b9565b9190910192915050565b8281526000602080830184516020860160005b828110156144495781518452928401929084019060010161442d565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b818103818111156101ee576101ee614312565b80820281158282048414176101ee576101ee614312565b600084516144a88184602089016140b9565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b6060815260006144fb60608301866140dd565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c737472696e6729626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:210:-:0;;;1572:26:113;;;1594:4;-1:-1:-1;;1572:26:113;;;;;;;;3126:44:116;;;;;;;;;;;228:9:0;186:51;;1729:98:210;-1:-1:-1;;;;;;;;;1729:25:210;:98::i;:::-;1695:132;;1831:38;;;-1:-1:-1;;;;;;1831:38:210;;;1867:1;1831:38;;;;1873;;;;;;1909:1;1873:38;;;1555:5875;;;;;;;;;;;;1046:257:65;1133:10;1262:26;438:6;451:5:20;1262:26:65;:::i;:::-;-1:-1:-1;;;;;;1189:15:65;;-1:-1:-1;;;;;;;451:5:20;1208:31:65;;;;1189:51;-1:-1:-1;;;;;;1244:13:65;;:45;;;1189:101;;-1:-1:-1;1046:257:65;;;;;:::o;14:222:214:-;79:9;;;100:10;;;97:133;;;152:10;147:3;143:20;140:1;133:31;187:4;184:1;177:15;215:4;212:1;205:15;97:133;14:222;;;;:::o;:::-;1555:5875:210;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a696040518060600160405280602881526020016201f6886028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f6040518060600160405280602181526020016201f63f6021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a81526020016201f6b0602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd96040518060600160405280602881526020016201f6606028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b617292806200376083390190565b611668806200a9f283390190565b61028c806200c05a83390190565b61535f806200c2e683390190565b611c68806201164583390190565b61178f80620132ad83390190565b610b388062014a3c83390190565b6157fb806201557483390190565b6148d0806201ad6f83390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b6119f38062002c7e83390190565b61192d806200467183390190565b6112f48062005f9e83390190565b60805160a05160c05160e051612b596200012560003960006106130152600061049101526000610310015260005050612b596000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004612628565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004612680565b610203565b005b604051601f193601358152602001610096565b6100df610102366004612680565b610235565b6100a76106e9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe6106f3565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061023f6106e9565b9050610249610725565b6102516107c0565b61025961084c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526102ee90612731565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161038c9250612779565b600060405180830381855af49150503d80600081146103c7576040519150601f19603f3d011682016040523d82523d6000602084013e6103cc565b606091505b5091509150816103df576103df816108e0565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261046f90612731565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161050d9250612779565b600060405180830381855af49150503d8060008114610548576040519150601f19603f3d011682016040523d82523d6000602084013e61054d565b606091505b5090925090508161056157610561816108e0565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105f190612731565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161068f9250612779565b600060405180830381855af49150503d80600081146106ca576040519150601f19603f3d011682016040523d82523d6000602084013e6106cf565b606091505b509092509050816106e3576106e3816108e0565b50505050565b60006101fe6108e8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107225750335b90565b6107be7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e200100200000000000000000000000000000000000000000000000000000007e68040061615f5f0000000000000000000000000000000000000000000000007e2001001f0000000000000000000000000000000000000000000000000000006107b16108f2565b6107b9610a74565b610aeb565b565b6107be7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000007e48030061615f000000000000000000000000000000000000000000000000007e2001001f0000000000000000000000000000000000000000000000000000006107b1610bbf565b6107be7f7462000000000000000000000000000054696d65626f756e6444656c656761747e200100200000000000000000000000000000000000000000000000000000007e280200616100000000000000000000000000000000000000000000000000007e2001001f0000000000000000000000000000000000000000000000000000006108d8610cdf565b6107b9610da9565b805160208201fd5b60006101fe610e20565b60408051600480825260a08201909252606091816020015b606081526020019060019003908161090a5790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061096a5761096a612795565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106109be576109be612795565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610a1257610a12612795565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610a6657610a66612795565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610a8b5790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610a6657610a66612795565b6000610af5610e20565b90503073ffffffffffffffffffffffffffffffffffffffff821603610b2757610b22878787878787610e6c565b610bb6565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610b83908a908a908a908a908a908a90600401612831565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050505b50505050505050565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610bd75790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610c3757610c37612795565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610c8b57610c8b612795565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610a6657610a66612795565b6040805160028082526060828101909352816020015b6060815260200190600190039081610cf55790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610d5557610d55612795565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610a6657610a66612795565b604080516001808252818301909252606091816020015b6060815260200190600190039081610dc05790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610a6657610a66612795565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e67573391505090565b919050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614801590610f0057507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610f85577f74620000000000000000000000000000000000000000000000000000000000008687604051602001610f3a91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610f7c93929160040161287b565b60405180910390fd5b610f8e8561130e565b610f99846001611555565b610fa4836000611555565b60e084901c60e885901c0160ff168251146110045760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b60e085901c60e886901c0160ff168151146110645760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110dc5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b6110e5856116f1565b6110ee846116f1565b14611140576110fc856116f1565b611105846116f1565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b61114985611723565b61115284611723565b146111a45761116085611723565b61116984611723565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b60005b6111b0866116f1565b81101561124b576111da6111c48583611740565b60c58111156111d5576111d56128bc565b611768565b6008601b8390030287901c60ff1614611243576008601b8290030286901c60ff166112086111c48684611740565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610f7c565b6001016111a7565b50611255866117c8565b156112af57858660405160200161126e91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610f7c92916004016128d2565b6112fb86868686866040516020016112c791906128eb565b604051602081830303815290604052866040516020016112e791906128eb565b60405160208183030381529060405261186d565b611306866001611950565b505050505050565b80611345576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061135082611723565b90506005811115611397576040517f6793df620000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610f7c565b60006113a2836116f1565b905060006113b08383612914565b9050601c8111156113f7576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610f7c565b6000805b838110156114a25760ff601b82900360080287901c16600081900361144f576040517f53b2dd0500000000000000000000000000000000000000000000000000000000815260048101839052602401610f7c565b602081111561148d576040517f7237f23700000000000000000000000000000000000000000000000000000000815260048101839052602401610f7c565b6114978184612914565b9250506001016113fb565b506114ac85611a0e565b81146114f8576114bb85611a0e565b6040517feba964de000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610f7c565b825b601c8110156113065760ff601b82900360080287901c16801561154c576040517f1d8d44db00000000000000000000000000000000000000000000000000000000815260048101839052602401610f7c565b506001016114fa565b80158015611561575081155b156115825760405163d498615960e01b815260006004820152602401610f7c565b600061158d83611723565b905060058111156115b45760405163d498615960e01b815260048101829052602401610f7c565b60006115bf846116f1565b905060006115cd8383612914565b9050601c8111156115f45760405163d498615960e01b815260048101829052602401610f7c565b6000805b8381101561166057600061160f6111c48984611740565b90508060000361164b576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116558184612914565b9250506001016115f8565b5061166a86611a0e565b81146116955761167986611a0e565b60405163d498615960e01b8152600401610f7c91815260200190565b825b82811015610bb65760006116ae6111c48984611740565b905080156116e8576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611697565b60006008600161170360026020612927565b61170d9190612927565b611717919061293a565b8260ff911c1692915050565b6000600860018061173660026020612927565b6117039190612927565b6000601b8290036008028360ff911c1660c5811115611761576117616128bc565b9392505050565b6000808260c581111561177d5761177d6128bc565b60ff169050606181101561179757601f1660010192915050565b60618360c58111156117ab576117ab6128bc565b036117b95750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061180157611801612795565b602090810291909101015260006118597f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611a31565b90506118658160f81c90565b949350505050565b6040805160208101879052808201869052606080820186905282518083039091018152608090910190915260006118a48484611a67565b905060006118b28585611a84565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106118ec576118ec612795565b60209081029190910101526119447f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611ab0565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061198657611986612795565b602002602001018181525050611a097f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119d491151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611de9565b505050565b60006008611a1e60026020612927565b611a28919061293a565b9190911c919050565b6000611a5e611a408686611e05565b60ff858116601b0360080285901c16611a598587611e5b565b611e94565b95945050505050565b8151815160009181810160389190911b1760609190911b17611761565b60608282604051602001611a99929190612951565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611b3c57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611b2f94939291906129bc565b60405180910390a2611306565b6000611b4787611ee5565b905060005b8151811015611c20576000828281518110611b6957611b69612795565b60200260200101519050611b956001826affffffffffffffffffffff1916611f6e90919063ffffffff16565b15611c17576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611be4908c908c908c908c908c908c90600401612a06565b600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b505050505b50600101611b4c565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611c5794939291906129bc565b60405180910390a26000611c6b8888611e05565b90506000602087019050611c83826000895184611f8c565b6000611c8e85611723565b1115611d12576000611ca08a8a61204b565b878155905060208601915060008060005b611cba88611723565b8160ff161015611d0d57611ccf8d8d836120a1565b9250611cea8a8260ff166028026038011c64ffffffffff1690565b9150611cf98360008488611f8c565b611d038286612914565b9450600101611cb1565b505050505b60005b8351811015611944576000848281518110611d3257611d32612795565b60200260200101519050611d5e6002826affffffffffffffffffffff1916611f6e90919063ffffffff16565b15611de0576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611dad908e908e908e908e908e908e90600401612a06565b600060405180830381600087803b158015611dc757600080fd5b505af1158015611ddb573d6000803e3d6000fd5b505050505b50600101611d15565b611dfe8585611df88487611e5b565b85612121565b5050505050565b60008282604051602001611e1a929190612a5f565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611e8c57611e8260ff601b83900360080287901c1683612914565b9150600101611e60565b509392505050565b600060208210611eba57602082048401935060208281611eb657611eb6612a9b565b0691505b508254600882021b602082900380841115611e8c576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611f1f57611f1f612795565b60209081029190910101526000611f577f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836123bc565b9050611865611f6982600084516123f6565b612484565b60008160ff1682611f7f8560581c90565b1660ff1614905092915050565b82156120065760208310611fb657602083048401935060208381611fb257611fb2612a9b565b0692505b82156120065760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611ff75750506106e3565b50600194909401939182900391015b5b602082106120285780518455600190930192601f1990910190602001612007565b81156106e3576000600019600884021c8554835182191691161785555050505050565b60008282604051602001612060929190612a5f565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016120b6929190612a5f565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121ab57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219e93929190612ab1565b60405180910390a26106e3565b60006121b78585611e05565b905060006121c486611ee5565b905060005b81518110156122995760008282815181106121e6576121e6612795565b602002602001015190506122126004826affffffffffffffffffffff1916611f6e90919063ffffffff16565b15612290576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061225d908b908b908b908b90600401612aee565b600060405180830381600087803b15801561227757600080fd5b505af115801561228b573d6000803e3d6000fd5b505050505b506001016121c9565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122ce93929190612ab1565b60405180910390a26122e9828565ffffffffffff1685612495565b60005b8151811015610bb657600082828151811061230957612309612795565b602002602001015190506123356008826affffffffffffffffffffff1916611f6e90919063ffffffff16565b156123b3576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612380908b908b908b908b90600401612aee565b600060405180830381600087803b15801561239a57600080fd5b505af11580156123ae573d6000803e3d6000fd5b505050505b506001016122ec565b60606118656123cc8585856120a1565b60006123f1856123dc89896124ab565b9060ff166028026038011c64ffffffffff1690565b6124be565b6000818311806124065750835182115b15612443578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610f7c93929190612b27565b602084016124518482612914565b9050600061245f8585612927565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061176183601560006124e1565b611a09838383516124a68560200190565b611f8c565b60006117616124ba848461204b565b5490565b60405160208101601f19603f8484010116604052828252611e8c8585858461255c565b606060006124ef8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161251557612515612a9b565b04905060405193506020840160208202810160405281855260005b82811015612550578451871c825293870193602090910190600101612530565b50505050509392505050565b82156125e357602083106125865760208304840193506020838161258257612582612a9b565b0692505b82156125e35760208390036000818410156125a95750600019600884021c6125b3565b50600019600882021c5b8554600886021b8184511682198216178452508184116125d45750506106e3565b50600194909401939182900391015b5b602082106126055783548152600190930192601f19909101906020016125e4565b81156106e3576000600019600884021c8251865482191691161782525050505050565b60006020828403121561263a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461176157600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561269257600080fd5b813567ffffffffffffffff808211156126aa57600080fd5b818401915084601f8301126126be57600080fd5b8135818111156126d0576126d061266a565b604051601f8201601f19908116603f011681019083821181831017156126f8576126f861266a565b8160405282815287602084870101111561271157600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156117c25760001960209190910360031b1b16919050565b60005b83811015612770578181015183820152602001612758565b50506000910152565b6000825161278b818460208701612755565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600081518084526127c3816020860160208601612755565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561282457601f198684030189526128128383516127ab565b988401989250908301906001016127f6565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061285c60c08301856127d7565b82810360a084015261286e81856127d7565b9998505050505050505050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611a5e60608301846127ab565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061186560408301846127ab565b60208152600061176160208301846127d7565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6128fe565b818103818111156101ee576101ee6128fe565b80820281158282048414176101ee576101ee6128fe565b60008351612963818460208801612755565b835190830190612977818360208801612755565b01949350505050565b60008151808452602080850194506020840160005b838110156129b157815187529582019590820190600101612995565b509495945050505050565b6080815260006129cf6080830187612980565b82810360208401526129e181876127ab565b905084604084015282810360608401526129fb81856127ab565b979650505050505050565b86815260c060208201526000612a1f60c0830188612980565b8281036040840152612a3181886127ab565b90508560608401528281036080840152612a4b81866127ab565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612a8e57815184529284019290840190600101612a72565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612ac46060830186612980565b65ffffffffffff851660208401528281036040840152612ae481856127ab565b9695505050505050565b848152608060208201526000612b076080830186612980565b65ffffffffffff8516604084015282810360608401526129fb81856127ab565b606081526000612b3a60608301866127ab565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506119d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a61008536600461152b565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611627565b6101f6565b6100e56100e036600461167e565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b87856103dc565b600192505050610261565b801561025a5760001901610231866102526101e7565b8785856104c7565b6000925050505b9392505050565b6102836102736101e7565b85858580519060200120856104c7565b50505050565b60006101f16105fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376116dd565b6020026020010181815250508381600281518110610357576103576116dd565b6020026020010181815250508281600381518110610377576103776116dd565b602090810291909101015260006103cf7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610606565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061041f5761041f6116dd565b602002602001018181525050836001600160a01b031660001b8160018151811061044b5761044b6116dd565b602002602001018181525050828160028151811061046b5761046b6116dd565b602002602001018181525050818160038151811061048b5761048b6116dd565b60209081029190910101526104c07f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106c3565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061050a5761050a6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610536576105366116dd565b6020026020010181815250508381600281518110610556576105566116dd565b6020026020010181815250508281600381518110610576576105766116dd565b6020026020010181815250506105f47f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105bf91815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061076c565b505050505050565b60006101f1610821565b600080610611610821565b9050306001600160a01b038216036106375761062f86868686610860565b9150506103d4565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061068290899089908990899060040161172f565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061175e565b60006106cd610821565b9050306001600160a01b038216036106ee576106e98383610896565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906107359086908690600401611777565b600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050505050565b6000610776610821565b9050306001600160a01b0382160361079a5761079586868686866108ad565b6105f4565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906107e790899089908990899089906004016117d6565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061085b573391505090565b919050565b600061088d61086f86866108c2565b60ff858116601b0360080285901c166108888587610918565b610951565b95945050505050565b6108a982826108a4856109a2565b610a27565b5050565b6104c085856108bc8487610918565b85610d26565b600082826040516020016108d792919061181d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109495761093f60ff601b83900360080287901c168361186f565b915060010161091d565b509392505050565b6000602082106109775760208204840193506020828161097357610973611882565b0691505b508254600882021b602082900380841115610949576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016109f157507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1610a1e7f746273746f72650000000000000000005461626c65730000000000000000000084610fc1565b60206000610951565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610aad57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610aa09190611898565b60405180910390a2505050565b6000610ab884610fdd565b905060005b8151811015610b8b576000828281518110610ada57610ada6116dd565b60200260200101519050610b066040826affffffffffffffffffffff191661106690919063ffffffff16565b15610b82576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b4f908990899089906004016118ab565b600060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050505b50600101610abd565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bbc9190611898565b60405180910390a26000610bd085856108c2565b9050610c29816000610be186611084565b67ffffffffffffffff811115610bf957610bf9611584565b6040519080825280601f01601f191660200182016040528015610c23576020820181803683370190505b506110a7565b6000610c34846110bd565b1115610c55576000610c4686866110fa565b9050610c53816020611150565b505b60005b82518110156105f4576000838281518110610c7557610c756116dd565b60200260200101519050610ca16080826affffffffffffffffffffff191661106690919063ffffffff16565b15610d1d576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610cea908a908a908a906004016118ab565b600060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050505b50600101610c58565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610db057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610da3939291906118d4565b60405180910390a2610283565b6000610dbc85856108c2565b90506000610dc986610fdd565b905060005b8151811015610e9e576000828281518110610deb57610deb6116dd565b60200260200101519050610e176004826affffffffffffffffffffff191661106690919063ffffffff16565b15610e95576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e62908b908b908b908b90600401611911565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505050505b50600101610dce565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610ed3939291906118d4565b60405180910390a2610eee828565ffffffffffff16856110a7565b60005b8151811015610763576000828281518110610f0e57610f0e6116dd565b60200260200101519050610f3a6008826affffffffffffffffffffff191661106690919063ffffffff16565b15610fb8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f85908b908b908b908b90600401611911565b600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b505050505b50600101610ef1565b60408051602081018490529081018290526000906060016108d7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611017576110176116dd565b6020908102919091010152600061104f7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361118d565b90506103d461106182600084516111c7565b61125e565b60008160ff16826110778560581c90565b1660ff1614905092915050565b6000600861109460026020611955565b61109e9190611968565b9190911c919050565b6106e9838383516110b88560200190565b61126f565b600060086001806110d060026020611955565b6110da9190611955565b6110e49190611955565b6110ee9190611968565b8260ff911c1692915050565b6000828260405160200161110f92919061181d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061115f83601f61186f565b611169919061197f565b611173908461186f565b90505b808310156106e95760008355600183019250611176565b60606103d461119d85858561132e565b60006111c2856111ad89896113ae565b9060ff166028026038011c64ffffffffff1690565b6113c1565b6000818311806111d75750835182115b1561121d578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401611214939291906119a1565b60405180910390fd5b6020840161122b848261186f565b905060006112398585611955565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006113e4565b82156112e957602083106112995760208304840193506020838161129557611295611882565b0692505b82156112e95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112da575050610283565b50600194909401939182900391015b5b6020821061130b5780518455600190930192601f19909101906020016112ea565b8115610283576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161134392919061181d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102616113bd84846110fa565b5490565b60405160208101601f19603f84840101166040528282526109498585858461145f565b606060006113f28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161141857611418611882565b04905060405193506020840160208202810160405281855260005b82811015611453578451871c825293870193602090910190600101611433565b50505050509392505050565b82156114e657602083106114895760208304840193506020838161148557611485611882565b0692505b82156114e65760208390036000818410156114ac5750600019600884021c6114b6565b50600019600882021c5b8554600886021b8184511682198216178452508184116114d7575050610283565b50600194909401939182900391015b5b602082106115085783548152600190930192601f19909101906020016114e7565b8115610283576000600019600884021c8251865482191691161782525050505050565b60006020828403121561153d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b038116811461085b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115ab57600080fd5b813567ffffffffffffffff808211156115c6576115c6611584565b604051601f8301601f19908116603f011681019082821181831017156115ee576115ee611584565b8160405283815286602085880101111561160757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561163c57600080fd5b6116458461156d565b925060208401359150604084013567ffffffffffffffff81111561166857600080fd5b6116748682870161159a565b9150509250925092565b6000806000806080858703121561169457600080fd5b61169d8561156d565b935060208501359250604085013567ffffffffffffffff8111156116c057600080fd5b6116cc8782880161159a565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561172457815187529582019590820190600101611708565b509495945050505050565b84815260806020820152600061174860808301866116f3565b60ff949094166040830152506060015292915050565b60006020828403121561177057600080fd5b5051919050565b8281526040602082015260006103d460408301846116f3565b6000815180845260005b818110156117b65760208185018101518683018201520161179a565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117ef60a08301876116f3565b60ff86166040840152828103606084015261180a8186611790565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561184c57815184529284019290840190600101611830565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611859565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846116f3565b8381526060602082015260006118c460608301856116f3565b9050826040830152949350505050565b6060815260006118e760608301866116f3565b65ffffffffffff8516602084015282810360408401526119078185611790565b9695505050505050565b84815260806020820152600061192a60808301866116f3565b65ffffffffffff85166040840152828103606084015261194a8185611790565b979650505050505050565b818103818111156101e1576101e1611859565b80820281158282048414176101e1576101e1611859565b60008261199c57634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006119b46060830186611790565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061190d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046114b4565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611523565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046115ee565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103a3565b6001915050610254565b801561024e5760001901610227856102476101e7565b868461046d565b60009150505b9392505050565b61026e6102666101e7565b84848461046d565b505050565b60006101f1610581565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f5611621565b602002602001018181525050836001600160a01b031660001b8160018151811061032157610321611621565b602002602001018181525050828160028151811061034157610341611621565b602090810291909101015260006103997f7462000000000000000000000000000053797374656d626f756e6444656c656783837e2001002000000000000000000000000000000000000000000000000000000061058b565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b816000815181106103e6576103e6611621565b602002602001018181525050826001600160a01b031660001b8160018151811061041257610412611621565b602002602001018181525050818160028151811061043257610432611621565b60209081029190910101526104677f7462000000000000000000000000000053797374656d626f756e6444656c656782610650565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104b0576104b0611621565b602002602001018181525050836001600160a01b031660001b816001815181106104dc576104dc611621565b60200260200101818152505082816002815181106104fc576104fc611621565b60200260200101818152505061057a7f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161054591815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006106f4565b5050505050565b60006101f16107aa565b6000806105966107aa565b9050306001600160a01b038216036105bc576105b4868686866107e9565b915050610648565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610607908990899089908990600401611673565b602060405180830381865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906116a2565b949350505050565b600061065a6107aa565b9050306001600160a01b038216036106765761026e838361081f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106bd90869086906004016116bb565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050565b60006106fe6107aa565b9050306001600160a01b038216036107225761071d8686868686610836565b6107a2565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061076f908990899089908990899060040161171a565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806107e4573391505090565b919050565b60006108166107f8868661084b565b60ff858116601b0360080285901c1661081185876108a1565b6108da565b95945050505050565b610832828261082d8561092b565b6109b0565b5050565b61057a858561084584876108a1565b85610caf565b60008282604051602001610860929190611761565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108d2576108c860ff601b83900360080287901c16836117b3565b91506001016108a6565b509392505050565b600060208210610900576020820484019350602082816108fc576108fc6117c6565b0691505b508254600882021b6020829003808411156108d2576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161097a57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e16109a77f746273746f72650000000000000000005461626c65730000000000000000000084610f4a565b602060006108da565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610a3657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610a2991906117dc565b60405180910390a2505050565b6000610a4184610f66565b905060005b8151811015610b14576000828281518110610a6357610a63611621565b60200260200101519050610a8f6040826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610b0b576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610ad8908990899089906004016117ef565b600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050505b50600101610a46565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610b4591906117dc565b60405180910390a26000610b59858561084b565b9050610bb2816000610b6a8661100d565b67ffffffffffffffff811115610b8257610b8261150d565b6040519080825280601f01601f191660200182016040528015610bac576020820181803683370190505b50611030565b6000610bbd84611046565b1115610bde576000610bcf8686611083565b9050610bdc8160206110d9565b505b60005b82518110156107a2576000838281518110610bfe57610bfe611621565b60200260200101519050610c2a6080826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610ca6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610c73908a908a908a906004016117ef565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505b50600101610be1565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d3957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d2c93929190611818565b60405180910390a2610467565b6000610d45858561084b565b90506000610d5286610f66565b905060005b8151811015610e27576000828281518110610d7457610d74611621565b60200260200101519050610da06004826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610e1e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610deb908b908b908b908b9060040161184b565b600060405180830381600087803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b505050505b50600101610d57565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5c93929190611818565b60405180910390a2610e77828565ffffffffffff1685611030565b60005b81518110156106eb576000828281518110610e9757610e97611621565b60200260200101519050610ec36008826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610f41576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0e908b908b908b908b9060040161184b565b600060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050505b50600101610e7a565b6040805160208101849052908101829052600090606001610860565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fa057610fa0611621565b60209081029190910101526000610fd87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611116565b9050610648610fea8260008451611150565b6111e7565b60008160ff16826110008560581c90565b1660ff1614905092915050565b6000600861101d6002602061188f565b61102791906118a2565b9190911c919050565b61026e838383516110418560200190565b6111f8565b600060086001806110596002602061188f565b611063919061188f565b61106d919061188f565b61107791906118a2565b8260ff911c1692915050565b60008282604051602001611098929190611761565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206110e883601f6117b3565b6110f291906118b9565b6110fc90846117b3565b90505b8083101561026e57600083556001830192506110ff565b60606106486111268585856112b7565b600061114b856111368989611337565b9060ff166028026038011c64ffffffffff1690565b61134a565b6000818311806111605750835182115b156111a6578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119d939291906118db565b60405180910390fd5b602084016111b484826117b3565b905060006111c2858561188f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061136d565b821561127257602083106112225760208304840193506020838161121e5761121e6117c6565b0692505b82156112725760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611263575050610467565b50600194909401939182900391015b5b602082106112945780518455600190930192601f1990910190602001611273565b8115610467576000600019600884021c8554835182191691161785555050505050565b600083836040516020016112cc929190611761565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546113468484611083565b5490565b60405160208101601f19603f84840101166040528282526108d2858585846113e8565b6060600061137b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816113a1576113a16117c6565b04905060405193506020840160208202810160405281855260005b828110156113dc578451871c8252938701936020909101906001016113bc565b50505050509392505050565b821561146f57602083106114125760208304840193506020838161140e5761140e6117c6565b0692505b821561146f5760208390036000818410156114355750600019600884021c61143f565b50600019600882021c5b8554600886021b818451168219821617845250818411611460575050610467565b50600194909401939182900391015b5b602082106114915783548152600190930192601f1990910190602001611470565b8115610467576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b03811681146107e457600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561153857600080fd5b611541846114f6565b925060208401359150604084013567ffffffffffffffff8082111561156557600080fd5b818601915086601f83011261157957600080fd5b81358181111561158b5761158b61150d565b604051601f8201601f19908116603f011681019083821181831017156115b3576115b361150d565b816040528281528960208487010111156115cc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561160357600080fd5b61160c846114f6565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116685781518752958201959082019060010161164c565b509495945050505050565b84815260806020820152600061168c6080830186611637565b60ff949094166040830152506060015292915050565b6000602082840312156116b457600080fd5b5051919050565b8281526040602082015260006106486040830184611637565b6000815180845260005b818110156116fa576020818501810151868301820152016116de565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061173360a0830187611637565b60ff86166040840152828103606084015261174e81866116d4565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561179057815184529284019290840190600101611774565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e161179d565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611637565b8381526060602082015260006118086060830185611637565b9050826040830152949350505050565b60608152600061182b6060830186611637565b65ffffffffffff85166020840152828103604084015261039981856116d4565b8481526080602082015260006118646080830186611637565b65ffffffffffff85166040840152828103606084015261188481856116d4565b979650505050505050565b818103818111156101e1576101e161179d565b80820281158282048414176101e1576101e161179d565b6000826118d657634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006118ee60608301866116d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506112d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a610085366004610efb565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da366004610f77565b610203565b604051601f193601358152602001610096565b610105610100366004611042565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b8383610361565b5050565b60006101fe61046c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061106c565b602090810291909101015260006103587f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610476565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103af576103af61106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103e8576103e861106c565b6020026020010181815250506104667f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161043191815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610555565b50505050565b60006101fe610625565b600080610481610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104b4576104ac86868686610671565b91505061054d565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061050c9089908990899089906004016110be565b602060405180830381865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906110ed565b949350505050565b600061055f610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105905761058b868686868661069e565b61061d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906105ea908990899089908990899060040161114c565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066c573391505090565b919050565b600061035861068086866106ba565b60ff858116601b0360080285901c166106998587610710565b610749565b6106b385856106ad8487610710565b8561079a565b5050505050565b600082826040516020016106cf929190611193565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107415761073760ff601b83900360080287901c16836111e5565b9150600101610715565b509392505050565b60006020821061076f5760208204840193506020828161076b5761076b6111f8565b0691505b508254600882021b602082900380841115610741576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361082457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108179392919061120e565b60405180910390a2610466565b600061083085856106ba565b9050600061083d86610a3e565b905060005b815181101561091257600082828151811061085f5761085f61106c565b6020026020010151905061088b6004826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610909576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906108d6908b908b908b908b9060040161124b565b600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050505b50600101610842565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109479392919061120e565b60405180910390a2610962828565ffffffffffff1685610ae5565b60005b8151811015610a355760008282815181106109825761098261106c565b602002602001015190506109ae6008826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610a2c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906109f9908b908b908b908b9060040161124b565b600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b505050505b50600101610965565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7857610a7861106c565b60209081029190910101526000610ab07f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b00565b905061054d610ac28260008451610b3a565b610bd1565b60008160ff1682610ad88560581c90565b1660ff1614905092915050565b610afb83838351610af68560200190565b610be9565b505050565b606061054d610b10858585610ca8565b6000610b3585610b208989610d28565b9060ff166028026038011c64ffffffffff1690565b610d3b565b600081831180610b4a5750835182115b15610b90578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b879392919061128f565b60405180910390fd5b60208401610b9e84826111e5565b90506000610bac85856112b4565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610be28360156000610d5e565b9392505050565b8215610c635760208310610c1357602083048401935060208381610c0f57610c0f6111f8565b0692505b8215610c635760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c54575050610466565b50600194909401939182900391015b5b60208210610c855780518455600190930192601f1990910190602001610c64565b8115610466576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610cbd929190611193565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610be2610d378484610dd9565b5490565b60405160208101601f19603f848401011660405282825261074185858584610e2f565b60606000610d6c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d9257610d926111f8565b04905060405193506020840160208202810160405281855260005b82811015610dcd578451871c825293870193602090910190600101610dad565b50505050509392505050565b60008282604051602001610dee929190611193565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610eb65760208310610e5957602083048401935060208381610e5557610e556111f8565b0692505b8215610eb6576020839003600081841015610e7c5750600019600884021c610e86565b50600019600882021c5b8554600886021b818451168219821617845250818411610ea7575050610466565b50600194909401939182900391015b5b60208210610ed85783548152600190930192601f1990910190602001610eb7565b8115610466576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f0d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610be257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461066c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610f8c57600080fd5b610f9584610f3d565b925060208401359150604084013567ffffffffffffffff80821115610fb957600080fd5b818601915086601f830112610fcd57600080fd5b813581811115610fdf57610fdf610f61565b604051601f8201601f19908116603f0116810190838211818310171561100757611007610f61565b8160405282815289602084870101111561102057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561105557600080fd5b61105e83610f3d565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156110b357815187529582019590820190600101611097565b509495945050505050565b8481526080602082015260006110d76080830186611082565b60ff949094166040830152506060015292915050565b6000602082840312156110ff57600080fd5b5051919050565b6000815180845260005b8181101561112c57602081850181015186830182015201611110565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061116560a0830187611082565b60ff8616604084015282810360608401526111808186611106565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156111c2578151845292840192908401906001016111a6565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6111cf565b634e487b7160e01b600052601260045260246000fd5b6060815260006112216060830186611082565b65ffffffffffff8516602084015282810360408401526112418185611106565b9695505050505050565b8481526080602082015260006112646080830186611082565b65ffffffffffff8516604084015282810360608401526112848185611106565b979650505050505050565b6060815260006112a26060830186611106565b60208301949094525060400152919050565b818103818111156101ee576101ee6111cf56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611648806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c146102b6578063ea29e3ba146102cb576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611165565b6102e0565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610379565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611233565b610388565b6040516101699190611300565b3480156101e557600080fd5b506101f96101f4366004611313565b61040c565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610559565b34801561023c57600080fd5b5061025061024b3660046113ad565b610563565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046113c6565b6105ad565b3480156102ad57600080fd5b506101876105ea565b3480156102c257600080fd5b506101876105f4565b3480156102d757600080fd5b506101f96105fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103836106ea565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103b2919061140f565b600060405180830381855af49150503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50915091508161040457805181602001fd5b949350505050565b60408051600080825260208201909252906104487f7462000000000000000000000000000000000000000000000000000000000000868661071c565b9050306104536107a3565b73ffffffffffffffffffffffffffffffffffffffff16036104af576104aa81838560405160200161048b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107ef565b610552565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104e591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161051f959493929190611467565b600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050505b5050505050565b60006103836107a3565b6040805180820190915260008082526020820152604051806040016040528061058a610379565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105e19190611300565b60405180910390fd5b6000610383610379565b6000610383610559565b306106076107a3565b73ffffffffffffffffffffffffffffffffffffffff160361068b577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610681906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106819060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107195750335b90565b600061072a607060106114ce565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107ea573391505090565b919050565b61055285858585856108008b610805565b61088a565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161085457507e60030220202000000000000000000000000000000000000000000000000000919050565b6103736108817f746273746f72650000000000000000005461626c65730000000000000000000084610bd0565b60206000610c29565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361091657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161090994939291906114e1565b60405180910390a2610bc8565b600061092187610c7b565b905060005b81518110156109fa5760008282815181106109435761094361152b565b6020026020010151905061096f6001826affffffffffffffffffffff1916610d0490919063ffffffff16565b156109f1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109be908c908c908c908c908c908c90600401611541565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b50600101610926565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a3194939291906114e1565b60405180910390a26000610a458888610d22565b90506000602087019050610a5d826000895184610d37565b6000610a6885610df5565b1115610aec576000610a7a8a8a610e32565b878155905060208601915060008060005b610a9488610df5565b8160ff161015610ae757610aa98d8d83610e88565b9250610ac48a8260ff166028026038011c64ffffffffff1690565b9150610ad38360008488610d37565b610add82866114ce565b9450600101610a8b565b505050505b60005b8351811015610bc3576000848281518110610b0c57610b0c61152b565b60200260200101519050610b386002826affffffffffffffffffffff1916610d0490919063ffffffff16565b15610bba576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610b87908e908e908e908e908e908e90600401611541565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050505b50600101610aef565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c4f57602082048401935060208281610c4b57610c4b61159a565b0691505b508254600882021b602082900380841115610c73576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610cb557610cb561152b565b60209081029190910101526000610ced7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f08565b9050610404610cff8260008451610f42565b610fd0565b60008160ff1682610d158560581c90565b1660ff1614905092915050565b60008282604051602001610be89291906115b0565b8215610db15760208310610d6157602083048401935060208381610d5d57610d5d61159a565b0692505b8215610db15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610da2575050610def565b50600194909401939182900391015b5b60208210610dd35780518455600190930192601f1990910190602001610db2565b8115610def5783548151600019600885021c9182169119161784555b50505050565b60006008600180610e08600260206115ec565b610e1291906115ec565b610e1c91906115ec565b610e2691906115ff565b8260ff911c1692915050565b60008282604051602001610e479291906115b0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610e9d9291906115b0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6060610404610f18858585610e88565b6000610f3d85610f288989610fe8565b9060ff166028026038011c64ffffffffff1690565b610ffb565b600081831180610f525750835182115b15610f8f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105e193929190611616565b60208401610f9d84826114ce565b90506000610fab85856115ec565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610fe1836015600061101e565b9392505050565b6000610fe1610ff78484610e32565b5490565b60405160208101601f19603f8484010116604052828252610c7385858584611099565b6060600061102c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110525761105261159a565b04905060405193506020840160208202810160405281855260005b8281101561108d578451871c82529387019360209091019060010161106d565b50505050509392505050565b821561112057602083106110c3576020830484019350602083816110bf576110bf61159a565b0692505b82156111205760208390036000818410156110e65750600019600884021c6110f0565b50600019600882021c5b8554600886021b818451168219821617845250818411611111575050610def565b50600194909401939182900391015b5b602082106111425783548152600190930192601f1990910190602001611121565b8115610def576000600019600884021c8251865482191691161782525050505050565b60006020828403121561117757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610fe157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111d8576111d86111a7565b604051601f8501601f19908116603f01168101908282118183101715611200576112006111a7565b8160405280935085815286868601111561121957600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561124657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461126a57600080fd5b9150602083013567ffffffffffffffff81111561128657600080fd5b8301601f8101851361129757600080fd5b6112a6858235602084016111bd565b9150509250929050565b60005b838110156112cb5781810151838201526020016112b3565b50506000910152565b600081518084526112ec8160208601602086016112b0565b601f01601f19169290920160200192915050565b602081526000610fe160208301846112d4565b60008060006060848603121561132857600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461135857600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461138d57600080fd5b9150604084013580151581146113a257600080fd5b809150509250925092565b6000602082840312156113bf57600080fd5b5035919050565b6000602082840312156113d857600080fd5b813567ffffffffffffffff8111156113ef57600080fd5b8201601f8101841361140057600080fd5b610404848235602084016111bd565b600082516114218184602087016112b0565b9190910192915050565b60008151808452602080850194506020840160005b8381101561145c57815187529582019590820190600101611440565b509495945050505050565b85815260a06020820152600061148060a083018761142b565b828103604084015261149281876112d4565b905084606084015282810360808401526114ac81856112d4565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610373576103736114b8565b6080815260006114f4608083018761142b565b828103602084015261150681876112d4565b9050846040840152828103606084015261152081856112d4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061155a60c083018861142b565b828103604084015261156c81886112d4565b9050856060840152828103608084015261158681866112d4565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156115df578151845292840192908401906001016115c3565b5091979650505050505050565b81810381811115610373576103736114b8565b8082028115828204841417610373576103736114b8565b60608152600061162960608301866112d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061026c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f366004610216565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b60006101826000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff16905080610211573391505090565b919050565b60006020828403121561022857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025857600080fd5b939250505056fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b604051640322e302e360dc1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a233608052604051640322e302e360dc1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a260805161528b620000d46000396000818161036f01526112a8015261528b6000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614389565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614389565b61025f34846143c6565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614436565b610983565b6040516103a591906144ec565b3480156103e757600080fd5b506102646103f6366004614541565b6109c6565b34801561040757600080fd5b50610264610416366004614541565b610a79565b34801561042757600080fd5b506103ce6104363660046145ce565b610b24565b34801561044757600080fd5b5061026461045636600461462c565b610b6e565b34801561046757600080fd5b506102646104763660046146d9565b610c57565b34801561048757600080fd5b506102646104963660046146d9565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476f565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483f565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614886565b610e07565b6040516103a5939291906148d9565b34801561051757600080fd5b506103ce610526366004614979565b610e5c565b34801561053757600080fd5b506102646105463660046149e2565b610e6b565b34801561055757600080fd5b507f322e302e300000000000000000000000000000000000000000000000000000006104bb565b6103ce61058c366004614a43565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614436565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9c565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614afb565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b52565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8c565b611116565b34801561063d57600080fd5b5061026461064c366004614c1b565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca8565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e2565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145ce565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476f565b611444565b3480156106dd57600080fd5b506102646106ec366004614436565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476f565b6114cf565b34801561071d57600080fd5b5061026461072c366004614541565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc5565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc5565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc5565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614389565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614389565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cdb565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614788565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c6565b9350505080806116b990614d06565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc5565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d25565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc5565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d25565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4d565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cdb565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efc565b6114c885858585856119f18b611a39565b612f1f565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4d565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613264565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d66565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efc565b9998505050505050505050565b6111128282611bcf85611a39565b613280565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc5565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc5565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357f565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d25565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d79565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc5565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4d565b6135fa565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761360a565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a6565b611f213360008484604051602401611ec491906144ec565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b033500000000000000000000000000000000000000000000000000000000179052613701565b506111128282805190602001206001613712565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd7565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f6565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc5565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e0a565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd7565b60405180910390a26120fd828565ffffffffffff1685613868565b60005b8151811015610d0457600082828151811061211d5761211d614cc5565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e0a565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387e565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613895565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613895565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e43565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613939565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ee565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a97565b905061247982613b29565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ed1565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d66565b604080516000815260208101909152889088612ac2565b600061253b82613bc6565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614eea565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c6565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f26565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d66565b61268b9190614f3c565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efc565b600060086001806126e060026020614d66565b6126ea9190614d66565b6126f49190614d66565b6126fe9190614f3c565b8260ff911c1692915050565b600061094f6127198484613c58565b5490565b60008383604051602001612732929190614eea565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f26565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc5565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cae565b613d3c565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4d565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ed1565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c6565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613df1565b612a31565b612a3188888488613e69565b90999098509650505050505050565b6000600860016126ea60026020614d66565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efc565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613eca565b8061094f575061094f8383613eca565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f53565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d66565b612bc091906143c6565b9050808214158015612be2575081612bd88688614f94565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f93565b90506000612c9d8b6137f6565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc5565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb9565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d604051612de296959493929190615017565b60405180910390a250828414612e03576000612dfe8c8c613c58565b839055505b6000612e108c8c8c61271d565b9050612e24818a64ffffffffff1689613868565b5060005b8151811015612eee576000828281518110612e4557612e45614cc5565b60200260200101519050612e716020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee557606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb29796959493929190614fb9565b600060405180830381600087803b158015612ecc57600080fd5b505af1158015612ee0573d6000803e3d6000fd5b505050505b50600101612e28565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fab57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9e9493929190615066565b60405180910390a2610a71565b6000612fb6876137f6565b905060005b815181101561308f576000828281518110612fd857612fd8614cc5565b602002602001015190506130046001826affffffffffffffffffffff191661290790919063ffffffff16565b15613086576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613053908c908c908c908c908c908c906004016150a5565b600060405180830381600087803b15801561306d57600080fd5b505af1158015613081573d6000803e3d6000fd5b505050505b50600101612fbb565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c69493929190615066565b60405180910390a260006130da8888612591565b905060006020870190506130f2826000895184614061565b60006130fd856126cd565b111561318157600061310f8a8a613c58565b878155905060208601915060008060005b613129886126cd565b8160ff16101561317c5761313e8d8d8361271d565b92506131598a8260ff166028026038011c64ffffffffff1690565b91506131688360008488614061565b61317282866143c6565b9450600101613120565b505050505b60005b83518110156132585760008482815181106131a1576131a1614cc5565b602002602001015190506131cd6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324f576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321c908e908e908e908e908e908e906004016150a5565b600060405180830381600087803b15801561323657600080fd5b505af115801561324a573d6000803e3d6000fd5b505050505b50600101613184565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f991906150fe565b60405180910390a2505050565b6000613311846137f6565b905060005b81518110156133e457600082828151811061333357613333614cc5565b6020026020010151905061335f6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133db576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a890899089908990600401615111565b600060405180830381600087803b1580156133c257600080fd5b505af11580156133d6573d6000803e3d6000fd5b505050505b50600101613316565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341591906150fe565b60405180910390a260006134298585612591565b905061348281600061343a86612671565b67ffffffffffffffff81111561345257613452614788565b6040519080825280601f01601f19166020018201604052801561347c576020820181803683370190505b50613868565b600061348d846126cd565b11156134ae57600061349f8686613c58565b90506134ac816020614120565b505b60005b8251811015610a715760008382815181106134ce576134ce614cc5565b602002602001015190506134fa6080826affffffffffffffffffffff191661290790919063ffffffff16565b15613576576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613543908a908a908a90600401615111565b600060405180830381600087803b15801561355d57600080fd5b505af1158015613571573d6000803e3d6000fd5b505050505b506001016134b1565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f290614389565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364357613643614cc5565b6020908102919091010152600061369b7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136b0828261415d565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e69565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375357613753614cc5565b602002602001018181525050828160018151811061377357613773614cc5565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137c191151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061383057613830614cc5565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138798560200190565b614061565b600061388c607060106143c6565b9190911b919050565b606060005b60108110156138fa577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138fa5760010161389a565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613944614179565b9050306001600160a01b0382160361396257611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ad90899089908990899060040161513a565b602060405180830381865afa1580156139ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff9190615169565b60006139f8614179565b9050306001600160a01b03821603613a1c57613a1786868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a699089908990899089908990600401615182565b600060405180830381600087803b158015613a8357600080fd5b505af1158015613258573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ad057613ad0614cc5565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6257613b62614cc5565b60209081029190910101526000613bba7f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bff57613bff614cc5565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6d929190614eea565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbe5750835182115b15613cfb578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151c9565b60208401613d0984826143c6565b90506000613d178585614d66565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b3565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8757613d87614cc5565b602090810291909101015260008080613de07f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422e565b60006060836001600160a01b03166000613e0c85898961423a565b604051613e1991906151ee565b60006040518083038185875af1925050503d8060008114613e56576040519150601f19603f3d011682016040523d82523d6000602084013e613e5b565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e8284888861423a565b604051613e8f91906151ee565b600060405180830381855af49150503d8060008114613e56576040519150601f19603f3d011682016040523d82523d6000602084013e613e5b565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0357613f03614cc5565b602002602001018181525050826001600160a01b031660001b81600181518110613f2f57613f2f614cc5565b60209081029190910101526000613f877f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd7576040517f7149a3c100000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106140095780850382019150614011565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140db576020831061408b5760208304840193506020838161408757614087614f26565b0692505b82156140db5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140cc575050611965565b50600194909401939182900391015b5b602082106140fd5780518455600190930192601f19909101906020016140dc565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412f83601f6143c6565b614139919061520a565b61414390846143c6565b90505b8083101561084e5760008355600183019250614146565b600061416883614269565b801561094f575061094f83836142b5565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141c18560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e7576141e7614f26565b04905060405193506020840160208202810160405281855260005b82811015614222578451871c825293870193602090910190600101614202565b50505050509392505050565b6000806116db8561436d565b60608383836040516020016142519392919061522c565b60405160208183030381529060405290509392505050565b6000614295827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b5565b8015610dc557506142ae826001600160e01b03196142b5565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614356575060208210155b80156143625750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143aa576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143b0565b60008083601f8401126143eb57600080fd5b50813567ffffffffffffffff81111561440357600080fd5b6020830191508360208260051b850101111561441e57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444e57600080fd5b85359450602086013567ffffffffffffffff81111561446c57600080fd5b614478888289016143d9565b909550935061448b905060408701614425565b949793965091946060013592915050565b60005b838110156144b757818101518382015260200161449f565b50506000910152565b600081518084526144d881602086016020860161449c565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144c0565b60008083601f84011261451157600080fd5b50813567ffffffffffffffff81111561452957600080fd5b60208301915083602082850101111561441e57600080fd5b6000806000806000806080878903121561455a57600080fd5b86359550602087013567ffffffffffffffff8082111561457957600080fd5b6145858a838b016143d9565b909750955085915061459960408a01614425565b945060608901359150808211156145af57600080fd5b506145bc89828a016144ff565b979a9699509497509295939492505050565b600080600080606085870312156145e457600080fd5b84359350602085013567ffffffffffffffff81111561460257600080fd5b61460e878288016143d9565b9094509250614621905060408601614425565b905092959194509250565b60008060008060008060008060a0898b03121561464857600080fd5b88359750602089013567ffffffffffffffff8082111561466757600080fd5b6146738c838d016143d9565b909950975060408b013591508082111561468c57600080fd5b6146988c838d016144ff565b909750955060608b0135945060808b01359150808211156146b857600080fd5b506146c58b828c016144ff565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f457600080fd5b87359650602088013567ffffffffffffffff8082111561471357600080fd5b61471f8b838c016143d9565b909850965086915061473360408b01614425565b955060608a013591508082111561474957600080fd5b506147568a828b016144ff565b989b979a50959894979596608090950135949350505050565b60006020828403121561478157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c7576147c7614788565b604052919050565b600082601f8301126147e057600080fd5b813567ffffffffffffffff8111156147fa576147fa614788565b61480d6020601f19601f8401160161479e565b81815284602083860101111561482257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485257600080fd5b82359150602083013567ffffffffffffffff81111561487057600080fd5b61487c858286016147cf565b9150509250929050565b6000806000806060858703121561489c57600080fd5b84359350602085013567ffffffffffffffff8111156148ba57600080fd5b6148c6878288016143d9565b9598909750949560400135949350505050565b6060815260006148ec60608301866144c0565b846020840152828103604084015261097981856144c0565b600082601f83011261491557600080fd5b8135602067ffffffffffffffff82111561493157614931614788565b8160051b61494082820161479e565b928352848101820192828101908785111561495a57600080fd5b83870192505b8483101561436257823582529183019190830190614960565b600080600080600060a0868803121561499157600080fd5b85359450602086013567ffffffffffffffff8111156149af57600080fd5b6149bb88828901614904565b9450506149ca60408701614425565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f757600080fd5b83359250602084013567ffffffffffffffff811115614a1557600080fd5b614a21868287016143d9565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5857600080fd5b8335614a6381614a2e565b925060208401359150604084013567ffffffffffffffff811115614a8657600080fd5b614a92868287016147cf565b9150509250925092565b60008060008060808587031215614ab257600080fd5b84359350602085013567ffffffffffffffff811115614ad057600080fd5b614adc87828801614904565b935050614aeb60408601614425565b9396929550929360600135925050565b600080600060608486031215614b1057600080fd5b83359250602084013567ffffffffffffffff811115614b2e57600080fd5b614b3a86828701614904565b925050614b4960408501614425565b90509250925092565b60008060408385031215614b6557600080fd5b8235614b7081614a2e565b9150602083013567ffffffffffffffff81111561487057600080fd5b60008060008060008060808789031215614ba557600080fd5b86359550602087013567ffffffffffffffff80821115614bc457600080fd5b614bd08a838b016143d9565b90975095506040890135915065ffffffffffff82168214614bf057600080fd5b909350606088013590808211156145af57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3757600080fd5b88359750602089013567ffffffffffffffff80821115614c5657600080fd5b614c628c838d016143d9565b9099509750879150614c7660408c01614425565b9650614c8460608c01614c06565b9550614c9260808c01614c06565b945060a08b01359150808211156146b857600080fd5b600060208284031215614cba57600080fd5b813561094f81614a2e565b634e487b7160e01b600052603260045260246000fd5b604081526000614cee60408301856144c0565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1c57614d1c6143b0565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144c0565b60ff8281168282160390811115610dc557610dc56143b0565b81810381811115610dc557610dc56143b0565b600060208284031215614d8b57600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dcc57815187529582019590820190600101614db0565b509495945050505050565b606081526000614dea6060830186614d9b565b65ffffffffffff85166020840152828103604084015261097981856144c0565b848152608060208201526000614e236080830186614d9b565b65ffffffffffff85166040840152828103606084015261436281856144c0565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea481600386016020890161449c565b808401905081600382015284519150614ec482600483016020880161449c565b0160040195945050505050565b8281526040602082015260006107aa60408301846144c0565b8281526000602080830184516020860160005b82811015614f1957815184529284019290840190600101614efd565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143b0565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144c0565b64ffffffffff818116838216019080821115614fb257614fb26143b0565b5092915050565b87815260e060208201526000614fd260e0830189614d9b565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500981856144c0565b9a9950505050505050505050565b60c08152600061502a60c0830189614d9b565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a0840152611bb481856144c0565b6080815260006150796080830187614d9b565b828103602084015261508b81876144c0565b9050846040840152828103606084015261436281856144c0565b86815260c0602082015260006150be60c0830188614d9b565b82810360408401526150d081886144c0565b905085606084015282810360808401526150ea81866144c0565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d9b565b83815260606020820152600061512a6060830185614d9b565b9050826040830152949350505050565b8481526080602082015260006151536080830186614d9b565b60ff949094166040830152506060015292915050565b60006020828403121561517b57600080fd5b5051919050565b85815260a06020820152600061519b60a0830187614d9b565b60ff8616604084015282810360608401526151b681866144c0565b9150508260808301529695505050505050565b6060815260006151dc60608301866144c0565b60208301949094525060400152919050565b6000825161520081846020870161449c565b9190910192915050565b60008261522757634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523e81846020890161449c565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b506080516157ca620000316000396000610c2b01526157ca6000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636548a90a116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b80636548a90a146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c17565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c56565b61032c565b005b610176610186366004614cd2565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614e1f565b61042d565b6101d16101cc366004614e78565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614ebf565b6105fe565b604051601f19360135815260200161015a565b61017661021e366004614f17565b610779565b6101d1610231366004614f55565b6107e5565b610176610244366004614fb8565b6108c0565b610176610257366004614c56565b610982565b61017661026a366004614ff2565b6109c1565b61017661027d366004614ff2565b6109f3565b61017661029036600461500b565b610a88565b6101766102a3366004615045565b610b3d565b6101766102b6366004614f17565b610b56565b610193610c17565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610c21565b6103458261034061041e565b610c85565b61034f8282610cfe565b5050565b61035b610c21565b600061036689610d29565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d40565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc9291906150b2565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e54565b6103f48861034061041e565b61041488888888610405888a6150cb565b61040f87896150cb565b610e9f565b5050505050505050565b60006104286112af565b905090565b610435610c21565b61044761044061041e565b84846112e1565b610450826113b4565b156104a3576000610460836113d0565b905061048c817f1a86b5500000000000000000000000000000000000000000000000000000000061146c565b6104a061049761041e565b848460006114c7565b50505b505050565b60006104b2610c21565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d40565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615151565b61051683610e54565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114f4565b90506000818460405160200161056292919061517a565b60405160208183030381529060405290508080519060200120925060006105888461157e565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361162e565b6105ea81876116f9565b6105f485846116f9565b5050505092915050565b610606610c21565b61737960f01b836001600160f01b0319161461062c5761737960f01b836104d885610d40565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761065081610e54565b61065c8161034061041e565b610686837fb5dee1270000000000000000000000000000000000000000000000000000000061146c565b600061069185610d29565b6fffffffffffffffffffffffffffffffff1916036106b3578361038885610d40565b60006106be846117c2565b905080158015906106cf5750848114155b15610711576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b600061071c866113d0565b90506001600160a01b038116156107455761073681611847565b61074083826118c6565b610750565b610750866001611964565b61075b868686611a05565b6107658587611aa8565b61077183866001611b33565b505050505050565b610781610c21565b6107ab827f1873396a0000000000000000000000000000000000000000000000000000000061146c565b6107ce616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e54565b6107da8361034061041e565b6104a3838383611be2565b60006107ef610c21565b60408051616e7360f01b602082015260006022820181905260308201526108319101604051602081830303815290604052610829906151d2565b61034061041e565b8280519060200120905060008280519060200120905060006108528361157e565b90508015610898576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319841660048201526024016103bc565b6108a383878461162e565b6108ad82856116f9565b6108b783866116f9565b50509392505050565b6108c8610c21565b6108f2827f6fdd1c800000000000000000000000000000000000000000000000000000000061146c565b61096e6108fd61041e565b6000848460405160240161091191906151f6565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611ca5565b5061034f8282805190602001206001611cb6565b61098a610c21565b6109968261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d65565b6109c9610c21565b6109d281611e78565b6109db81610e54565b6109e78161034061041e565b6109f081611ea9565b50565b6109fb610c21565b610a0481611e78565b610a0d81611f14565b610a1681612106565b15610a595780610a2582610d40565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc9291906150b2565b610a64816001611964565b610a7581610a7061041e565b61218b565b6109f081610a8161041e565b6001611b33565b610a90610c21565b610a9983611e78565b610aa2826113b4565b610ad8576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ae48361034061041e565b6000610aef836113d0565b9050610b1b817f1a86b5500000000000000000000000000000000000000000000000000000000061146c565b610b258484612255565b815115610b37576104a061049761041e565b50505050565b610b45610c21565b6109f0610b5061041e565b826122d4565b610b5e610c21565b61737960f01b836001600160f01b03191614610b845761737960f01b836104d885610d40565b610bae827f540fbfa80000000000000000000000000000000000000000000000000000000061146c565b610bb783610e54565b610bda616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e54565b610be68361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612376565b600061042861241b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c83576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610cb2616e7360f01b6dffffffffffffffffffffffffffff60801b851617612425565b6001600160a01b03161461034f57610cc982610d40565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc929190615209565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d65565b6000610d376070601061524a565b9190911b919050565b606081601081901b6000610d5383610d29565b90508271ffffffffffffffffffffffffffffffffffff19831615610d9457610d8f71ffffffffffffffffffffffffffffffffffff1984166114f4565b610dcb565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610df257610ded836114f4565b610e29565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e3b9392919061525d565b6040516020818303038152906040529350505050919050565b610e5d81612106565b6109f05780610e6b82610d40565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc9291906150b2565b613a3160f11b866001600160f01b03191614801590610ecd5750611bdd60f21b866001600160f01b03191614155b15610f2e57613a3160f11b8687604051602001610eec91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615151565b610f37856124b6565b610f428460016126fd565b610f4d8360006126fd565b60e084901c60e885901c0160ff16825114610fad5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1681511461100d5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110855760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61108e85612899565b61109784612899565b146110e9576110a585612899565b6110ae84612899565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110f2856128cb565b6110fb846128cb565b1461114d57611109856128cb565b611112846128cb565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61115986612899565b8110156111f45761118361116d85836128e8565b60c581111561117e5761117e6152d3565b612910565b6008601b8390030287901c60ff16146111ec576008601b8290030286901c60ff166111b161116d86846128e8565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b600101611150565b506111fe86612106565b1561125857858660405160200161121791815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc92916004016150b2565b6112a4868686868660405160200161127091906152e9565b6040516020818303038152906040528660405160200161129091906152e9565b604051602081830303815290604052612970565b610771866001611964565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112de5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106113225761132261536b565b602002602001018181525050826001600160a01b031660001b8160018151811061134e5761134e61536b565b602002602001018181525050610b377f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161139791815260200190565b60408051601f19818403018152919052630100080160dd1b612a37565b6000811515801561032657506113c982612a4c565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106114095761140961536b565b602090810291909101015260006114617f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612aac565b60601c949350505050565b6114768282612ae2565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114d887878787612afe565b91509150816114ea576114ea81612cce565b9695505050505050565b606060005b601081101561154a576fffffffffffffffffffffffffffffffff198316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561154a576001016114f9565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115d6576115d661536b565b602090810291909101015260006115767f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612aac565b600061163a8383612cd6565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106116985761169861536b565b60209081029190910101526116f07f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612d15565b50505050505050565b606060006117068361301b565b905060006117138461302b565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061176c5761176c61536b565b60209081029190910101526107717f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612d15565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106118075761180761536b565b602090810291909101015260006115767f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612aac565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b816000815181106118895761188961536b565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613054565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118fb576118fb61536b565b602002602001018181525050816001600160a01b031660001b816001815181106119275761192761536b565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613054565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061199a5761199a61536b565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119e891151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a37565b6000611a118383613320565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a5057611a5061536b565b60209081029190910101526116f07f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612d15565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611aea57611aea61536b565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161139791815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b6857611b6861536b565b602002602001018181525050826001600160a01b031660001b81600181518110611b9457611b9461536b565b602002602001018181525050610b377f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119e891151560f81b815260010190565b613a3160f11b836001600160f01b03191614611c1257613a3160f11b8384604051602001610eec91815260200190565b611c1b83612106565b611c74578283604051602001611c3391815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc92916004016150b2565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613350565b60606000806114d8878787876133f5565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cf757611cf761536b565b6020026020010181815250508281600181518110611d1757611d1761536b565b602002602001018181525050610b377f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119e891151560f81b815260010190565b6000611d71848461346d565b90506000815167ffffffffffffffff811115611d8f57611d8f614d68565b604051908082528060200260200182016040528015611db8578160200160208202803683370190505b5090506000805b8351811015611e6957846001600160a01b0316611e03858381518110611de757611de761536b565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e6157838181518110611e2357611e2361536b565b6020026020010151838381518110611e3d57611e3d61536b565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611dbf565b508082526107718686846134d8565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109f057616e7360f01b816104d883610d40565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611edf57611edf61536b565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261352f565b6000611f208260101b90565b90506000611f4271ffffffffffffffffffffffffffffffffffff1983166114f4565b80519091508015610b3757611f6482611f5c600184615381565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611ff5576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b612003600183615381565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f000000000000000000000000000000000000000000000000000000000000001480156120b0575061206b83611f5c83600161524a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120fe576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611ff8565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061213f5761213f61536b565b6020908102919091010152600061217f7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612aac565b90506115768160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121c1576121c161536b565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001612220919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a37565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061228b5761228b61536b565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161139791815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106123155761231561536b565b602002602001018181525050816001600160a01b031660001b816001815181106123415761234161536b565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261352f565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106123ac576123ac61536b565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b8260008560405160200161240791906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135ca565b600061042861367b565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061245e5761245e61536b565b602090810291909101015260006114617f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612aac565b806124ed576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124f8826128cb565b9050600581111561253f576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061254a83612899565b90506000612558838361524a565b9050601c81111561259f576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b8381101561264a5760ff601b82900360080287901c1660008190036125f7576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612635576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61263f818461524a565b9250506001016125a3565b50612654856136ba565b81146126a057612663856136ba565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107715760ff601b82900360080287901c1680156126f4576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b506001016126a2565b80158015612709575081155b1561272a5760405163d498615960e01b8152600060048201526024016103bc565b6000612735836128cb565b9050600581111561275c5760405163d498615960e01b8152600481018290526024016103bc565b600061276784612899565b90506000612775838361524a565b9050601c81111561279c5760405163d498615960e01b8152600481018290526024016103bc565b6000805b838110156128085760006127b761116d89846128e8565b9050806000036127f3576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127fd818461524a565b9250506001016127a0565b50612812866136ba565b811461283d57612821866136ba565b60405163d498615960e01b81526004016103bc91815260200190565b825b828110156116f057600061285661116d89846128e8565b90508015612890576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161283f565b6000600860016128ab60026020615381565b6128b59190615381565b6128bf9190615394565b8260ff911c1692915050565b600060086001806128de60026020615381565b6128ab9190615381565b6000601b8290036008028360ff911c1660c5811115612909576129096152d3565b9392505050565b6000808260c5811115612925576129256152d3565b60ff169050606181101561293f57601f1660010192915050565b60618360c5811115612953576129536152d3565b036129615750601492915050565b50600092915050565b50919050565b600061297d8686866136dd565b9050600061298b8484613713565b905060006129998585613730565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129d3576129d361536b565b6020908102919091010152612a2b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612d15565b50505050505050505050565b6104a08585612a468487613745565b8561377e565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612aa4906151d2565b909114919050565b6000612ad9612abb86866139e6565b60ff858116601b0360080285901c16612ad48587613745565b613a3c565b95945050505050565b6000612aed83613a8d565b801561290957506129098383613ace565b600060606000612b0d86613b86565b905060005b8151811015612be0576000828281518110612b2f57612b2f61536b565b60200260200101519050612b5b6001826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15612bd7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612ba4908c908c908c906004016153ab565b600060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050505b50600101612b12565b50612bed87858888613c28565b909350915060005b8151811015612cc3576000828281518110612c1257612c1261536b565b60200260200101519050612c3e6002826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15612cba576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c87908c908c908c906004016153ab565b600060405180830381600087803b158015612ca157600080fd5b505af1158015612cb5573d6000803e3d6000fd5b505050505b50600101612bf5565b505094509492505050565b805160208201fd5b60608282604051602001612cfe9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d6e57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d61949392919061540f565b60405180910390a2610771565b6000612d7987613cfa565b905060005b8151811015612e52576000828281518110612d9b57612d9b61536b565b60200260200101519050612dc76001826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15612e49576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612e16908c908c908c908c908c908c9060040161544e565b600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b505050505b50600101612d7e565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e89949392919061540f565b60405180910390a26000612e9d88886139e6565b90506000602087019050612eb5826000895184613d6c565b6000612ec0856128cb565b1115612f44576000612ed28a8a613e2b565b878155905060208601915060008060005b612eec886128cb565b8160ff161015612f3f57612f018d8d83613e81565b9250612f1c8a8260ff166028026038011c64ffffffffff1690565b9150612f2b8360008488613d6c565b612f35828661524a565b9450600101612ee3565b505050505b60005b8351811015612a2b576000848281518110612f6457612f6461536b565b60200260200101519050612f906002826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15613012576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fdf908e908e908e908e908e908e9060040161544e565b600060405180830381600087803b158015612ff957600080fd5b505af115801561300d573d6000803e3d6000fd5b505050505b50600101612f47565b60006103268251603881901b1790565b60608160405160200161303e91906154a7565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b031916036130a757827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161309a91906154c3565b60405180910390a2505050565b60006130b284613cfa565b905060005b81518110156131855760008282815181106130d4576130d461536b565b602002602001015190506131006040826affffffffffffffffffffff1916613c0a90919063ffffffff16565b1561317c576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590613149908990899089906004016154d6565b600060405180830381600087803b15801561316357600080fd5b505af1158015613177573d6000803e3d6000fd5b505050505b506001016130b7565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516131b691906154c3565b60405180910390a260006131ca85856139e6565b90506132238160006131db866136ba565b67ffffffffffffffff8111156131f3576131f3614d68565b6040519080825280601f01601f19166020018201604052801561321d576020820181803683370190505b50613f01565b600061322e846128cb565b111561324f5760006132408686613e2b565b905061324d816020613f17565b505b60005b825181101561077157600083828151811061326f5761326f61536b565b6020026020010151905061329b6080826affffffffffffffffffffff1916613c0a90919063ffffffff16565b15613317576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132e4908a908a908a906004016154d6565b600060405180830381600087803b1580156132fe57600080fd5b505af1158015613312573d6000803e3d6000fd5b505050505b50600101613252565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cfe565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106133865761338661536b565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133e191906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f54565b60006060836001600160a01b03166000613410858989613f8f565b60405161341d91906154a7565b60006040518083038185875af1925050503d806000811461345a576040519150601f19603f3d011682016040523d82523d6000602084013e61345f565b606091505b509097909650945050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106134a7576134a761536b565b60200260200101818152505060006134c185836000613fa6565b9050612ad96134d38260008451613fe0565b61406e565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061350e5761350e61536b565b602002602001018181525050610b378482600061352a8661407f565b61408f565b600061353961367b565b9050306001600160a01b03821603613555576104a383836140ca565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061359c90869086906004016154ff565b600060405180830381600087803b1580156135b657600080fd5b505af11580156116f0573d6000803e3d6000fd5b60006135d461367b565b9050306001600160a01b038216036135f7576135f285858585613f54565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f326290613642908890889088908890600401615518565b600060405180830381600087803b15801561365c57600080fd5b505af1158015613670573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806136b5573391505090565b919050565b600060086136ca60026020615381565b6136d49190615394565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b17612909565b60608282604051602001612cfe92919061554c565b600080805b8360ff168110156137765761376c60ff601b83900360080287901c168361524a565b915060010161374a565b509392505050565b611bdd60f21b846001600160f01b031916036137d557837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516137c89392919061557b565b60405180910390a2610b37565b60006137e185856139e6565b905060006137ee86613cfa565b905060005b81518110156138c35760008282815181106138105761381061536b565b6020026020010151905061383c6004826affffffffffffffffffffff1916613c0a90919063ffffffff16565b156138ba576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613887908b908b908b908b906004016155ae565b600060405180830381600087803b1580156138a157600080fd5b505af11580156138b5573d6000803e3d6000fd5b505050505b506001016137f3565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138f89392919061557b565b60405180910390a2613913828565ffffffffffff1685613f01565b60005b81518110156116f05760008282815181106139335761393361536b565b6020026020010151905061395f6008826affffffffffffffffffffff1916613c0a90919063ffffffff16565b156139dd576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906139aa908b908b908b908b906004016155ae565b600060405180830381600087803b1580156139c457600080fd5b505af11580156139d8573d6000803e3d6000fd5b505050505b50600101613916565b600082826040516020016139fb9291906155e7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a6257602082048401935060208281613a5e57613a5e615623565b0691505b508254600882021b602082900380841115613776576001850154600882021c82179150509392505050565b6000613ab9827f01ffc9a700000000000000000000000000000000000000000000000000000000613ace565b801561032657506113c9826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b6f575060208210155b8015613b7b5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613bc057613bc061536b565b60209081029190910101526000613bf87f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613fa6565b90506115766134d38260008451613fe0565b60008160ff1682613c1b8560581c90565b1660ff1614905092915050565b60006060600080613c38866140dd565b90925090506001600160a01b038216613c555785610e6b87610d40565b80613c6457613c648689614195565b8615613ca8576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c90826141ac565b9050613ca582613ca08b8461524a565b614225565b50505b6000613cb48760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cdf57613cda888884886133f5565b613ceb565b613ceb888884886142a4565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d3457613d3461536b565b60209081029190910101526000613bf87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613fa6565b8215613de65760208310613d9657602083048401935060208381613d9257613d92615623565b0692505b8215613de65760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dd7575050610b37565b50600194909401939182900391015b5b60208210613e085780518455600190930192601f1990910190602001613de7565b8115610b37576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e409291906155e7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e969291906155e7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613f128560200190565b613d6c565b60006020613f2683601f61524a565b613f309190615639565b613f3a908461524a565b90505b808310156104a35760008355600183019250613f3d565b6000613f608585614305565b90506000613f7d828560ff166028026038011c64ffffffffff1690565b90506107718686868460008888614318565b60608383836040516020016136fb9392919061565b565b6060611576613fb6858585613e81565b6000613fdb85613fc68989614305565b9060ff166028026038011c64ffffffffff1690565b6146c2565b600081831180613ff05750835182115b1561402d578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc9392919061569a565b6020840161403b848261524a565b905060006140498585615381565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061290983601560006146e5565b6060816129098160156000614760565b600061409b8585614305565b905060006140b8828560ff166028026038011c64ffffffffff1690565b90506107718686866000858888614318565b61034f82826140d8856147b4565b613054565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106141175761411761536b565b6020908102919091010152600080806141707f7462776f726c6400000000000000000053797374656d73000000000000000000857e15020014010000000000000000000000000000000000000000000000000000614839565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61419f8282614941565b61034f57610cc982610d40565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141e5576141e561536b565b602090810291909101015260006115767f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612aac565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061425b5761425b61536b565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161139791815260200190565b60006060836001600160a01b03166142bd848888613f8f565b6040516142ca91906154a7565b600060405180830381855af49150503d806000811461345a576040519150601f19603f3d011682016040523d82523d6000602084013e61345f565b60006129096143148484613e2b565b5490565b613a3160f11b876001600160f01b0319161461434857613a3160f11b8788604051602001610eec91815260200190565b6000614363828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361437c9190615381565b614386919061524a565b90508082141580156143a857508161439e86886156bf565b64ffffffffff1614155b156143f8576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff161115614449576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b6000614456848984614977565b905060006144638b613cfa565b905060005b815181101561452e5760008282815181106144855761448561536b565b602002602001015190506144b16010826affffffffffffffffffffff1916613c0a90919063ffffffff16565b1561452557606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144f297969594939291906156e4565b600060405180830381600087803b15801561450c57600080fd5b505af1158015614520573d6000803e3d6000fd5b505050505b50600101614468565b5064ffffffffff881660005b8a60ff168160ff16101561456d57614561878260ff166028026038011c64ffffffffff1690565b9091019060010161453a565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d6040516145a896959493929190615742565b60405180910390a2508284146145c95760006145c48c8c613e2b565b839055505b60006145d68c8c8c613e81565b90506145ea818a64ffffffffff1689613f01565b5060005b81518110156146b457600082828151811061460b5761460b61536b565b602002602001015190506146376020826affffffffffffffffffffff1916613c0a90919063ffffffff16565b156146ab57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161467897969594939291906156e4565b600060405180830381600087803b15801561469257600080fd5b505af11580156146a6573d6000803e3d6000fd5b505050505b506001016145ee565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261377685858584614a45565b606060006146f38560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161471957614719615623565b04905060405193506020840160208202810160405281855260005b82811015614754578451871c825293870193602090910190600101614734565b50505050509392505050565b825160609060006147718583615394565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614754578051871b83529187019160019190910190602001614793565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161480357507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148307f746273746f72650000000000000000005461626c65730000000000000000000084614b11565b60206000613a3c565b606060006060600061484a856136ba565b9050614857878783614b2d565b93506000614864866128cb565b90508015614936576148768888614305565b935066ffffffffffffff841667ffffffffffffffff81111561489a5761489a614d68565b6040519080825280601f01601f1916602001820160405280156148c4576020820181803683370190505b5092506020830160005b828160ff1610156149335760006148e68b8b84613e81565b90506000614903888460ff166028026038011c64ffffffffff1690565b90506149128260008387614a45565b61491c818561524a565b93505050808061492b9061579e565b9150506148ce565b50505b505093509350939050565b6000614967616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b66565b8061290957506129098383614b66565b600064ffffffffff8211156149bb576040517f7149a3c1000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149ed57808503820191506149f5565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614acc5760208310614a6f57602083048401935060208381614a6b57614a6b615623565b0692505b8215614acc576020839003600081841015614a925750600019600884021c614a9c565b50600019600882021c5b8554600886021b818451168219821617845250818411614abd575050610b37565b50600194909401939182900391015b5b60208210614aee5783548152600190930192601f1990910190602001614acd565b8115610b37576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139fb565b606081600003614b4c5750604080516020810190915260008152612909565b6000614b5885856139e6565b9050612ad9816000856146c2565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b9f57614b9f61536b565b602002602001018181525050826001600160a01b031660001b81600181518110614bcb57614bcb61536b565b60209081029190910101526000614c0b7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612aac565b9050612ad98160f81c90565b600060208284031215614c2957600080fd5b81356001600160e01b03198116811461290957600080fd5b6001600160a01b03811681146109f057600080fd5b60008060408385031215614c6957600080fd5b823591506020830135614c7b81614c41565b809150509250929050565b60008083601f840112614c9857600080fd5b50813567ffffffffffffffff811115614cb057600080fd5b6020830191508360208260051b8501011115614ccb57600080fd5b9250929050565b60008060008060008060008060c0898b031215614cee57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614d2257600080fd5b614d2e8c838d01614c86565b909650945060a08b0135915080821115614d4757600080fd5b50614d548b828c01614c86565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614da757614da7614d68565b604052919050565b600082601f830112614dc057600080fd5b813567ffffffffffffffff811115614dda57614dda614d68565b614ded6020601f19601f84011601614d7e565b818152846020838601011115614e0257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e3457600080fd5b8335614e3f81614c41565b925060208401359150604084013567ffffffffffffffff811115614e6257600080fd5b614e6e86828701614daf565b9150509250925092565b60008060408385031215614e8b57600080fd5b82359150602083013567ffffffffffffffff811115614ea957600080fd5b614eb585828601614daf565b9150509250929050565b600080600060608486031215614ed457600080fd5b833592506020840135614ee681614c41565b915060408401358015158114614efb57600080fd5b809150509250925092565b803560ff811681146136b557600080fd5b600080600060608486031215614f2c57600080fd5b833592506020840135614f3e81614c41565b9150614f4c60408501614f06565b90509250925092565b600080600060608486031215614f6a57600080fd5b83359250602084013567ffffffffffffffff80821115614f8957600080fd5b614f9587838801614daf565b93506040860135915080821115614fab57600080fd5b50614e6e86828701614daf565b60008060408385031215614fcb57600080fd5b8235614fd681614c41565b9150602083013567ffffffffffffffff811115614ea957600080fd5b60006020828403121561500457600080fd5b5035919050565b60008060006060848603121561502057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e6257600080fd5b60006020828403121561505757600080fd5b813561290981614c41565b60005b8381101561507d578181015183820152602001615065565b50506000910152565b6000815180845261509e816020860160208601615062565b601f01601f19169290920160200192915050565b8281526040602082015260006115766040830184615086565b600067ffffffffffffffff808411156150e6576150e6614d68565b8360051b60206150f860208301614d7e565b8681529185019160208101903684111561511157600080fd5b865b848110156151455780358681111561512b5760008081fd5b61513736828b01614daf565b845250918301918301615113565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ad96060830184615086565b6000835161518c818460208801615062565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516151c6816002840160208801615062565b01600201949350505050565b8051602080830151919081101561296a5760001960209190910360031b1b16919050565b6020815260006129096020830184615086565b60408152600061521c6040830185615086565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561032657610326615234565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516152a6816003860160208901615062565b8084019050816003820152845191506152c6826004830160208801615062565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561535e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261534c858351615086565b94509285019290850190600101615312565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561032657610326615234565b808202811582820484141761032657610326615234565b6001600160a01b0384168152826020820152606060408201526000612ad96060830184615086565b60008151808452602080850194506020840160005b83811015615404578151875295820195908201906001016153e8565b509495945050505050565b60808152600061542260808301876153d3565b82810360208401526154348187615086565b90508460408401528281036060840152613b7b8185615086565b86815260c06020820152600061546760c08301886153d3565b82810360408401526154798188615086565b905085606084015282810360808401526154938186615086565b9150508260a0830152979650505050505050565b600082516154b9818460208701615062565b9190910192915050565b60208152600061290960208301846153d3565b8381526060602082015260006154ef60608301856153d3565b9050826040830152949350505050565b82815260406020820152600061157660408301846153d3565b84815260806020820152600061553160808301866153d3565b60ff851660408401528281036060840152613b7b8185615086565b6000835161555e818460208801615062565b835190830190615572818360208801615062565b01949350505050565b60608152600061558e60608301866153d3565b65ffffffffffff8516602084015282810360408401526114ea8185615086565b8481526080602082015260006155c760808301866153d3565b65ffffffffffff851660408401528281036060840152613b7b8185615086565b8281526000602080830184516020860160005b82811015615616578151845292840192908401906001016155fa565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261565657634e487b7160e01b600052601260045260246000fd5b500490565b6000845161566d818460208901615062565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006156ad6060830186615086565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156dd576156dd615234565b5092915050565b87815260e0602082015260006156fd60e08301896153d3565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526157348185615086565b9a9950505050505050505050565b60c08152600061575560c08301896153d3565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a08401526157918185615086565b9998505050505050505050565b600060ff821660ff81036157b4576157b4615234565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b50604051620048d0380380620048d0833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e051610100516147a26200012e60003960008181610701015281816113df01526115530152600061069901526000610631015260006105b00152600050506147a26000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004613f76565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004613fce565b610203565b005b604051601f193601358152602001610096565b6100df610102366004613fce565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610943565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b61029461094d565b61029c610bf5565b6102a4610c76565b6102ac610cda565b6102b4610d56565b6102bc610dba565b6102c4610df7565b6102cc610e73565b6102d4610eef565b6102dc610f83565b6102e4611013565b6102ec61108b565b6102f46110ef565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f9061407f565b600161115d565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b6040516020818303038152906040526103719061407f565b6103796101f4565b611203565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b99061407f565b6103c16101f4565b60016112e0565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea9061407f565b6113a2565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600061073161145f565b905060005b60048110156107bc576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107b491016040516020818303038152906040526107989061407f565b8383600481106107aa576107aa6140a3565b6020020151611544565b600101610736565b5060006107c76115e4565b905060005b6002811015610849576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261084191015b60405160208183030381529060405261082f9061407f565b8383600281106107aa576107aa6140a3565b6001016107cc565b506000610854611635565b905060005b60028110156108b0576040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526108a89101610817565b600101610859565b5060006108bb6116a3565b905060005b600e81101561093c576040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261093491016040516020818303038152906040526109229061407f565b8383600e81106107aa576107aa6140a3565b6001016108c0565b5050505050565b60006101fe6118b4565b6109767f746273746f72650000000000000000005461626c657300000000000000000000611900565b156109f457604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526109eb9291600401614109565b60405180910390fd5b610a1d7f746273746f72650000000000000000005265736f757263654964730000000000611900565b15610a5557604080517f746273746f72650000000000000000005265736f7572636549647300000000006020820181905291016109aa565b610b147f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000632001005f60d81b7e6003025f5f5fc4c40000000000000000000000000000000000000000000000610ac961198d565b604051602001610ad9919061417c565b604051602081830303815290604052610af0611a12565b604051602001610b00919061417c565b604051602081830303815290604052611bda565b610b977f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b632001005f60d81b7e01010060000000000000000000000000000000000000000000000000000000610b70611ca1565b604051602001610b80919061417c565b604051602081830303815290604052610af0611d18565b610bc27f746273746f72650000000000000000005461626c657300000000000000000000600161115d565b610bed7f746273746f72650000000000000000005265736f757263654964730000000000600161115d565b61056c611d8f565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000632001005f60d81b7e14010061000000000000000000000000000000000000000000000000000000610c69611e07565b610c71611e7e565b611ef5565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b632001005f60d81b7e2001001f000000000000000000000000000000000000000000000000000000610cd2611e07565b610c71611fc9565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b7e340200615f00000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610d4e612040565b610c7161210a565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b7e28020061610000000000000000000000000000000000000000000000000000632001005f60d81b610db2612181565b610c7161224b565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b632001005f60d81b80610db2611e07565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b7e3402005f6100000000000000000000000000000000000000000000000000007e01010060000000000000000000000000000000000000000000000000000000610e6b6122c2565b610c7161238c565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e15020014010000000000000000000000000000000000000000000000000000632001005f60d81b7e15020061600000000000000000000000000000000000000000000000000000610ee7612403565b610c7161247a565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007e2402005f430000000000000000000000000000000000000000000000000000610f7b612544565b610c716125bb565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c01000000000000000000000000000000000000000000000000000000007e040100430000000000000000000000000000000000000000000000000000007c01c500000000000000000000000000000000000000000000000000000061100b612685565b610c716126fc565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611083612403565b610c71612773565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b7e14010061000000000000000000000000000000000000000000000000000000632001005f60d81b6110e76127ea565b610c71612403565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000060007e14010061000000000000000000000000000000000000000000000000000000611083612861565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611193576111936140a3565b6020026020010181815250506111fe7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016111e191151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612894565b505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611239576112396140a3565b6020026020010181815250506111fe7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016112ab919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612894565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611315576113156140a3565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061134e5761134e6140a3565b60200260200101818152505061139c7f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016111e191151560f81b815260010190565b50505050565b6111fe6113ad6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a9000000000000000000000000000000000000000000000000000000001790526128a9565b611467613f1b565b60405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c616464726573732900000081525081526020016040518060600160405280602281526020016147746022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905090565b6111fe61154f6101f4565b60007f00000000000000000000000000000000000000000000000000000000000000008585866040516024016115879392919061418f565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6548a90a000000000000000000000000000000000000000000000000000000001790526128a9565b6115ec613f42565b60405180604001604052806040518060600160405280603381526020016147186033913981526020016040518060600160405280603181526020016145e7603191399052919050565b61163d613f42565b60405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614673602891399052919050565b6116ab613f5b565b604051806101c001604052806040518060400160405280601c81526020017f696e7374616c6c4d6f64756c6528616464726573732c62797465732900000000815250815260200160405180606001604052806040815260200161453260409139815260200160405180606001604052806028815260200161461860289139815260200160405180606001604052806024815260200161450e6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d657370616365286279746573333229000000000000815250815260200160405180606001604052806029815260200161474b60299139815260200160405180606001604052806025815260200161469b6025913981526020016040518060600160405280602481526020016145c360249139815260200160405180606001604052806028815260200161459b6028913981526020016040518060600160405280603381526020016146406033913981526020016040518060600160405280602981526020016145726029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e28616464726573732900000081525081526020016040518060600160405280603281526020016146e66032913981526020016040518060600160405280602681526020016146c0602691399052919050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806118fb573391505090565b919050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611939576119396140a3565b602090810291909101015260006119797f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b6128d6565b90506119858160f81c90565b949350505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816119a45790505090506040518060400160405280600781526020017f7461626c6549640000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a2a5790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a8a57611a8a6140a3565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ade57611ade6140a3565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b3257611b326140a3565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b8657611b866140a3565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600481518110611a0457611a046140a3565b6000611be786868661290c565b90506000611bf58484612942565b90506000611c038585612962565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c3d57611c3d6140a3565b6020908102919091010152611c957f746273746f72650000000000000000005461626c657300000000000000000000828686867e6003022020200000000000000000000000000000000000000000000000000061298e565b50505050505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cb85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d2f5790505090506040518060400160405280600681526020017f657869737473000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000632001005f60d81b7c01b6000000000000000000000000000000000000000000000000000000611dff61198d565b610c71612ccf565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e1e5790505090506040518060400160405280600b81526020017f6e616d657370616365496400000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e955790505090506040518060400160405280600581526020017f6f776e657200000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6000611eff6118b4565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f3157611f2c878787878787612d46565b611fc0565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611f8d908a908a908a908a908a908a906004016141ba565b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050505b50505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081611fe05790505090506040518060400160405280600781526020017f62616c616e63650000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816120565790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106120b6576120b66140a3565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e7473486173680000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816121215790505090506040518060400160405280600b81526020017f6973496e7374616c6c656400000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816121975790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106121f7576121f76140a3565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816122625790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c49640000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816122d85790505090506040518060400160405280600a81526020017f7265736f7572636549640000000000000000000000000000000000000000000081525081600081518110612338576123386140a3565b60200260200101819052506040518060400160405280600681526020017f63616c6c6572000000000000000000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816123a35790505090506040518060400160405280600681526020017f616363657373000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161241a5790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816124905790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106124f0576124f06140a3565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161255b5790505090506040518060400160405280601581526020017f776f726c6446756e6374696f6e53656c6563746f72000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160028082526060828101909352816020015b60608152602001906001900390816125d15790505090506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600081518110612631576126316140a3565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600181518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161269c5790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f720000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816127135790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e617475726500000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b606081526020019060019003908161278a5790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b604080516001808252818301909252606091816020015b60608152602001906001900390816128015790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b6040805160008082526020820190925260609161288e565b60608152602001906001900390816128795790505b50905090565b61093c85856128a38487613182565b856131bb565b60606000806128ba87878787613456565b91509150816128cc576128cc816134d7565b9695505050505050565b60006129036128e586866134df565b60ff858116601b0360080285901c166128fe8587613182565b613535565b95945050505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612977929190614204565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612a1a57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612a0d949392919061426f565b60405180910390a2612cc7565b6000612a2587613586565b905060005b8151811015612afe576000828281518110612a4757612a476140a3565b60200260200101519050612a736001826affffffffffffffffffffff191661360f90919063ffffffff16565b15612af5576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612ac2908c908c908c908c908c908c906004016142b9565b600060405180830381600087803b158015612adc57600080fd5b505af1158015612af0573d6000803e3d6000fd5b505050505b50600101612a2a565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612b35949392919061426f565b60405180910390a26000612b4988886134df565b90506000602087019050612b6182600089518461362d565b6000612b6c856136ec565b1115612bf0576000612b7e8a8a613729565b878155905060208601915060008060005b612b98886136ec565b8160ff161015612beb57612bad8d8d8361377f565b9250612bc88a8260ff166028026038011c64ffffffffff1690565b9150612bd7836000848861362d565b612be18286614328565b9450600101612b8f565b505050505b60005b8351811015611c95576000848281518110612c1057612c106140a3565b60200260200101519050612c3c6002826affffffffffffffffffffff191661360f90919063ffffffff16565b15612cbe576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612c8b908e908e908e908e908e908e906004016142b9565b600060405180830381600087803b158015612ca557600080fd5b505af1158015612cb9573d6000803e3d6000fd5b505050505b50600101612bf3565b505050505050565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ce65790505090506040518060400160405280600581526020017f686f6f6b7300000000000000000000000000000000000000000000000000000081525081600081518110611a0457611a046140a3565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dda57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e56577f74620000000000000000000000000000000000000000000000000000000000008687604051602001612e1491815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526109eb93929160040161433b565b612e5f856137ff565b612e6a846001613a46565b612e75836000613a46565b60e084901c60e885901c0160ff16825114612ed55760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff16815114612f355760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612fad5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b612fb685613be2565b612fbf84613be2565b1461301157612fcd85613be2565b612fd684613be2565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b61301a856136ec565b613023846136ec565b1461307557613031856136ec565b61303a846136ec565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b60005b61308186613be2565b81101561311c576130ab6130958583613bf4565b60c58111156130a6576130a661437c565b613c15565b6008601b8390030287901c60ff1614613114576008601b8290030286901c60ff166130d96130958684613bf4565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109eb565b600101613078565b5061312686611900565b1561313f5785866040516020016109aa91815260200190565b6131778686868686604051602001613157919061417c565b60405160208183030381529060405286604051602001610b00919061417c565b612cc786600161115d565b600080805b8360ff168110156131b3576131a960ff601b83900360080287901c1683614328565b9150600101613187565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361324557837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161323893929190614392565b60405180910390a261139c565b600061325185856134df565b9050600061325e86613586565b905060005b8151811015613333576000828281518110613280576132806140a3565b602002602001015190506132ac6004826affffffffffffffffffffff191661360f90919063ffffffff16565b1561332a576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906132f7908b908b908b908b906004016143c5565b600060405180830381600087803b15801561331157600080fd5b505af1158015613325573d6000803e3d6000fd5b505050505b50600101613263565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161336893929190614392565b60405180910390a2613383828565ffffffffffff1685613c75565b60005b8151811015611fc05760008282815181106133a3576133a36140a3565b602002602001015190506133cf6008826affffffffffffffffffffff191661360f90919063ffffffff16565b1561344d576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061341a908b908b908b908b906004016143c5565b600060405180830381600087803b15801561343457600080fd5b505af1158015613448573d6000803e3d6000fd5b505050505b50600101613386565b600060608373ffffffffffffffffffffffffffffffffffffffff1661347c848888613c8b565b60405161348991906143fe565b600060405180830381855af49150503d80600081146134c4576040519150601f19603f3d011682016040523d82523d6000602084013e6134c9565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016134f492919061441a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061355b5760208204840193506020828161355757613557614456565b0691505b508254600882021b6020829003808411156131b3576001850154600882021c82179150509392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106135c0576135c06140a3565b602090810291909101015260006135f87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613ca2565b905061198561360a8260008451613cdc565b613d6a565b60008160ff16826136208560581c90565b1660ff1614905092915050565b82156136a757602083106136575760208304840193506020838161365357613653614456565b0692505b82156136a75760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161369857505061139c565b50600194909401939182900391015b5b602082106136c95780518455600190930192601f19909101906020016136a8565b811561139c576000600019600884021c8554835182191691161785555050505050565b600060086001806136ff6002602061446c565b613709919061446c565b613713919061446c565b61371d919061447f565b8260ff911c1692915050565b6000828260405160200161373e92919061441a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161379492919061441a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613836576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613841826136ec565b90506005811115613888576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016109eb565b600061389383613be2565b905060006138a18383614328565b9050601c8111156138e8576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016109eb565b6000805b838110156139935760ff601b82900360080287901c166000819003613940576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b602081111561397e576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b6139888184614328565b9250506001016138ec565b5061399d85613d7b565b81146139e9576139ac85613d7b565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109eb565b825b601c811015612cc75760ff601b82900360080287901c168015613a3d576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016109eb565b506001016139eb565b80158015613a52575081155b15613a735760405163d498615960e01b8152600060048201526024016109eb565b6000613a7e836136ec565b90506005811115613aa55760405163d498615960e01b8152600481018290526024016109eb565b6000613ab084613be2565b90506000613abe8383614328565b9050601c811115613ae55760405163d498615960e01b8152600481018290526024016109eb565b6000805b83811015613b51576000613b006130958984613bf4565b905080600003613b3c576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b468184614328565b925050600101613ae9565b50613b5b86613d7b565b8114613b8657613b6a86613d7b565b60405163d498615960e01b81526004016109eb91815260200190565b825b82811015611fc0576000613b9f6130958984613bf4565b90508015613bd9576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101613b88565b6000600860016137096002602061446c565b6000601b8290036008028360ff911c1660c581111561295b5761295b61437c565b6000808260c5811115613c2a57613c2a61437c565b60ff1690506061811015613c4457601f1660010192915050565b60618360c5811115613c5857613c5861437c565b03613c665750601492915050565b50600092915050565b50919050565b6111fe83838351613c868560200190565b61362d565b606083838360405160200161292a93929190614496565b6060611985613cb285858561377f565b6000613cd785613cc28989613d9e565b9060ff166028026038011c64ffffffffff1690565b613db1565b600081831180613cec5750835182115b15613d29578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016109eb939291906144e8565b60208401613d378482614328565b90506000613d45858561446c565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061295b8360156000613dd4565b60006008613d8b6002602061446c565b613d95919061447f565b9190911c919050565b600061295b613dad8484613729565b5490565b60405160208101601f19603f84840101166040528282526131b385858584613e4f565b60606000613de28560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281613e0857613e08614456565b04905060405193506020840160208202810160405281855260005b82811015613e43578451871c825293870193602090910190600101613e23565b50505050509392505050565b8215613ed65760208310613e7957602083048401935060208381613e7557613e75614456565b0692505b8215613ed6576020839003600081841015613e9c5750600019600884021c613ea6565b50600019600882021c5b8554600886021b818451168219821617845250818411613ec757505061139c565b50600194909401939182900391015b5b60208210613ef85783548152600190930192601f1990910190602001613ed7565b811561139c576000600019600884021c8251865482191691161782525050505050565b60405180608001604052806004905b6060815260200190600190039081613f2a5790505090565b6040805180820190915260608152600160208201613f2a565b604080516101c0810190915260608152600d60208201613f2a565b600060208284031215613f8857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461295b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215613fe057600080fd5b813567ffffffffffffffff80821115613ff857600080fd5b818401915084601f83011261400c57600080fd5b81358181111561401e5761401e613fb8565b604051601f8201601f19908116603f0116810190838211818310171561404657614046613fb8565b8160405282815287602084870101111561405f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613c6f5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b838110156140d45781810151838201526020016140bc565b50506000910152565b600081518084526140f58160208601602086016140b9565b601f01601f19169290920160200192915050565b82815260406020820152600061198560408301846140dd565b60008282518085526020808601955060208260051b8401016020860160005b8481101561416f57601f1986840301895261415d8383516140dd565b98840198925090830190600101614141565b5090979650505050505050565b60208152600061295b6020830184614122565b8381526060602082015260006141a860608301856140dd565b82810360408401526128cc81856140dd565b86815285602082015284604082015283606082015260c0608082015260006141e560c0830185614122565b82810360a08401526141f78185614122565b9998505050505050505050565b600083516142168184602088016140b9565b83519083019061422a8183602088016140b9565b01949350505050565b60008151808452602080850194506020840160005b8381101561426457815187529582019590820190600101614248565b509495945050505050565b6080815260006142826080830187614233565b828103602084015261429481876140dd565b905084604084015282810360608401526142ae81856140dd565b979650505050505050565b86815260c0602082015260006142d260c0830188614233565b82810360408401526142e481886140dd565b905085606084015282810360808401526142fe81866140dd565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee614312565b7fffff0000000000000000000000000000000000000000000000000000000000008416815282602082015260606040820152600061290360608301846140dd565b634e487b7160e01b600052602160045260246000fd5b6060815260006143a56060830186614233565b65ffffffffffff8516602084015282810360408401526128cc81856140dd565b8481526080602082015260006143de6080830186614233565b65ffffffffffff8516604084015282810360608401526142ae81856140dd565b600082516144108184602087016140b9565b9190910192915050565b8281526000602080830184516020860160005b828110156144495781518452928401929084019060010161442d565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b818103818111156101ee576101ee614312565b80820281158282048414176101ee576101ee614312565b600084516144a88184602089016140b9565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b6060815260006144fb60608301866140dd565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c737472696e6729626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:210:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:320;;;:::i;:::-;;2170:134:119;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;5071:1492:210:-;;;:::i;2787:146:119:-;;;:::i;6567:861:210:-;;;:::i;1875:141:119:-;;;:::i;1819:584:113:-;;;:::i;:::-;;;4024:14:214;;4017:22;3999:41;;3987:2;3972:18;1819:584:113;3859:187:214;3475:1592:210;;;:::i;2240:1231::-;;;:::i;2022:142:119:-;;;:::i;1572:26:113:-;;;;;;;;;1916:320:210;1954:13;:11;:13::i;:::-;1946:5;:21;;;;-1:-1:-1;;;;;1946:21:210;;;;;;;;;1997:31;;1973:23;;1997:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2030:12:210;;;2040:1;2030:12;;;;;;;;;1973:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:22;2104:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2131:5:210;;2155:8;;2079:46;;-1:-1:-1;;;;;;2131:5:210;;:23;;2155:25;;578:36:65;2955:46;696:18:105;2954:74:65;;2843:191;2155:25:210;2131:50;;;;;;;;;;;;;4796:25:214;;4784:2;4769:18;;4619:208;2131:50:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2187:5:210;;2208:8;;2187:44;;;;;;;;5084:25:214;;;;-1:-1:-1;;;;;5145:55:214;;;5125:18;;;5118:83;2187:5:210;5217:18:214;;;5210:50;2187:5:210;;;;-1:-1:-1;2187:20:210;;-1:-1:-1;5057:18:214;;2187:44:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:296;1916:320::o;2170:134:119:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:119;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:119;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:119;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5071:1492:210;5199:10;;;;;5207:1;5199:10;;;4796:25:214;5150:4:210;;5199:7;;;;4769:18:214;;5199:10:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5266:9:210;;5257:19;;-1:-1:-1;;;5257:19:210;;-1:-1:-1;;;;;5266:9:210;;;5257:19;;;6049:74:214;5257:8:210;;-1:-1:-1;5257:8:210;;-1:-1:-1;6022:18:214;;5257:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5282:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;5337:5;;5369:9;;;719:71:192;;;-1:-1:-1;;;719:71:192;;;6317:92:214;5337:5:210;6425:11:214;;;6418:100;;;;769:20:192;6534:12:214;;;6527:101;-1:-1:-1;;;;;5337:5:210;;;;:24;;5369:9;;;6644:12:214;719:71:192;;;;;;;;;;;;711:80;;;:::i;:::-;5473:9:210;;5414:84;;-1:-1:-1;;;;;5473:9:210;;;5414:84;;;7203:74:214;7293:18;;;7286:34;;;7176:18;;5414:84:210;;;-1:-1:-1;;5414:84:210;;;;;;;;;;;;;;-1:-1:-1;;;;;5414:84:210;;;;;5337:167;;5414:84;5337:167;;;;;;;;;;5414:84;5337:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:14;:12;:14::i;:::-;5607:9;;5598:19;;-1:-1:-1;;;5598:19:210;;-1:-1:-1;;;;;5607:9:210;;;5598:19;;;6049:74:214;5598:8:210;;;;6022:18:214;;5598:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;5713:5;;5728:9;;5739:8;;;5749:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5749:45:210;-1:-1:-1;;;5749:45:210;;;5713:82;;-1:-1:-1;;;5713:82:210;;5687:23;;-1:-1:-1;;;;;5713:5:210;;;;:14;;:82;;5728:9;;;;;5739:8;;5749:45;;5713:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5713:82:210;;;;;;;;;;;;:::i;:::-;5687:108;;5801:14;:12;:14::i;:::-;5821:23;5858:10;5847:33;;;;;;;;;;;;:::i;:::-;5979:9;;5821:59;;-1:-1:-1;5953:36:210;;5821:59;;-1:-1:-1;;;;;5979:9:210;5953:8;:36::i;:::-;6081:21;;;;;;;;4796:25:214;;;6081:7:210;;;;4769:18:214;;6081:21:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6117:9:210;;6108:19;;-1:-1:-1;;;6108:19:210;;-1:-1:-1;;;;;6117:9:210;;;6108:19;;;6049:74:214;6108:8:210;;-1:-1:-1;6108:8:210;;-1:-1:-1;6022:18:214;;6108:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:5:210;;6148:9;;6159:8;;;6169:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6169:45:210;-1:-1:-1;;;6169:45:210;;;6133:82;;-1:-1:-1;;;6133:82:210;;-1:-1:-1;;;;;6133:5:210;;;;-1:-1:-1;6133:14:210;;-1:-1:-1;6133:82:210;;6148:9;;;;;6159:8;;6169:45;;6133:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:82:210;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6305:7:210;;6313:16;:12;6328:1;6313:16;:::i;:::-;6305:25;;;;;;;;;;;;;4796::214;;4784:2;4769:18;;4619:208;6305:25:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6345:9:210;;6336:19;;-1:-1:-1;;;6336:19:210;;-1:-1:-1;;;;;6345:9:210;;;6336:19;;;6049:74:214;6336:8:210;;-1:-1:-1;6336:8:210;;-1:-1:-1;6022:18:214;;6336:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6448:9:210;;6459;;6377:92;;;-1:-1:-1;;;;;6448:9:210;;;6377:92;;;10091:34:214;6459:9:210;;;;10141:18:214;;;;10134:43;;;;6377:92:210;;;;;;;;;;10003:18:214;;;;6377:92:210;;;;;;;-1:-1:-1;;;;;6377:92:210;6400:46;6377:92;;;6361:109;;;;:15;;-1:-1:-1;6361:15:210;;-1:-1:-1;6361:109:210;;6377:92;6361:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:5:210;;6491:9;;6502:8;;;6512:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6512:45:210;-1:-1:-1;;;6512:45:210;;;6476:82;;-1:-1:-1;;;6476:82:210;;-1:-1:-1;;;;;6476:5:210;;;;-1:-1:-1;6476:14:210;;-1:-1:-1;6476:82:210;;6491:9;;;;;6502:8;;6512:45;;6476:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:82:210;;;;;;;;;;;;:::i;:::-;;5121:1442;;;5071:1492::o;2787:146:119:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:861:210;6706:32;6741:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6706:47;;6759:32;6794:122;-1:-1:-1;;;6794:122:210;;:25;:122::i;:::-;6922:5;;:76;;;;;;;;5084:25:214;;;-1:-1:-1;;;;;5145:55:214;;;5125:18;;;5118:83;6922:5:210;5217:18:214;;;5210:50;6759:157:210;;-1:-1:-1;6922:5:210;;;:20;;5057:18:214;;6922:76:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7121:9:210;;7112:19;;-1:-1:-1;;;7112:19:210;;-1:-1:-1;;;;;7121:9:210;;;7112:19;;;6049:74:214;7112:8:210;;-1:-1:-1;7112:8:210;;-1:-1:-1;6022:18:214;;7112:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7160:179:210;;;-1:-1:-1;;;;;11031:55:214;;7160:179:210;;;11013:74:214;7295:36:210;11103:18:214;;;;11096:107;;;;7160:179:210;;;;;;;;;;10986:18:214;;;;7160:179:210;;;;;;;-1:-1:-1;;;;;7160:179:210;7192:49;7160:179;;;7137:208;;;;;:15;;-1:-1:-1;7137:15:210;;-1:-1:-1;7137:208:210;;7160:179;7137:208;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7351:5:210;;7376:9;;7410:12;;;7351:5;7410:12;;;;;;;;;-1:-1:-1;;;;;7351:5:210;;;;-1:-1:-1;7351:24:210;;-1:-1:-1;7376:9:210;;;;;7387:21;;7410:12;;;;;;;;;;-1:-1:-1;7410:12:210;7351:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6635:793;;6567:861::o;1875:141:119:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:113;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:113;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7203:74:214;;;2221:17:113;7293:18:214;;;7286:34;2196:43:113;;;;;;;;;7176:18:214;;;2196:43:113;;;-1:-1:-1;;1671:64:113;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:113;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:113:o;3475:1592:210:-;3628:9;;3619:19;;-1:-1:-1;;;3619:19:210;;-1:-1:-1;;;;;3628:9:210;;;3619:19;;;6049:74:214;3619:8:210;;;;6022:18:214;;3619:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3644:51;;;;;;;;;;;;;;;;;;:14;:51::i;:::-;3701:5;;3733:9;;;546:73:192;;;-1:-1:-1;;;546:73:192;;;6317:92:214;3701:5:210;6425:11:214;;;6418:100;;;;596:22:192;6534:12:214;;;6527:101;-1:-1:-1;;;;;3701:5:210;;;;:24;;3733:9;;;6644:12:214;546:73:192;;;;;;;;;;;;538:82;;;:::i;:::-;3841:9:210;;3852:8;;3780:85;;-1:-1:-1;;;;;3841:9:210;;;3780:85;;;12766:74:214;12856:18;;;12849:34;3862:1:210;12899:18:214;;;12892:34;12739:18;;3780:85:210;;;-1:-1:-1;;3780:85:210;;;;;;;;;;;;;;-1:-1:-1;;;;;3780:85:210;;;;;3701:170;;3780:85;3701:170;;;;;;;;;;3780:85;3701:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:14;:12;:14::i;:::-;3974:9;;3965:19;;-1:-1:-1;;;3965:19:210;;-1:-1:-1;;;;;3974:9:210;;;3965:19;;;6049:74:214;3965:8:210;;;;6022:18:214;;3965:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3990:60;;;;;;;;;;;;;;;;;;:14;:60::i;:::-;4082:5;;4097:9;;4108:8;;;4118:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4118:45:210;-1:-1:-1;;;4118:45:210;;;4082:82;;-1:-1:-1;;;4082:82:210;;4056:23;;-1:-1:-1;;;;;4082:5:210;;;;:14;;:82;;4097:9;;;;;4108:8;;4118:45;;4082:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4082:82:210;;;;;;;;;;;;:::i;:::-;4056:108;;4170:14;:12;:14::i;:::-;4190:23;4227:10;4216:33;;;;;;;;;;;;:::i;:::-;4348:9;;4190:59;;-1:-1:-1;4322:36:210;;4190:59;;-1:-1:-1;;;;;4348:9:210;4322:8;:36::i;:::-;4453:9;;4444:19;;-1:-1:-1;;;4444:19:210;;-1:-1:-1;;;;;4453:9:210;;;4444:19;;;6049:74:214;4444:8:210;;;;6022:18:214;;4444:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:5:210;;4497:9;;4508:8;;4518:50;;4482:5;4518:50;;;4796:25:214;-1:-1:-1;;;;;4482:5:210;;;;-1:-1:-1;4482:14:210;;-1:-1:-1;4497:9:210;;;;;4769:18:214;;4518:50:210;;;-1:-1:-1;;4518:50:210;;;;;;;;;;;;;;-1:-1:-1;;;;;4518:50:210;;;;;4482:87;;4518:50;4482:87;;;;;;;;;;4518:50;4482:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:87:210;;;;;;;;;;;;:::i;:::-;4469:100;;4575:43;4632:10;4621:47;;;;;;;;;;;;:::i;:::-;4750:21;;4773:9;;4575:93;;-1:-1:-1;4741:42:210;;-1:-1:-1;;;;;4773:9:210;4741:8;:42::i;:::-;4849:9;;4840:19;;-1:-1:-1;;;4840:19:210;;-1:-1:-1;;;;;4849:9:210;;;4840:19;;;6049:74:214;4840:8:210;;;;6022:18:214;;4840:19:210;5903:226:214;2240:1231:210;2394:9;;2385:19;;-1:-1:-1;;;2385:19:210;;-1:-1:-1;;;;;2394:9:210;;;2385:19;;;6049:74:214;2385:8:210;;;;6022:18:214;;2385:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2410:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;2465:5;;2497:9;;;371:71:192;;;-1:-1:-1;;;371:71:192;;;6317:92:214;2465:5:210;6425:11:214;;;6418:100;;;;421:20:192;6534:12:214;;;6527:101;-1:-1:-1;;;;;2465:5:210;;;;:24;;2497:9;;;6644:12:214;371:71:192;;;;;;;;;;;;363:80;;;:::i;:::-;2618:9:210;;2629:8;;;2639:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2639:45:210;-1:-1:-1;;;2639:45:210;;;2542:154;;;;-1:-1:-1;;;;;2618:9:210;;;;2542:154;;:::i;:::-;;;;-1:-1:-1;;2542:154:210;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:154:210;;;;;2465:237;;2542:154;2465:237;;;;;;;;;;2542:154;2465:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:14;:12;:14::i;:::-;2805:9;;2796:19;;-1:-1:-1;;;2796:19:210;;-1:-1:-1;;;;;2805:9:210;;;2796:19;;;6049:74:214;2796:8:210;;;;6022:18:214;;2796:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;2911:5;;2926:9;;2937:8;;;2947:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:45:210;-1:-1:-1;;;2947:45:210;;;2911:82;;-1:-1:-1;;;2911:82:210;;2885:23;;-1:-1:-1;;;;;2911:5:210;;;;:14;;:82;;2926:9;;;;;2937:8;;2947:45;;2911:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2911:82:210;;;;;;;;;;;;:::i;:::-;2885:108;;2999:14;:12;:14::i;:::-;3019:23;3056:10;3045:33;;;;;;;;;;;;:::i;:::-;3177:9;;3019:59;;-1:-1:-1;3151:36:210;;3019:59;;-1:-1:-1;;;;;3177:9:210;3151:8;:36::i;:::-;3253:9;;3244:19;;-1:-1:-1;;;3244:19:210;;-1:-1:-1;;;;;3253:9:210;;;3244:19;;;6049:74:214;3244:8:210;;;;6022:18:214;;3244:19:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3356:9:210;;3367;;3285:92;;;-1:-1:-1;;;;;3356:9:210;;;3285:92;;;10091:34:214;3367:9:210;;;;10141:18:214;;;;10134:43;;;;3285:92:210;;;;;;;;;;10003:18:214;;;;3285:92:210;;;;;;;-1:-1:-1;;;;;3285:92:210;3308:46;3285:92;;;3269:109;;;;:15;;-1:-1:-1;3269:15:210;;-1:-1:-1;3269:109:210;;3285:92;3269:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:5:210;;3399:9;;3410:8;;;3420:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3420:45:210;-1:-1:-1;;;3420:45:210;;;3384:82;;-1:-1:-1;;;3384:82:210;;-1:-1:-1;;;;;3384:5:210;;;;-1:-1:-1;3384:14:210;;-1:-1:-1;3384:82:210;;3399:9;;;;;3410:8;;3420:45;;3384:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:82:210;;;;;;;;;;;;:::i;:::-;;2290:1181;;2240:1231::o;2022:142:119:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:119;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;232:137:112:-;264:16;313:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;286:40;;330:5;-1:-1:-1;;;;;330:16:112;;347:18;:16;:18::i;:::-;330:36;;;;;;;;;;-1:-1:-1;;;;;6067:55:214;;;330:36:112;;;6049:74:214;6022:18;;330:36:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:137;:::o;330:580:0:-;394:39;;;;;;;;;14698:21:214;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:114;14869:20:214;;;14862:52;394:8:0;;;;14834:19:214;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:114;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:114;;883:22:0;;;;;;;309:37:114;883:20:0;:22;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;14698:21:214;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:114;14869:20:214;;;14862:52;953:23:0;;-1:-1:-1;987:8:0;;;;14834:19:214;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;20307:2:214;1214:49:0;;;20289:21:214;20346:2;20326:18;;;20319:30;20385:27;20365:18;;;20358:55;20430:18;;1214:49:0;20105:349:214;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;3622:277:113:-;3690:1;-1:-1:-1;;;;;3685:6:113;:1;-1:-1:-1;;;;;3685:6:113;;3681:212;;3712:44;;;;;22422:2:214;22404:21;;;22461:2;22441:18;;;22434:30;22500:34;22495:2;22480:18;;22473:62;22571:7;22566:2;22551:18;;22544:35;22611:3;22596:19;;22220:401;3712:44:113;;;;;;;;3775:34;;;22838:21:214;;;22895:2;22875:18;;;22868:30;22934:12;22929:2;22914:18;;22907:40;-1:-1:-1;;;;;23021:55:214;;23014:4;22999:20;;22992:85;3775:34:113;;;;;;;22979:3:214;3775:34:113;;;3828;;;23300:21:214;;;23357:2;23337:18;;;23330:30;23396:12;23391:2;23376:18;;23369:40;-1:-1:-1;;;;;23483:55:214;;23476:4;23461:20;;23454:85;3828:34:113;;;;;;;23441:3:214;3828:34:113;;;3876:6;:4;:6::i;:::-;3622:277;;:::o;1046:257:65:-;1133:10;1262:26;438:6;451:5:20;1262:26:65;:::i;:::-;1189:15;;;1208:31;451:5:20;1208:31:65;;;;1189:51;1244:13;;;:45;;;1189:101;;-1:-1:-1;1046:257:65;;;;;:::o;506:219:111:-;543:10;592:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;628:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;663:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;692:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;570:152;;;;;:::i;:::-;-1:-1:-1;;;;;23976:15:214;;;23958:34;;24028:15;;;24023:2;24008:18;;24001:43;24080:15;;;24075:2;24060:18;;24053:43;24132:15;;;24127:2;24112:18;;24105:43;23884:3;23869:19;570:152:111;;;;;;;;;;;;;;;;;;;;;;;559:163;;506:219;:::o;1754:155:0:-;1818:86;317:28:114;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;4796:25:214;;;4784:2;4769:18;;4619:208;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;:::-;1754:155;:::o;2409:432:113:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;12766:74:214;;;2677:17:113;12856:18:214;;;12849:34;;;;2712:4:113;12899:18:214;;;12892:34;2489:11:113;;1671:64;2586:43;;12739:18:214;;2652:67:113;;;-1:-1:-1;;2652:67:113;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:113;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:113;2820:7;:14;;;;;;;;2409:432::o;5630:121:127:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:127;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:127;;;;;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:214:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:214;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:214;;14:681;-1:-1:-1;;;;;;14:681:214:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;-1:-1:-1;;1384:95:214;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:214;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:214;;;;2283:5;-1:-1:-1;;;2311:15:214;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:214;;700:1697;-1:-1:-1;;;;;;;;;700:1697:214:o;2402:250::-;2487:1;2497:113;2511:6;2508:1;2505:13;2497:113;;;2587:11;;;2581:18;2568:11;;;2561:39;2533:2;2526:10;2497:113;;;-1:-1:-1;;2644:1:214;2626:16;;2619:27;2402:250::o;2657:330::-;2699:3;2737:5;2731:12;2764:6;2759:3;2752:19;2780:76;2849:6;2842:4;2837:3;2833:14;2826:4;2819:5;2815:16;2780:76;:::i;:::-;2901:2;2889:15;-1:-1:-1;;2885:88:214;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:214:o;2992:862::-;3154:4;3183:2;3223;3212:9;3208:18;3253:2;3242:9;3235:21;3276:6;3311;3305:13;3342:6;3334;3327:22;3380:2;3369:9;3365:18;3358:25;;3442:2;3432:6;3429:1;3425:14;3414:9;3410:30;3406:39;3392:53;;3480:2;3472:6;3468:15;3501:1;3511:314;3525:6;3522:1;3519:13;3511:314;;;-1:-1:-1;;3602:9:214;3594:6;3590:22;3586:95;3581:3;3574:108;3705:40;3738:6;3729;3723:13;3705:40;:::i;:::-;3695:50;-1:-1:-1;3803:12:214;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:214;;2992:862;-1:-1:-1;;;;;;;2992:862:214:o;4051:184::-;4103:77;4100:1;4093:88;4200:4;4197:1;4190:15;4224:4;4221:1;4214:15;4240:374;-1:-1:-1;;;;;4455:6:214;4451:55;4440:9;4433:74;4543:2;4538;4527:9;4523:18;4516:30;4414:4;4563:45;4604:2;4593:9;4589:18;4581:6;4563:45;:::i;:::-;4555:53;4240:374;-1:-1:-1;;;;4240:374:214:o;5271:437::-;5350:1;5346:12;;;;5393;;;5414:61;;5468:4;5460:6;5456:17;5446:27;;5414:61;5521:2;5513:6;5510:14;5490:18;5487:38;5484:218;;5558:77;5555:1;5548:88;5659:4;5656:1;5649:15;5687:4;5684:1;5677:15;5484:218;;5271:437;;;:::o;6667:357::-;6785:12;;6832:4;6821:16;;;6815:23;;6785:12;6850:16;;6847:171;;;-1:-1:-1;;6924:4:214;6920:17;;;;6917:1;6913:25;6909:98;6898:110;;6667:357;-1:-1:-1;6667:357:214:o;7331:440::-;-1:-1:-1;;;;;7569:6:214;7565:55;7554:9;7547:74;7657:6;7652:2;7641:9;7637:18;7630:34;7700:2;7695;7684:9;7680:18;7673:30;7528:4;7720:45;7761:2;7750:9;7746:18;7738:6;7720:45;:::i;:::-;7712:53;7331:440;-1:-1:-1;;;;;7331:440:214:o;7776:673::-;7851:5;7881:18;7922:2;7914:6;7911:14;7908:40;;;7928:18;;:::i;:::-;8062:2;8056:9;8128:2;8116:15;;-1:-1:-1;;8112:24:214;;;8138:2;8108:33;8104:42;8092:55;;;8162:18;;;8182:22;;;8159:46;8156:72;;;8208:18;;:::i;:::-;8248:10;8244:2;8237:22;8277:6;8268:15;;8307:6;8299;8292:22;8347:3;8338:6;8333:3;8329:16;8326:25;8323:45;;;8364:1;8361;8354:12;8323:45;8377:66;8436:6;8429:4;8421:6;8417:17;8412:3;8377:66;:::i;:::-;;;;7776:673;;;;;:::o;8454:457::-;8533:6;8586:2;8574:9;8565:7;8561:23;8557:32;8554:52;;;8602:1;8599;8592:12;8554:52;8635:9;8629:16;8668:18;8660:6;8657:30;8654:50;;;8700:1;8697;8690:12;8654:50;8723:22;;8776:4;8768:13;;8764:27;-1:-1:-1;8754:55:214;;8805:1;8802;8795:12;8754:55;8828:77;8897:7;8892:2;8886:9;8881:2;8877;8873:11;8828:77;:::i;8916:162::-;-1:-1:-1;;;;;9003:5:214;8999:54;8992:5;8989:65;8979:93;;9068:1;9065;9058:12;9083:267;9161:6;9214:2;9202:9;9193:7;9189:23;9185:32;9182:52;;;9230:1;9227;9220:12;9182:52;9262:9;9256:16;9281:39;9314:5;9281:39;:::i;:::-;9339:5;9083:267;-1:-1:-1;;;9083:267:214:o;9537:184::-;9589:77;9586:1;9579:88;9686:4;9683:1;9676:15;9710:4;9707:1;9700:15;9726:125;9791:9;;;9812:10;;;9809:36;;;9825:18;;:::i;:::-;9726:125;;;;:::o;10188:218::-;10335:2;10324:9;10317:21;10298:4;10355:45;10396:2;10385:9;10381:18;10373:6;10355:45;:::i;11516:430::-;11713:66;11705:6;11701:79;11696:3;11689:92;11671:3;11810:6;11804:13;11826:74;11893:6;11889:1;11884:3;11880:11;11873:4;11865:6;11861:17;11826:74;:::i;:::-;11920:16;;;;11938:1;11916:24;;11516:430;-1:-1:-1;;;11516:430:214:o;11951:287::-;12080:3;12118:6;12112:13;12134:66;12193:6;12188:3;12181:4;12173:6;12169:17;12134:66;:::i;:::-;12216:16;;;;;11951:287;-1:-1:-1;;11951:287:214:o;12243:277::-;12310:6;12363:2;12351:9;12342:7;12338:23;12334:32;12331:52;;;12379:1;12376;12369:12;12331:52;12411:9;12405:16;12464:5;12457:13;12450:21;12443:5;12440:32;12430:60;;12486:1;12483;12476:12;13119:591;13229:6;13282:2;13270:9;13261:7;13257:23;13253:32;13250:52;;;13298:1;13295;13288:12;13250:52;13331:2;13325:9;13373:2;13365:6;13361:15;13442:6;13430:10;13427:22;13406:18;13394:10;13391:34;13388:62;13385:88;;;13453:18;;:::i;:::-;13489:2;13482:22;13526:16;;13551:39;13526:16;13551:39;:::i;:::-;13599:21;;13674:2;13659:18;;;13653:25;13636:15;;;13629:50;;;;-1:-1:-1;13606:6:214;13119:591;-1:-1:-1;13119:591:214:o;13715:521::-;-1:-1:-1;;;;;13989:6:214;13985:55;13974:9;13967:74;14077:6;14072:2;14061:9;14057:18;14050:34;14120:3;14115:2;14104:9;14100:18;14093:31;13948:4;14141:46;14182:3;14171:9;14167:19;14159:6;14141:46;:::i;:::-;14133:54;;14223:6;14218:2;14207:9;14203:18;14196:34;13715:521;;;;;;;:::o;15051:781::-;15101:3;15142:5;15136:12;15171:36;15197:9;15171:36;:::i;:::-;15226:1;15243:17;;;15269:191;;;;15474:1;15469:357;;;;15236:590;;15269:191;15317:66;15306:9;15302:82;15297:3;15290:95;15440:6;15433:14;15426:22;15418:6;15414:35;15409:3;15405:45;15398:52;;15269:191;;15469:357;15500:5;15497:1;15490:16;15529:4;15574;15571:1;15561:18;15601:1;15615:165;15629:6;15626:1;15623:13;15615:165;;;15707:14;;15694:11;;;15687:35;15750:16;;;;15644:10;;15615:165;;;15619:3;;;15809:6;15804:3;15800:16;15793:23;;15236:590;;;;;15051:781;;;;:::o;15837:664::-;16187:66;16182:3;16175:79;16157:3;16273:47;16316:2;16311:3;16307:12;16299:6;16273:47;:::i;:::-;16340:66;16329:78;;16436:31;16431:2;16423:11;;16416:52;16492:2;16484:11;;15837:664;-1:-1:-1;;;15837:664:214:o;17025:694::-;17368:66;17363:3;17356:79;17338:3;17464:6;17458:13;17480:75;17548:6;17543:2;17538:3;17534:12;17527:4;17519:6;17515:17;17480:75;:::i;:::-;17619:66;17614:2;17574:16;;;;17606:11;;;17599:87;-1:-1:-1;17710:2:214;17702:11;;17025:694;-1:-1:-1;17025:694:214:o;17724:543::-;17826:2;17821:3;17818:11;17815:446;;;17862:1;17886:5;17883:1;17876:16;17930:4;17927:1;17917:18;18000:2;17988:10;17984:19;17981:1;17977:27;17971:4;17967:38;18036:4;18024:10;18021:20;18018:47;;;-1:-1:-1;18059:4:214;18018:47;18114:2;18109:3;18105:12;18102:1;18098:20;18092:4;18088:31;18078:41;;18169:82;18187:2;18180:5;18177:13;18169:82;;;18232:17;;;18213:1;18202:13;18169:82;;18503:1464;18629:3;18623:10;18656:18;18648:6;18645:30;18642:56;;;18678:18;;:::i;:::-;18707:97;18797:6;18757:38;18789:4;18783:11;18757:38;:::i;:::-;18751:4;18707:97;:::i;:::-;18859:4;;18916:2;18905:14;;18933:1;18928:782;;;;19754:1;19771:6;19768:89;;;-1:-1:-1;19823:19:214;;;19817:26;19768:89;-1:-1:-1;;18400:1:214;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;19870:81;;18898:1063;;18928:782;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;18964:79:214;;;19141:236;19155:7;19152:1;19149:14;19141:236;;;19244:19;;;19238:26;19223:42;;19336:27;;;;19304:1;19292:14;;;;19171:19;;19141:236;;;19145:3;19405:6;19396:7;19393:19;19390:261;;;19466:19;;;19460:26;-1:-1:-1;;19549:1:214;19545:14;;;19561:3;19541:24;19537:97;19533:102;19518:118;19503:134;;19390:261;-1:-1:-1;;;;;19697:1:214;19681:14;;;19677:22;19664:36;;-1:-1:-1;18503:1464:214:o;19972:128::-;20039:9;;;20060:11;;;20057:37;;;20074:18;;:::i;20459:197::-;20587:3;20612:38;20646:3;20638:6;20612:38;:::i;20661:1554::-;20780:3;20774:4;20771:13;20768:26;;20787:5;;20661:1554::o;20768:26::-;20817:37;20849:3;20843:10;20817:37;:::i;:::-;20877:18;20869:6;20866:30;20863:56;;;20899:18;;:::i;:::-;20928:97;21018:6;20978:38;21010:4;21004:11;20978:38;:::i;20928:97::-;21051:1;21079:2;21071:6;21068:14;21096:1;21091:867;;;;22002:1;22019:6;22016:89;;;-1:-1:-1;22071:19:214;;;22065:26;22016:89;-1:-1:-1;;18400:1:214;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;22118:81;;21061:1148;;21091:867;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;21127:79:214;;;14998:1;14991:14;;;15035:4;15022:18;;21350:9;21372:251;21386:7;21383:1;21380:14;21372:251;;;21468:21;;;21462:28;21447:44;;21518:1;21591:18;;;;21546:15;;;;21409:4;21402:12;21372:251;;;21376:3;21651:6;21642:7;21639:19;21636:263;;;21712:21;;21706:28;-1:-1:-1;;21809:3:214;21797:1;21793:14;;;21789:24;21785:97;21781:102;21766:118;21751:134;;;-1:-1:-1;;21945:1:214;21929:14;;;21925:22;21912:36;;-1:-1:-1;20661:1554:214:o;24622:764::-;25012:14;25007:3;25000:27;24982:3;25056:6;25050:13;25072:75;25140:6;25135:2;25130:3;25126:12;25119:4;25111:6;25107:17;25072:75;:::i;:::-;25211:3;25206:2;25166:16;;;25198:11;;;25191:24;25240:13;;25262:76;25240:13;25324:2;25316:11;;25309:4;25297:17;;25262:76;:::i;:::-;25358:17;25377:2;25354:26;;24622:764;-1:-1:-1;;;;24622:764:214:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCallFromCallboundDelegation()":"e187dc8f","testCallFromSystemDelegation()":"d671f65b","testCallFromTimeboundDelegation()":"89403ab3","testRegisterDelegationRevertInterfaceNotSupported()":"9d4218e6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromCallboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromSystemDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromTimeboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRegisterDelegationRevertInterfaceNotSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/StandardDelegationsModule.t.sol\":\"StandardDelegationsModuleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798\",\"dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35\",\"dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6\"]},\"node_modules/@latticexyz/store/src/EncodedLengths.sol\":{\"keccak256\":\"0xebc0a6efd611e02b15c05a382382b597fe059eba7f2a9e90da81eeb2f7666774\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00b2cac12599935e25ea0697e99fc9e6d5af6c1c982761996c16707d9cd6ca09\",\"dweb:/ipfs/QmXccFminkrFtDpNfx6X1pHvW7Tn1nA5XcGu9T17pJyZyK\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x15f698b7eabc062a00ff7a2e02db0ace2dd51f8bd2bc51a45dc0afa88f2ee658\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f774202c98ad394b3b62be93292512c633dec63bc931c190ed984656c2d54ec7\",\"dweb:/ipfs/Qmd2D9mvP8S88ad2Q8WU54saNVr3Pwc5stPqEKHwcpo8AT\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xd016a2e1260f5a81ff9a8dfac58d7947e114414df8cce7302a2629908ea5f18e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c558a6f3a5f540c0190fa6d642a094a185c5db1acfc2437c7dbde0340f00ac3\",\"dweb:/ipfs/QmViAHvR7U7HNfBiBZEMFiy1TTSHDFNiDzBfQSeLBShCky\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"node_modules/@latticexyz/store/src/IEncodedLengthsErrors.sol\":{\"keccak256\":\"0x06bb49164f44acc8d51df7b75ecf2f7aeb9281f7a3b357cae7d8d58bd1700dfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719027f4cc60fea30ce01cd4f672462f41fac750ae802e91a1a6d37c929e11ba\",\"dweb:/ipfs/QmWi5DM2jT5V5SGP1afRmFyRgFvuZiGDX2PWHwP19HssF1\"]},\"node_modules/@latticexyz/store/src/IFieldLayoutErrors.sol\":{\"keccak256\":\"0xaef70c46e412bded1024ac82c957cea81c1d1ab11878a95635531e2ac9673a53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cda2c7dc02ee8f0163b1c8d0f3e1e05d48b2a009e5c7365d2418f17bc3455817\",\"dweb:/ipfs/QmXHDZuCPTxjHaeiEaJhA81koX2NJ3Gj1zt5WVWaz77FL8\"]},\"node_modules/@latticexyz/store/src/ISchemaErrors.sol\":{\"keccak256\":\"0x0ac3de36c9d0058a17fcd7f1a905132215fd16ea3ed3b5109de1de04ddd7c441\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f83fa2546009cfd16b3b3969dcec1d67c9d818d910177b885ba263b6a948c65d\",\"dweb:/ipfs/QmehywHdvFYBL9BTtoPsVVwJXsEA4Xjk8aPWoHw1R45KeY\"]},\"node_modules/@latticexyz/store/src/ISliceErrors.sol\":{\"keccak256\":\"0x72684b7dfc1b44537401ccf10d6120186d02323266fcc762bc81859985eded4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8d037b6937969ae54018ddf647eeaf5eb69a2b0bf9edf9456d3d270316b2883\",\"dweb:/ipfs/QmfYJeyAmzRqpn68FteiM97p5t17iBw62FCET4bK5g4w37\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x42515d1410333a3573f78a460576271ef62c16edad5cf771ef6287b83ca1c706\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a58d03c4cf420df57d2b2e2e7932daad877e46e89561b46e1fa9f593a701bdc\",\"dweb:/ipfs/QmeFmKS7J1WqqBAgXkyxxx2fGA8JzuGszUmVsV2T6DYtsL\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0x37e4d2f015dd4005ff9b3f711257c891027804bc268db1791984af4989951912\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4a566ea96b69211f503707f69a9f9012d5873a3fd57b3f221549f46a7518df6\",\"dweb:/ipfs/QmVgcE3JufJr3iyeV6xqkvS4YtDcy6Eqyram2yzWUhwoB4\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0x8606e9de37943c74beabb9ac9acd2132f951bed1ef79f2f4f3de83ed1f271f6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d13adeee7ae9e687bf1cd12a8c36223179685fc828a7c468ee9311c879401b08\",\"dweb:/ipfs/QmQeb2ArSoQpE6ujBbDj9LY3xqpVCPiz3bh9SLT6siE8RY\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x6574a30a2bbd8a0de21b2504c55effb8802fdeff62296af82a9380bd753adcc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a859c533f51b584a9a2e8a64d61b6cf6f69bfcff1b926ad787518b1cae9562\",\"dweb:/ipfs/QmVyjmyJ69ZeqaXHg91JtGLVahRfZ7KtWaessLWZ6rYk9p\"]},\"node_modules/@latticexyz/store/src/IStoreKernel.sol\":{\"keccak256\":\"0x37a23dcbabc5937a717f2fda636b6a97963ed4b5a96870a62dfb199a8b692f89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac9741ea6daf21f39699be11afd919ae3ec07df24d948aaaa6549456fefd7fc0\",\"dweb:/ipfs/QmeiPQkZitM4Pc3i6L87thU71Fs1JVWAgMqXnSK8VrCq75\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xdcf28b3293d4d6c1fe2808a8918c1b2122e4e0e49f2793c79ebd2b9ae210ff7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3d9cc80f549ed0c5b768aea69fb1b3c364bd4f85d193a3040c411b594d94db\",\"dweb:/ipfs/QmYYdY5CjPHiW5ucXihTva1eHsCPNqBsvL6zYYafH3ap4p\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0x9e91a73f93cc9ebc00c265c83177f6a3f8a156749a9261202e2845e12aeaa96b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a39280d87d22dd0a959d8f55925cb092dba1fee2f11d3dd8e3ffabed45a9ab6a\",\"dweb:/ipfs/QmRMBFLJtT2KN43Xz9P3vUNWxXrP8rLTNBFw2P6Z7EGeaS\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x120fd448da5806e09ecb5327ad4dba64df01d2ee7232de0979133627e87e24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a3cb151b2ddee217f330d61813b2dcd997de94940c903719f6d066a21467890\",\"dweb:/ipfs/Qmbes1RRY6KdtsMohp8834xXyipeQK9GJ41NfgXK1d1QAZ\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0xef6e7000b181c2991aeacbf99a9d886f8c4df88878b857713f851185b63a7811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b079b4773d140ab2c01bdb04facfa56a78f753aea7122fa445b2bfa133411392\",\"dweb:/ipfs/QmWYWKFpwtsPeGdCSxcANgxXUbwAuMMgR7iMVPDSCZxz2A\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0x167af6321dc89c2e5850e31949b1d64ab70bb1cc809daa54a030e8ff30f35411\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e4b1a2d5da7e4f79349f5257a62b4c6ffe110d6e18fe407099aec71a2f3b2539\",\"dweb:/ipfs/QmQXqehp55UecYyuYTiPBKSnuedqYybXfCCjoPPrZ2hnRw\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x0d2a08030d21292ecbcc850d9111f3817d03f17cd5e02186894848a9152d79d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f30024c1613fb587aaba4c1dcb8e4e46ed765a2cebd5b63fbebd327d1bf13d3\",\"dweb:/ipfs/QmZzqSnPMYKDYwbFNvUFrvuazMUyQHzQ59w3A9x6juHAm7\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0xae6c03881fdfa56cba1879d9c9c6b52c2829e6a278a200176678d8da05a89345\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cad7dc4944c0518de2e7f99697485d365ae37aa6cad6967996377c2dd951fe4\",\"dweb:/ipfs/QmW3grFwr8BcgJmLfjLbj3FthnD7NRUBFMFiahbXztHPr7\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x7e735a4c7fa8b8a5fe2371d90801e3287ddb78efed69b31e1a76f0b7b153c4c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e6db36bd52144b6feeecd91a58fc311127a3892fc96c4171db5b570fe9876ee\",\"dweb:/ipfs/QmS6LqnTZvpMc4eiz5JowBoNnh3RYemG6JHjqtYucT1rQi\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x0128498e258f144cf98f0aa9aa0b39955273f31ca5464258a4cac8b3dbdb1b35\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cab457b868f39aaab35cb80ec4446606a0647a128234a2e3a16188d609efdd33\",\"dweb:/ipfs/QmP4DeduAZfLBG7uN7DUuEoqom6sairSkwU3vb22MZMHL9\"]},\"node_modules/@latticexyz/store/src/StoreHook.sol\":{\"keccak256\":\"0x5123aae46b3f37ea6d7d567fd82658ea7f58d06a6ebd76aaf358582459f13173\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7223f7ca27353b8d86bd75441df8221383e6966caa7c25f9a802e7623bb5275d\",\"dweb:/ipfs/QmaGmQK5JK2jS2sodKVxWuKiRNrtN8ErbdqE53PDatEDym\"]},\"node_modules/@latticexyz/store/src/StoreKernel.sol\":{\"keccak256\":\"0xeeb12eb8f8254eea33f4d3b80504962733c191f7cd4f4b1bc3033237e648ff0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b41567453f8f4f8c55b30d88d891b1ea87f2b5354ee8ce67ca58aedfb296ec\",\"dweb:/ipfs/QmZkGP7yKZUUnVxwAV4AVhHfc8Dnz1TtbyooeGBm33EUE7\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xfb7fbc9360bff0b7c7784259f84f619d37fae5dd3011b4f3ce6d4a8b30e9f4b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a2a0a40de0d4447dcaecad71839de4e2eb8a96905f4d5551a7f2ccdf244c3c4\",\"dweb:/ipfs/QmVejMTWV6T1YTfFyfjRvqRTyeG4AphM29WYwqb4yCmNDD\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0x7edf7c1641408f3a580eb28bda58054583cb846f875608612671c6d40712ba40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4146adef610d1daab085a81aa9f2d4fd8c4e5f459b9ef184f3ef23465573cf91\",\"dweb:/ipfs/QmQqZMsbkzSNG6VfYzQLdRCBCsNohBSVQmWoTP6QvKmKUP\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0x094a6f1e2910b345b6b254e0fc2c8882b3190c673f7ee19742e857057a4d3f85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18908e2e7e878635abea72ef99851fddd204371e6b641f010e831ebfa0b1bfd4\",\"dweb:/ipfs/QmSNAxXqxTrzPkZ4rSAQgBnuer1yLPq74hoqnzrZV3WGsb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0xfdea5b4cf666720c1c0d81a8acdede68e6220aee45d8a9f3c9834b4edc5da394\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a394dfe123cfb7200f65d379fb0cb3d2c84475b382faf6ee11bf9c45a63b53\",\"dweb:/ipfs/QmRMPHFBbCKtqKBVV9gvd2jhnfsyUKmCBEQkgviMoxi1UG\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0xf192bceab34508cee21dd7c33e4d776f79c4a7ca55ee8905c6c694850ebfdf64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c95113f76f6de671cb44710754e0942934182b544660a4330fc90a505e198905\",\"dweb:/ipfs/QmXma5ZxfK8Y9TbvB7QM9hdhfc1ixiMcLpo9BQxnVthHB5\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0xa825218614acc19a4100357dd7ee410b67b994fe7aaa68650d5d0d4202d4ca8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09b0cbb598fe2b75bbcd269b47d686a66fcc89c0c40d9a09807eba7688b81fc6\",\"dweb:/ipfs/QmYk6XQwSLhRumujTCsqxdvugKuP8oLjjB926pMHR445ra\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0x918b977e7f7f3e947d6d5aa189c54c9c7e7c106d0a0d53734ee959ad454abe09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a3de63c04c838bf80c1903cf7464d201d0ece0f86a7aaca35462b730e9338fc\",\"dweb:/ipfs/QmSUkLZ88J7tSwdmR3viBJHU8QVgN2Gji6W8wYLJEDNkc2\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x67e0d59237bd37424827ecde1ecdbe71f65376af517b0623cd8f8d5451bca7a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c5ec7fe73e06140957d44a3d9938587711c783ccbf08ff017638c9279a3168\",\"dweb:/ipfs/QmfS9ZRqHXmBJ1h5B4x4gbU6d18DtMgKZSkxhQgNVRxueu\"]},\"node_modules/@latticexyz/store/src/rightMask.sol\":{\"keccak256\":\"0x28887aab8ad5ca598927e59d702999ca6e3b3128f1cddd2b995a381c8d04b275\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7710847f4689b7f5b81436c7d52ae4395f244a2eebf8d398b2edd43accb06754\",\"dweb:/ipfs/QmTD2wYqryXTynHAn5Vf9wtjUUSGeCJWENZTnWtBAK38pa\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x4f29001e53690ce74fe405a6d0376a564c9c743d1631d36fab04331865e4d572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://138c80abd63225a3eeb01ebfa1f9288e188a7ee5b2266b275fb4ed31b5aa30e3\",\"dweb:/ipfs/QmdEx9uHgCCbTcetGwFH5a66Ft7ajmrMDXvP1fW7WjnnE2\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586\",\"dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x310523f7f3acca841e62fe50be8d8b042cad5b3c239cb1105d6623cf83e63152\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc40ca233acf6502bc65677b381c05331dd7323953e54b5df969051e47f851e\",\"dweb:/ipfs/QmTxy9mhodT8drezB5K1kPR78AMaARomoJqDyaWpLuCKui\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x259ee545fd9dfd4767f0b7fef31f52fd3c54c4a1c6657d6fbda4927800c937b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a4e31efa9f476cd267af7c3e11fe0151252206a1f6407a80a4092444c2de8ea\",\"dweb:/ipfs/QmRF4gWYw33mFTMh7nX8DJ1qzx3Ko6yMsnxubzYTRppdyo\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x0e74ff88ec94cb33f79d8afc1497c4fdccf02db40ab47f3701c7d02fc305d4d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36b7cd0c2a3f2dcdc83ab7ac5a93f123746ce29c0f1000f2b275ad2c647ff0f3\",\"dweb:/ipfs/QmYdipHYUhHhS78wLdtmKZUK14FEwpto5mFy3rNeZssMLz\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0xdd9f36208c5975c50187645c3296dccf014a73a9ed2d03b209984e101eca89c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://27245a6f43082eecb2f1ffd309c477020b64eadaa070066d10c3c46b8b5f720a\",\"dweb:/ipfs/QmQ8nqsgKRw2DYwydFbY9HZv1sNySnysrWkbteTp21eEuZ\"]},\"node_modules/@latticexyz/store/test/EchoSubscriber.sol\":{\"keccak256\":\"0x81815bcfe30f3671eb7589f83621866e31aad7385b95ef142a70fa2ef1de0fe8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5dc056be61192d38dee67585d3468c69bb72b76d764a844245e98a1c3a642d8\",\"dweb:/ipfs/QmQsJhfbLD8sEeR3X2JF4NqGPsMtmQr32pKR21Tihr67pT\"]},\"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol\":{\"keccak256\":\"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3\",\"dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze\"]},\"node_modules/@latticexyz/store/test/RevertSubscriber.sol\":{\"keccak256\":\"0x21321a672dc27dd4aa97a3cadb2968e475aa78cc7f02e86377a5b0ae70cbe4aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff762173d6226b18df91bfb3b275d72499a1060f32a0fb640a2f95484e9a5b12\",\"dweb:/ipfs/QmU8FiKgCfBCukmV8JiFnRXqCQCXThvic8jFQsyB1qtvEa\"]},\"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol\":{\"keccak256\":\"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5\",\"dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0xe9e1b1e588699a15ee81cc46f5959e14ff323787b576681abe7b0163d5988a4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f19076661965fcf60fbf5e58ee8a83daac63e174806af79f5fd4144929cab899\",\"dweb:/ipfs/QmVQxPrkHpSo1fbsqGvToXc6q9x8zrVrGaZjKTKY413QBm\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x1ad6ce468042f6ba104c8fa2cd5506e434e1bd458448492ae9e8d1993a7e5f1d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded3d879ad5a4119f9ff2320ff27f63a06bc3853e91d3697b3406ee3e6ab65d5\",\"dweb:/ipfs/QmTMjjArXQxXa3WeFF4dvvkAFSEstHTTsNYDCckgCBUVeE\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x8fa0fe6f180267dd17948607704000850b896dd16570525a2347949023022b54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45a984963246009d0021961527210f77b0af851b18cdc9efc7ef0ed3c7b98958\",\"dweb:/ipfs/QmU8JAbabZeujX18JF4KCaCW34PbwSe8zR6Cc1cNRUJ4Bh\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0xc63b86705fd62b862e422f830604b7e14e18f1fab662b70a02f656f6ace4fdc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d674c90bcc5b21e93b0b2a685c6cff86a69962cf900811af677ce77c3598dcf\",\"dweb:/ipfs/QmVE4pv8AFQWP9RRdaqGo6FP1AR8svMaUQsPnEHZc5VLgF\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0x7cc2fbdd8ff6c996e19fab46c1031b76355da74973cebf45ce4df4b035d566bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://857d577f84a68018a3392ec4540c15e80326aaf4b0f224d0d239605abacfc0f3\",\"dweb:/ipfs/QmVEr3rTH1F1BFaCTMd7MmuceTqASwKBcMRnuFZ4tUAYmR\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe3d9074a1be3247be67ff4dd2c9e41481650ddaa799285a249736bb85673e33d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b6743ee1e6d0c74927bf17fc1da0cad7575aa7634871b94190ffbdb4c28c2a7\",\"dweb:/ipfs/Qma5bNsPJSBTesWxg3eAAMUBTDE7UjqWaHF7eMiGwP87jr\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0xbb926cf64e685bbf2770d60124664cc84ab70bd3038e17a074f2d472c3fc2c57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://143c3dcbdf1702dd4f9c869629609386c12f7c0247e88a6d062dc4d519ebe0d2\",\"dweb:/ipfs/QmQJSDd8uFL4sssw9fb9NHo4s6zjuDUgmrLHj3zsJuhMo1\"]},\"node_modules/@latticexyz/world/src/IModuleErrors.sol\":{\"keccak256\":\"0x60917e029779c81cfea1f5140c389269e51d7adb78987f39101b9e0d7bdad12d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://513f41920d67ca28c3e0fe247403c28a4d342785192df449c99d5f92db04fcea\",\"dweb:/ipfs/QmeAG2TtxAgcJQR4QxftuSvQrxisYQ1i1GZoyd7oeFQBDJ\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x81f1743d7ca6a9c7efc4997cf95e603ccb2070885265ca0e540f461aa7430721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://93d99e78b541b33ecd501bf0cd407a78cef490fec8eaef2f188bddb9e293a99f\",\"dweb:/ipfs/QmPrcMDxwhvBZTr2AxoGqJA9L3Mjx27KBc98h3gXSsa3PM\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xb39e9d8cff4162e255f6c460ef9f9f0ad5b804627f745d967b2f10d0dd509299\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18d957cd87febccc00d82b9454047f0f5236250c9245befc0f57978671675255\",\"dweb:/ipfs/QmdZ1eXBd15vLpLVqTNJDAAaTzzucpRLD8GPJahLKT4J7x\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0x0abae6f4ed1b3070bddd0ed194c08b83a948b61ae959396202cf627bf1056a2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7037954f281cc0188a5aafc1d0cca0aabc110fd0234e6c43dca35ad69ed3baf\",\"dweb:/ipfs/Qmbv2nfK1qPpnoAbqNJFqWwo7AuyaX2ZEgZMFspMv7DR5B\"]},\"node_modules/@latticexyz/world/src/IWorldEvents.sol\":{\"keccak256\":\"0x39f6d8930db431c04158b85cc2a612c48d43dc81ec998f267076b12293c5d243\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d68f1543e5e166d639372d1aec57e3e193b5bb3b37270b6cb0488fab2c0ebe57\",\"dweb:/ipfs/QmdJUFDx87AHWFKP3jVrYg8xqAkiPfuT1M3tEotNt7KUoy\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0xdaa1e92439036e392fe79892819ae165732f416b831f84d38050ca3d958e549b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea8dc52e31a62e8971322ea9ed8f2e83d562ec199d7f93a392c293e96ff7f092\",\"dweb:/ipfs/QmSbM8MgHbrJLYP7uzemfZeC4xctqdyKDbspwHUsgeeVJC\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd99e81434439567e123dbade39850ea3e439ed7a33fe9a609ca6f1e08214908d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a00f6f27be952688d8db4ed77667d55219a56a04973db4d421a2776eb46da88b\",\"dweb:/ipfs/QmRqDmtDwZ8pXCcJFzwP7JDtUk86LmhWDrZBKy6q9UK9rz\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0xadcb32bdc444a4420909b738d81fa662dc63739455fe93d5aa89c93a3ccfd2dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d303094c84ebfb0f9f114c54ff4dfc68bfa1e526d0ebe304be6fbeb7cb2f0d3f\",\"dweb:/ipfs/QmYvUx1mNDhkxZFqxLeswW3w9HkvVqeoJiJKj1HN1SB7Gi\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x5012c0607c8d41a4eed69d8a0430f742844883d3c3f17a6717ac287608b4e6af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c389f65d050849cc95a7df9f45145186a60ae892b7d02b26ec92f8a38f8e2ee5\",\"dweb:/ipfs/QmNQPBewaXghhVeJDaC1XUK6BbFrZ5qUjryhmJuyvgWdbF\"]},\"node_modules/@latticexyz/world/src/SystemHook.sol\":{\"keccak256\":\"0xcb7063c48eb27d3ddb0f1b477c8a298b68ed7fceba0762e555342a24a62f6fe3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0da7b53848efba426f51f1f3698c3cd862553ed90edf220ed19fda51c12d162f\",\"dweb:/ipfs/QmNd1QKSNoqHms3azKPLZtZoqNuRkgasCnYxVPG482b6jm\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x9cc2147746c9ce4c6f8071b245e85747a9fa115a5592e8eb21f973df6e5847ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9988f706cc52b8a7dc870cd996ab628694e9d6924d3c7583e1ad936ea7f8691\",\"dweb:/ipfs/QmSY1eAbsnw91biKHKBeyj6tkPeBjmaRSUsTt4G3uWz3cP\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0x50ca52bdd89a9f27d6b03ad00ef45c8c5a6884ea9d75e18f8fa53524ac2feed9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55febdece37b291527094fb654919d4c8fe0b231792996a14c5e5cc76512b19e\",\"dweb:/ipfs/QmZHFbDDNmdFHWc1uTSvDgMUUgb8NgBPb1cDUJYajswbHT\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xaff9a22fac8a0f6eee5763b07a7ccb623c829d37922b85e42e914aad2ad417ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e598f0274d6d97c0a09806bf4fd1f0d054c310cf51b2123f5ce6380d6f3186ea\",\"dweb:/ipfs/QmaaVvqm21YsCgxozDyShcM17jKUXJhf2y26bk2YzPYZoM\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0x7e7321b86836bfbf4b96d0fb2a424ed678efcf01b15fa3d0b4ae4f0b975ad5dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ead41554796bd0507e390f2997aa4a8df7bff8b51523b86fa3c5bd8acb1fec48\",\"dweb:/ipfs/QmVe1VUhfbRy8tviA7UcCtS8NjXhsF1E6Re9xLqWS5aRTK\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xe57042e82311847c56fa569377ed84459bf55afccdd3123312a5dff90c1d06f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://baf3258c9118bf16ba68ebcfecdb5e5ffc85d5c0cdc2815ca298283dfcff2c83\",\"dweb:/ipfs/QmcBVyUBR3PVejz7249VrEBMCMKHi72KoUXQ8DFmMmY48F\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf7acdfa0eb01c710d11fba129d613863fe86f1bed352f0bc5630bea81cceae17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e4107681cd20c018cd8f5dff6da72e8a4b02f631c7c59b618e8743482c7bc81\",\"dweb:/ipfs/QmXS8NLaKVXcf97HrD8U4hGHqb9ytYGwdZrTVHHb5EwrRj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0x600cc362780c319e640950ad3520af7fa558171268baab252ff4da4414aa0f1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d113a833b64bccbbe852f3d0261efd80ad4a0f6771802dc91af79c762a33ff2\",\"dweb:/ipfs/QmaXEdJJaMMQF8nZieWyXdVD15yuXnH89QLZHwD18LAndz\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x7070453d969eba7defd90047d58ae979e27e5c1fcf05598daa4d17fedbe84c35\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee5c196c5e339ac0222cd1d14fd9d09451d255605f73732abc33397a9512503b\",\"dweb:/ipfs/QmYwNsWnxP24RzDqFYLnBYswZY97YE3nwG6Xf55f5FqNXa\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol\":{\"keccak256\":\"0xe08d3af994098120b5507c71a1c3558763b8c1a88c6eae506aa438c2af78f800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb0c47b16ff524140388765fe9ef99211dd7d9b9374dae09144a9956138de00c\",\"dweb:/ipfs/Qma8ibVu6WZs1hFW3hMnUykV3pPXGZhZ3xJwJXNj6Xu7aL\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0x70bed82da026058ddccf52766823c7d55c7d29faad0ab1d76d763786d5277f7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1da6476d62e450d3d935ea8292723612a84fa1d07342fbc052ee851181701a27\",\"dweb:/ipfs/Qmd1FQpmEVbQciLDPkHPXSKB7aYW1YB74BN5JXqn74erhR\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x25248669a093cfdc9453491e5b5806f6aa092a805569799650c43c32f7b7877d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f294f597122450abd267760d91682facd0a1040383caeb44aaadeb74770904a\",\"dweb:/ipfs/QmPXsoh8tUhpnhjdBYYTZCLc8MPHDZK6xUmN7F2DsMEXro\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x1ee313f4f1165034b92c5df1fe4cdd9be52b27780245388db3a0267c119fc926\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3d58ca6a58e94bc30d5be0fc7a7d1325a92096c8b8b2b3a0531c2c5d0d60791\",\"dweb:/ipfs/QmZSisbANqwnFzwMJnnYBjemLW4Cqn3oL7MkV4HiQR7GKv\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xe0b2ae91638eb7a609ce29428b3ab2a796f06558cf82cca9a258fd4ff06690dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://522872daab151f15b83bb63a41dd54bc9142b8875fabd43f4bdae209f7532fd1\",\"dweb:/ipfs/QmNRWboeoneiCkewk7BLp27yQCj7NE6DGNiaeWt6Z4jYtX\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol\":{\"keccak256\":\"0x28ecea550f7cef98318f2db2e203e758475306a6454f776e6dbc5094811d577e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01ae40d53747c2fec400c3bddec5789da6995a38e918bf3badad9c403e70d069\",\"dweb:/ipfs/QmaQhjyGzXjTR16gJUnpaBhG5zJvPdaxJ6c9yJY9FD5kBb\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x50a1f277a00f01e3cb97a85f0fc624ae2192a726136720b6a900b465a7aecc05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f3cd87cc0b905d5b75d134d95176630404e76c0f0a343cbd17b8338e1492c0b\",\"dweb:/ipfs/QmURFDNBdUWgh57apX9n7VF68rSQeQrpc5to4FFV6bbJgN\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x66193215d3c053675d67ba81d530ee2bb1c39250a15cf2d9a6fb166615af461d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b783be83ef27281fb6ae2166f692d0ec912bdbe4f49312181b1ef561b5098729\",\"dweb:/ipfs/Qmdtmq4mGtrqoFg4UWhxAevNfVXEUhp8fohRWycqKD2vCk\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0x3a53f395fc56398b4095c1e4016ad5f87d06236fc00f1fb85b9cfe138575b614\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d91d30c8506a2d07bcafe0f8feff002bbc7764060d7e7bef7f15b9c4a97c597\",\"dweb:/ipfs/QmVTAxSh1JSMpKD1jmJSTvXbDZQubdJW2DQDoePWecJskH\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xb857dd63073a6469f5bb8deb6c0617763cd42c484821e247572c6b53bb1da3cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07c710d67440b98b145c1991623b7c8cc7f0805b4e6fa37a7d54afcece31239e\",\"dweb:/ipfs/Qmb368QqzbQGUttbDS7eVBGQ8KcXhiai2F9vy3Thyyk2vx\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0xc27730dae8302cb86f5d65ddc9ae0e92afba17842285a6d0cd146a1e21d73c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de5f820f1dfe36e53fe1fc77be6a52ac5fa72a7a5d5ec66e5d29ca6ce553674\",\"dweb:/ipfs/QmP5JUMHDCBxZkZ2YnoYQLqQFHeyCpoUVp14hJBWpSdiqV\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xcb1e9fd5cd02cbb7125f2a64c02f89272d4b0f2afc0b43f24b727f023ef06493\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4a923e67dea1c1c0a978cbb89d4e27f6e0205f49efe0556ac90b358bd2062ab\",\"dweb:/ipfs/QmZww8gDH9kyXsCaTYWzupNhL1QqR1emAbb5VifFWhDWYF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x1706fe4b5441a4e3982a3d32f7de2148627b8dfbbe3e38391dd4dab06b86478c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0569fa73cd26c6476188646194ad58eb5cf78cb7c7dc7722748455c23c9d4d7\",\"dweb:/ipfs/Qma1RuR12bTXSVJJ8Q8Gw23KkBw7pyV9u5Kr8TGutaxYdz\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0x3b8d434a81e5667242724089207f90001099d32095e05c4efd75931201d850b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73d47004e03e56b0d0e64ca9012219bc6ae01cef455d7e6ccab9f60dfc5e55b5\",\"dweb:/ipfs/QmQUcGYNEVBRs1oj1HgJ92SPNuiDL3YVYbBymGy63yxqDc\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/modules/init/InitModule.sol\":{\"keccak256\":\"0xa94f674bf15e20feff8e2e4a5819818a59ffd1026a6c436358f21124481249b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f30b50afbe39a6271ce4082d0d8a30a2d563eb52c89432f2de9d47e7ae4b0771\",\"dweb:/ipfs/QmfEMVXKk8HvdiivYKPKsApRDar4G1bvjfwXvesRFZdVio\"]},\"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol\":{\"keccak256\":\"0x1aa994d09220ac38bd4f47e2be9f54e4b1a46ffb14be40552ac64998059105fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ba9f14551c18238056f6f5daf6166acc93c531f66cf32bbadb4142eca04a25\",\"dweb:/ipfs/QmQfiy93ewydVkwLdbUSXHn5K29r1SJaiw51sgoFWJXsmu\"]},\"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol\":{\"keccak256\":\"0x5aa1ad023ec7e30b102275af8f76e08d195e277fd89fb5fffd8436adf7dbc3f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5389a9204b6714c8494f169277ccfdcf43ab3d969cafddf8a5eb61d2a2b827a4\",\"dweb:/ipfs/QmVvkj8hEcUQZTvHptDe7fEZHnH9bnut6f3jaLSquPgBCw\"]},\"node_modules/@latticexyz/world/src/modules/init/constants.sol\":{\"keccak256\":\"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752\",\"dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8\"]},\"node_modules/@latticexyz/world/src/modules/init/functionSignatures.sol\":{\"keccak256\":\"0x22a231d9b772d582fa7785218912e183404eab1e7c4ab8b4afe8fe123ebf6234\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://969a745da85bd673861ab9faf3b702d4fbd16b575a6a76cbf5fe55c59efd6425\",\"dweb:/ipfs/QmU6hBi69WMnxWyxjJnzJeiKqs1e8CKPP6rra9WZKs5VU8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x8c0466eb13c16390a68a8f44f6a718b17e91c86896b616fdcf4c2702f5eb5bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a595433787c57e8335a425ccacec108deff2103de04b400917ad269bdd7bc38\",\"dweb:/ipfs/QmXbhHUKEFV4E6LrN23wQrubZtBZRH5bDCz3jj7yoeUb49\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x17b2dc1cc39e7d5fab339a1bb9b81b82cf5caff29806273df267d291ac89cc28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://308d596b1aefb3616dd9f3f69c933257468756bea73754313aa083a71c5ff883\",\"dweb:/ipfs/QmWuCpM1WNhaKtZerYaxCbUbfQg2a3tGJsdb6Bvjrt77v7\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0x9d1498bdc2ef2ec0bf6d2beab2543ca826955d7e94a602351394b1a197efeeb5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://367299bcbe7df6683dc2a6d10838915ac0f7968739630e28900aa9c3e0833ea3\",\"dweb:/ipfs/QmZAiRh4YWhLHxv92A7YRTRYNeVLNWAYjdWd9QWFrzzQsq\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0x1be1b12b2b2c7ff519cbe503ddda58cd308a8067e9ff7a168f3833031cf3f93d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37cede506e9219fa7a1c518ece3fa6333ccad58b4b792629044288d2d9b9e8d1\",\"dweb:/ipfs/QmcFo72Bv2t5GFQgM71NNB7xNLnQwG39oE9KTrdaNsv9ZV\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0x3a8ffe8942badedf5654e02189c6d6e89c5a37d40d8643abbdd7869ee2858498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://885dec95191527acc629af3b99818e81c37cb14744ae33677a84d37bc9413c86\",\"dweb:/ipfs/Qmd873kb8eDWXqZxnT6Qimh5AW2osaX6KnbXySSVkjZRrf\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xc267df948cb1efec454b25a6ffac1b81f0bd3c33cc590f13722af6cddef5e692\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3f156fdc7b29a1011f7745b57c9e08eb85e14596ff63918e91d9e1878dc0bf8\",\"dweb:/ipfs/Qmee2zDChY6qjXua9PwFA4tQvNVj5Dk33TCP1B8F65L6zJ\"]},\"node_modules/@latticexyz/world/src/modules/init/types.sol\":{\"keccak256\":\"0x81b75eb286ec515bde6cbb16c3d089054abb530b744865bbace68343d23177bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc77bd51e24da666260bb48c44ff611869fb2e550921d732e5aac84a1f09525\",\"dweb:/ipfs/QmeU5N4yeRh5nEA65pvGtQQJNv1GvEPy4PkhMVRYRMoMvh\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x5b94a21fd46abb4aac8f38809c0d6105f30792042c927f8a6a4f40cfe35c7ab8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bade9d52cf370f3b5435abb47a5338dca5498bee773e97518e7a080fa882940\",\"dweb:/ipfs/QmTtaXUWwMQmHW8oKEoRZxagidZcCiN3oLQs7kN3nycrkW\"]},\"node_modules/@latticexyz/world/src/requireNamespace.sol\":{\"keccak256\":\"0xda4a4a55bde8e55c28472d37009a194aa221ad11feb233d1c17a87b303977567\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef691f35102f6ce85cc1cdaf3ec29b4ba632384a0358629dd642292c709f34e5\",\"dweb:/ipfs/QmYuewEaRZ1UWxd231AK4SpjsiLrd7o4nyaPTeEzLCswcc\"]},\"node_modules/@latticexyz/world/src/requireValidNamespace.sol\":{\"keccak256\":\"0x361f8259c4a5ba355b2aad118befe00f7fe5169be730d6c0ca11ab7a863bd6fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccc850a1ea57e900d85e2c5fac02c36d55b42d2345b439ea7044ea42f5a49c01\",\"dweb:/ipfs/QmVShgn2FgTTg9QGnL5Fzhovowmu1C7fABKLJTxbewZzEG\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0xa1147f218a0152b153d4e8bada0f606bfed40ac1f184fd16a941c2d0033c53f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f5e0f6d1b51a3a04d4bd84537b2ced373b32824898cf6fbfd13ae1cbdf06359\",\"dweb:/ipfs/QmayYRmBZRUV9m4UnFxuC62VvHriXhkYXeH3HibZ3Gmxxf\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0x15c25ae4b21e091209970e45a198cb51f31eeae482828862641099c1a9b2448a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ce3c3eb58dc5c262d36babf372ad028d2846beea73a59d6e70f0eb8c90ee00d\",\"dweb:/ipfs/QmWUkgegTRtSJM3awvjg4J7DWZ2ME7Pnxp1dP2TWWzLNoo\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x93e7a4800fde9471e4f3bbbd09b81f31296cb8c1c92fc5622eac14bbc2307c51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95c364929e1eda55141d6a48d5f6e95203840316927e4e58361230399865f310\",\"dweb:/ipfs/QmXXwN2AQ4dSmVonQijwbnm8o1gnKx36s9pRo6XLah47xU\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xeb042e7d3638430f6fd394107f3237cf14e4325154f0098624e8a7826584d465\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e0b8eb87616b661f5a4f2fd7e1a727bd19b7fd8d40ad3d93fda26822f433ea\",\"dweb:/ipfs/QmacYMatKV9pwEwirVRY9a6r89RoNs5yk99ic37ieWA8Dk\"]},\"node_modules/@latticexyz/world/test/DelegationControlMock.sol\":{\"keccak256\":\"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d\",\"dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf\"]},\"node_modules/@latticexyz/world/test/World.t.sol\":{\"keccak256\":\"0xaebde25dcf6be97013cc72bf50c36c243f576153be7431f149a8e67c87b789a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://023929f4d8dc90d444bdba6f39499726ed131429df31a1591694c454b62547ef\",\"dweb:/ipfs/QmTMGA5451Dxbq13josZs89oikh6Xiuxa1zKpcGqqs8gvL\"]},\"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol\":{\"keccak256\":\"0xa019ca8c969156d46fbc440510e5d35184d191613e5019dc48447814a53554a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea16beef2519c9e4deffd9c6a36262264ba6779115830f8d80dabd2916945f57\",\"dweb:/ipfs/QmQQYzRGP2RG36znau6ABeiuSwPHdd29NyAJBSeySLBWJX\"]},\"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol\":{\"keccak256\":\"0xbb3ad96ab0be4a3539f836df90cc4f29455c241576de622d0a85e21c63297219\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cf4d9fa1f2ed8aa791e3a99dd29e3b45cb7dcd2f222786fe461e6b477a56abf\",\"dweb:/ipfs/QmYHCqdw64driGxzeXi3zxsBtBk1eVtVTTTYpi2K3rdS9A\"]},\"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol\":{\"keccak256\":\"0xc9c2ba1f2ffb7e23c87158f16406a754a121b2c05dc91ac198f9f4bab36d78a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75831aebdf36e6247925913377bb0c2f6164d17894c0afbcf4a8550d3294b463\",\"dweb:/ipfs/QmTnwY9EzjctGtnvvBXs8cmz5UbbdvsHNv2EpY5vfiJxpG\"]},\"node_modules/@latticexyz/world/test/createInitModule.sol\":{\"keccak256\":\"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc\",\"dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa\"]},\"node_modules/@latticexyz/world/test/createWorld.sol\":{\"keccak256\":\"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4\",\"dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/modules/std-delegations/CallboundDelegationControl.sol\":{\"keccak256\":\"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44\",\"dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF\"]},\"src/modules/std-delegations/StandardDelegationsModule.sol\":{\"keccak256\":\"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67\",\"dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK\"]},\"src/modules/std-delegations/SystemboundDelegationControl.sol\":{\"keccak256\":\"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815\",\"dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq\"]},\"src/modules/std-delegations/TimeboundDelegationControl.sol\":{\"keccak256\":\"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb\",\"dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb\"]},\"src/modules/std-delegations/constants.sol\":{\"keccak256\":\"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b\",\"dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC\"]},\"src/modules/std-delegations/tables/CallboundDelegations.sol\":{\"keccak256\":\"0x22fd8bdfdff4b918b59d85143918e6091fdc9225c61c304517a949e4a420eab4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad776386ace564c5d7d62e191ab8125923783d404027d82622e520da62d4ca4\",\"dweb:/ipfs/QmUaenwXrYe41sXTsJ4dkhm9AjU8SH62Rjfrp4fcFU32ww\"]},\"src/modules/std-delegations/tables/SystemboundDelegations.sol\":{\"keccak256\":\"0x7866a750c927fbacf2cba4085cb91d2411f995693a5baaf5cc1e2b1316d2069b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b28c6dc27281e98f7af53eb8cbcb158c426bb3e9a51846cc2c1e40183ff5f4b\",\"dweb:/ipfs/QmR7TZhv4aaXNWnwN4HkW35jms4Z83cL8vNmtskM5GXhtd\"]},\"src/modules/std-delegations/tables/TimeboundDelegations.sol\":{\"keccak256\":\"0x7957a2bca401d8ed11ced86861b25d8bb485d06f188c24b99bf289a5d8b29300\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ea655c576e93ebbcae10b6d77b9a0be8fd32f9e47f209986aacb72d90a6842\",\"dweb:/ipfs/QmRppC6j9FBjLs8ZjWwaTZNesxCo2v2tdZstbE6VgBFzJ8\"]},\"test/StandardDelegationsModule.t.sol\":{\"keccak256\":\"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812\",\"dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromCallboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromSystemDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromTimeboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/StandardDelegationsModule.t.sol":"StandardDelegationsModuleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd","urls":["bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798","dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8","urls":["bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35","dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6"],"license":"MIT"},"node_modules/@latticexyz/store/src/EncodedLengths.sol":{"keccak256":"0xebc0a6efd611e02b15c05a382382b597fe059eba7f2a9e90da81eeb2f7666774","urls":["bzz-raw://00b2cac12599935e25ea0697e99fc9e6d5af6c1c982761996c16707d9cd6ca09","dweb:/ipfs/QmXccFminkrFtDpNfx6X1pHvW7Tn1nA5XcGu9T17pJyZyK"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x15f698b7eabc062a00ff7a2e02db0ace2dd51f8bd2bc51a45dc0afa88f2ee658","urls":["bzz-raw://f774202c98ad394b3b62be93292512c633dec63bc931c190ed984656c2d54ec7","dweb:/ipfs/Qmd2D9mvP8S88ad2Q8WU54saNVr3Pwc5stPqEKHwcpo8AT"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xd016a2e1260f5a81ff9a8dfac58d7947e114414df8cce7302a2629908ea5f18e","urls":["bzz-raw://0c558a6f3a5f540c0190fa6d642a094a185c5db1acfc2437c7dbde0340f00ac3","dweb:/ipfs/QmViAHvR7U7HNfBiBZEMFiy1TTSHDFNiDzBfQSeLBShCky"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IEncodedLengthsErrors.sol":{"keccak256":"0x06bb49164f44acc8d51df7b75ecf2f7aeb9281f7a3b357cae7d8d58bd1700dfa","urls":["bzz-raw://719027f4cc60fea30ce01cd4f672462f41fac750ae802e91a1a6d37c929e11ba","dweb:/ipfs/QmWi5DM2jT5V5SGP1afRmFyRgFvuZiGDX2PWHwP19HssF1"],"license":"MIT"},"node_modules/@latticexyz/store/src/IFieldLayoutErrors.sol":{"keccak256":"0xaef70c46e412bded1024ac82c957cea81c1d1ab11878a95635531e2ac9673a53","urls":["bzz-raw://cda2c7dc02ee8f0163b1c8d0f3e1e05d48b2a009e5c7365d2418f17bc3455817","dweb:/ipfs/QmXHDZuCPTxjHaeiEaJhA81koX2NJ3Gj1zt5WVWaz77FL8"],"license":"MIT"},"node_modules/@latticexyz/store/src/ISchemaErrors.sol":{"keccak256":"0x0ac3de36c9d0058a17fcd7f1a905132215fd16ea3ed3b5109de1de04ddd7c441","urls":["bzz-raw://f83fa2546009cfd16b3b3969dcec1d67c9d818d910177b885ba263b6a948c65d","dweb:/ipfs/QmehywHdvFYBL9BTtoPsVVwJXsEA4Xjk8aPWoHw1R45KeY"],"license":"MIT"},"node_modules/@latticexyz/store/src/ISliceErrors.sol":{"keccak256":"0x72684b7dfc1b44537401ccf10d6120186d02323266fcc762bc81859985eded4c","urls":["bzz-raw://e8d037b6937969ae54018ddf647eeaf5eb69a2b0bf9edf9456d3d270316b2883","dweb:/ipfs/QmfYJeyAmzRqpn68FteiM97p5t17iBw62FCET4bK5g4w37"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x42515d1410333a3573f78a460576271ef62c16edad5cf771ef6287b83ca1c706","urls":["bzz-raw://6a58d03c4cf420df57d2b2e2e7932daad877e46e89561b46e1fa9f593a701bdc","dweb:/ipfs/QmeFmKS7J1WqqBAgXkyxxx2fGA8JzuGszUmVsV2T6DYtsL"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0x37e4d2f015dd4005ff9b3f711257c891027804bc268db1791984af4989951912","urls":["bzz-raw://a4a566ea96b69211f503707f69a9f9012d5873a3fd57b3f221549f46a7518df6","dweb:/ipfs/QmVgcE3JufJr3iyeV6xqkvS4YtDcy6Eqyram2yzWUhwoB4"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0x8606e9de37943c74beabb9ac9acd2132f951bed1ef79f2f4f3de83ed1f271f6a","urls":["bzz-raw://d13adeee7ae9e687bf1cd12a8c36223179685fc828a7c468ee9311c879401b08","dweb:/ipfs/QmQeb2ArSoQpE6ujBbDj9LY3xqpVCPiz3bh9SLT6siE8RY"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x6574a30a2bbd8a0de21b2504c55effb8802fdeff62296af82a9380bd753adcc4","urls":["bzz-raw://85a859c533f51b584a9a2e8a64d61b6cf6f69bfcff1b926ad787518b1cae9562","dweb:/ipfs/QmVyjmyJ69ZeqaXHg91JtGLVahRfZ7KtWaessLWZ6rYk9p"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreKernel.sol":{"keccak256":"0x37a23dcbabc5937a717f2fda636b6a97963ed4b5a96870a62dfb199a8b692f89","urls":["bzz-raw://ac9741ea6daf21f39699be11afd919ae3ec07df24d948aaaa6549456fefd7fc0","dweb:/ipfs/QmeiPQkZitM4Pc3i6L87thU71Fs1JVWAgMqXnSK8VrCq75"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xdcf28b3293d4d6c1fe2808a8918c1b2122e4e0e49f2793c79ebd2b9ae210ff7b","urls":["bzz-raw://bb3d9cc80f549ed0c5b768aea69fb1b3c364bd4f85d193a3040c411b594d94db","dweb:/ipfs/QmYYdY5CjPHiW5ucXihTva1eHsCPNqBsvL6zYYafH3ap4p"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0x9e91a73f93cc9ebc00c265c83177f6a3f8a156749a9261202e2845e12aeaa96b","urls":["bzz-raw://a39280d87d22dd0a959d8f55925cb092dba1fee2f11d3dd8e3ffabed45a9ab6a","dweb:/ipfs/QmRMBFLJtT2KN43Xz9P3vUNWxXrP8rLTNBFw2P6Z7EGeaS"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x120fd448da5806e09ecb5327ad4dba64df01d2ee7232de0979133627e87e24ba","urls":["bzz-raw://7a3cb151b2ddee217f330d61813b2dcd997de94940c903719f6d066a21467890","dweb:/ipfs/Qmbes1RRY6KdtsMohp8834xXyipeQK9GJ41NfgXK1d1QAZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0xef6e7000b181c2991aeacbf99a9d886f8c4df88878b857713f851185b63a7811","urls":["bzz-raw://b079b4773d140ab2c01bdb04facfa56a78f753aea7122fa445b2bfa133411392","dweb:/ipfs/QmWYWKFpwtsPeGdCSxcANgxXUbwAuMMgR7iMVPDSCZxz2A"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0x167af6321dc89c2e5850e31949b1d64ab70bb1cc809daa54a030e8ff30f35411","urls":["bzz-raw://e4b1a2d5da7e4f79349f5257a62b4c6ffe110d6e18fe407099aec71a2f3b2539","dweb:/ipfs/QmQXqehp55UecYyuYTiPBKSnuedqYybXfCCjoPPrZ2hnRw"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x0d2a08030d21292ecbcc850d9111f3817d03f17cd5e02186894848a9152d79d7","urls":["bzz-raw://3f30024c1613fb587aaba4c1dcb8e4e46ed765a2cebd5b63fbebd327d1bf13d3","dweb:/ipfs/QmZzqSnPMYKDYwbFNvUFrvuazMUyQHzQ59w3A9x6juHAm7"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0xae6c03881fdfa56cba1879d9c9c6b52c2829e6a278a200176678d8da05a89345","urls":["bzz-raw://3cad7dc4944c0518de2e7f99697485d365ae37aa6cad6967996377c2dd951fe4","dweb:/ipfs/QmW3grFwr8BcgJmLfjLbj3FthnD7NRUBFMFiahbXztHPr7"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x7e735a4c7fa8b8a5fe2371d90801e3287ddb78efed69b31e1a76f0b7b153c4c3","urls":["bzz-raw://9e6db36bd52144b6feeecd91a58fc311127a3892fc96c4171db5b570fe9876ee","dweb:/ipfs/QmS6LqnTZvpMc4eiz5JowBoNnh3RYemG6JHjqtYucT1rQi"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x0128498e258f144cf98f0aa9aa0b39955273f31ca5464258a4cac8b3dbdb1b35","urls":["bzz-raw://cab457b868f39aaab35cb80ec4446606a0647a128234a2e3a16188d609efdd33","dweb:/ipfs/QmP4DeduAZfLBG7uN7DUuEoqom6sairSkwU3vb22MZMHL9"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreHook.sol":{"keccak256":"0x5123aae46b3f37ea6d7d567fd82658ea7f58d06a6ebd76aaf358582459f13173","urls":["bzz-raw://7223f7ca27353b8d86bd75441df8221383e6966caa7c25f9a802e7623bb5275d","dweb:/ipfs/QmaGmQK5JK2jS2sodKVxWuKiRNrtN8ErbdqE53PDatEDym"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreKernel.sol":{"keccak256":"0xeeb12eb8f8254eea33f4d3b80504962733c191f7cd4f4b1bc3033237e648ff0b","urls":["bzz-raw://01b41567453f8f4f8c55b30d88d891b1ea87f2b5354ee8ce67ca58aedfb296ec","dweb:/ipfs/QmZkGP7yKZUUnVxwAV4AVhHfc8Dnz1TtbyooeGBm33EUE7"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xfb7fbc9360bff0b7c7784259f84f619d37fae5dd3011b4f3ce6d4a8b30e9f4b9","urls":["bzz-raw://3a2a0a40de0d4447dcaecad71839de4e2eb8a96905f4d5551a7f2ccdf244c3c4","dweb:/ipfs/QmVejMTWV6T1YTfFyfjRvqRTyeG4AphM29WYwqb4yCmNDD"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0x7edf7c1641408f3a580eb28bda58054583cb846f875608612671c6d40712ba40","urls":["bzz-raw://4146adef610d1daab085a81aa9f2d4fd8c4e5f459b9ef184f3ef23465573cf91","dweb:/ipfs/QmQqZMsbkzSNG6VfYzQLdRCBCsNohBSVQmWoTP6QvKmKUP"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0x094a6f1e2910b345b6b254e0fc2c8882b3190c673f7ee19742e857057a4d3f85","urls":["bzz-raw://18908e2e7e878635abea72ef99851fddd204371e6b641f010e831ebfa0b1bfd4","dweb:/ipfs/QmSNAxXqxTrzPkZ4rSAQgBnuer1yLPq74hoqnzrZV3WGsb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0xfdea5b4cf666720c1c0d81a8acdede68e6220aee45d8a9f3c9834b4edc5da394","urls":["bzz-raw://b3a394dfe123cfb7200f65d379fb0cb3d2c84475b382faf6ee11bf9c45a63b53","dweb:/ipfs/QmRMPHFBbCKtqKBVV9gvd2jhnfsyUKmCBEQkgviMoxi1UG"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0xf192bceab34508cee21dd7c33e4d776f79c4a7ca55ee8905c6c694850ebfdf64","urls":["bzz-raw://c95113f76f6de671cb44710754e0942934182b544660a4330fc90a505e198905","dweb:/ipfs/QmXma5ZxfK8Y9TbvB7QM9hdhfc1ixiMcLpo9BQxnVthHB5"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0xa825218614acc19a4100357dd7ee410b67b994fe7aaa68650d5d0d4202d4ca8c","urls":["bzz-raw://09b0cbb598fe2b75bbcd269b47d686a66fcc89c0c40d9a09807eba7688b81fc6","dweb:/ipfs/QmYk6XQwSLhRumujTCsqxdvugKuP8oLjjB926pMHR445ra"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0x918b977e7f7f3e947d6d5aa189c54c9c7e7c106d0a0d53734ee959ad454abe09","urls":["bzz-raw://3a3de63c04c838bf80c1903cf7464d201d0ece0f86a7aaca35462b730e9338fc","dweb:/ipfs/QmSUkLZ88J7tSwdmR3viBJHU8QVgN2Gji6W8wYLJEDNkc2"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x67e0d59237bd37424827ecde1ecdbe71f65376af517b0623cd8f8d5451bca7a6","urls":["bzz-raw://09c5ec7fe73e06140957d44a3d9938587711c783ccbf08ff017638c9279a3168","dweb:/ipfs/QmfS9ZRqHXmBJ1h5B4x4gbU6d18DtMgKZSkxhQgNVRxueu"],"license":"MIT"},"node_modules/@latticexyz/store/src/rightMask.sol":{"keccak256":"0x28887aab8ad5ca598927e59d702999ca6e3b3128f1cddd2b995a381c8d04b275","urls":["bzz-raw://7710847f4689b7f5b81436c7d52ae4395f244a2eebf8d398b2edd43accb06754","dweb:/ipfs/QmTD2wYqryXTynHAn5Vf9wtjUUSGeCJWENZTnWtBAK38pa"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x4f29001e53690ce74fe405a6d0376a564c9c743d1631d36fab04331865e4d572","urls":["bzz-raw://138c80abd63225a3eeb01ebfa1f9288e188a7ee5b2266b275fb4ed31b5aa30e3","dweb:/ipfs/QmdEx9uHgCCbTcetGwFH5a66Ft7ajmrMDXvP1fW7WjnnE2"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261","urls":["bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586","dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x310523f7f3acca841e62fe50be8d8b042cad5b3c239cb1105d6623cf83e63152","urls":["bzz-raw://1cc40ca233acf6502bc65677b381c05331dd7323953e54b5df969051e47f851e","dweb:/ipfs/QmTxy9mhodT8drezB5K1kPR78AMaARomoJqDyaWpLuCKui"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x259ee545fd9dfd4767f0b7fef31f52fd3c54c4a1c6657d6fbda4927800c937b3","urls":["bzz-raw://0a4e31efa9f476cd267af7c3e11fe0151252206a1f6407a80a4092444c2de8ea","dweb:/ipfs/QmRF4gWYw33mFTMh7nX8DJ1qzx3Ko6yMsnxubzYTRppdyo"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x0e74ff88ec94cb33f79d8afc1497c4fdccf02db40ab47f3701c7d02fc305d4d8","urls":["bzz-raw://36b7cd0c2a3f2dcdc83ab7ac5a93f123746ce29c0f1000f2b275ad2c647ff0f3","dweb:/ipfs/QmYdipHYUhHhS78wLdtmKZUK14FEwpto5mFy3rNeZssMLz"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0xdd9f36208c5975c50187645c3296dccf014a73a9ed2d03b209984e101eca89c5","urls":["bzz-raw://27245a6f43082eecb2f1ffd309c477020b64eadaa070066d10c3c46b8b5f720a","dweb:/ipfs/QmQ8nqsgKRw2DYwydFbY9HZv1sNySnysrWkbteTp21eEuZ"],"license":"MIT"},"node_modules/@latticexyz/store/test/EchoSubscriber.sol":{"keccak256":"0x81815bcfe30f3671eb7589f83621866e31aad7385b95ef142a70fa2ef1de0fe8","urls":["bzz-raw://a5dc056be61192d38dee67585d3468c69bb72b76d764a844245e98a1c3a642d8","dweb:/ipfs/QmQsJhfbLD8sEeR3X2JF4NqGPsMtmQr32pKR21Tihr67pT"],"license":"MIT"},"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol":{"keccak256":"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd","urls":["bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3","dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze"],"license":"MIT"},"node_modules/@latticexyz/store/test/RevertSubscriber.sol":{"keccak256":"0x21321a672dc27dd4aa97a3cadb2968e475aa78cc7f02e86377a5b0ae70cbe4aa","urls":["bzz-raw://ff762173d6226b18df91bfb3b275d72499a1060f32a0fb640a2f95484e9a5b12","dweb:/ipfs/QmU8FiKgCfBCukmV8JiFnRXqCQCXThvic8jFQsyB1qtvEa"],"license":"MIT"},"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol":{"keccak256":"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02","urls":["bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5","dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0xe9e1b1e588699a15ee81cc46f5959e14ff323787b576681abe7b0163d5988a4e","urls":["bzz-raw://f19076661965fcf60fbf5e58ee8a83daac63e174806af79f5fd4144929cab899","dweb:/ipfs/QmVQxPrkHpSo1fbsqGvToXc6q9x8zrVrGaZjKTKY413QBm"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x1ad6ce468042f6ba104c8fa2cd5506e434e1bd458448492ae9e8d1993a7e5f1d","urls":["bzz-raw://ded3d879ad5a4119f9ff2320ff27f63a06bc3853e91d3697b3406ee3e6ab65d5","dweb:/ipfs/QmTMjjArXQxXa3WeFF4dvvkAFSEstHTTsNYDCckgCBUVeE"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x8fa0fe6f180267dd17948607704000850b896dd16570525a2347949023022b54","urls":["bzz-raw://45a984963246009d0021961527210f77b0af851b18cdc9efc7ef0ed3c7b98958","dweb:/ipfs/QmU8JAbabZeujX18JF4KCaCW34PbwSe8zR6Cc1cNRUJ4Bh"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0xc63b86705fd62b862e422f830604b7e14e18f1fab662b70a02f656f6ace4fdc7","urls":["bzz-raw://9d674c90bcc5b21e93b0b2a685c6cff86a69962cf900811af677ce77c3598dcf","dweb:/ipfs/QmVE4pv8AFQWP9RRdaqGo6FP1AR8svMaUQsPnEHZc5VLgF"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0x7cc2fbdd8ff6c996e19fab46c1031b76355da74973cebf45ce4df4b035d566bf","urls":["bzz-raw://857d577f84a68018a3392ec4540c15e80326aaf4b0f224d0d239605abacfc0f3","dweb:/ipfs/QmVEr3rTH1F1BFaCTMd7MmuceTqASwKBcMRnuFZ4tUAYmR"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe3d9074a1be3247be67ff4dd2c9e41481650ddaa799285a249736bb85673e33d","urls":["bzz-raw://0b6743ee1e6d0c74927bf17fc1da0cad7575aa7634871b94190ffbdb4c28c2a7","dweb:/ipfs/Qma5bNsPJSBTesWxg3eAAMUBTDE7UjqWaHF7eMiGwP87jr"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0xbb926cf64e685bbf2770d60124664cc84ab70bd3038e17a074f2d472c3fc2c57","urls":["bzz-raw://143c3dcbdf1702dd4f9c869629609386c12f7c0247e88a6d062dc4d519ebe0d2","dweb:/ipfs/QmQJSDd8uFL4sssw9fb9NHo4s6zjuDUgmrLHj3zsJuhMo1"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModuleErrors.sol":{"keccak256":"0x60917e029779c81cfea1f5140c389269e51d7adb78987f39101b9e0d7bdad12d","urls":["bzz-raw://513f41920d67ca28c3e0fe247403c28a4d342785192df449c99d5f92db04fcea","dweb:/ipfs/QmeAG2TtxAgcJQR4QxftuSvQrxisYQ1i1GZoyd7oeFQBDJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x81f1743d7ca6a9c7efc4997cf95e603ccb2070885265ca0e540f461aa7430721","urls":["bzz-raw://93d99e78b541b33ecd501bf0cd407a78cef490fec8eaef2f188bddb9e293a99f","dweb:/ipfs/QmPrcMDxwhvBZTr2AxoGqJA9L3Mjx27KBc98h3gXSsa3PM"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xb39e9d8cff4162e255f6c460ef9f9f0ad5b804627f745d967b2f10d0dd509299","urls":["bzz-raw://18d957cd87febccc00d82b9454047f0f5236250c9245befc0f57978671675255","dweb:/ipfs/QmdZ1eXBd15vLpLVqTNJDAAaTzzucpRLD8GPJahLKT4J7x"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0x0abae6f4ed1b3070bddd0ed194c08b83a948b61ae959396202cf627bf1056a2b","urls":["bzz-raw://a7037954f281cc0188a5aafc1d0cca0aabc110fd0234e6c43dca35ad69ed3baf","dweb:/ipfs/Qmbv2nfK1qPpnoAbqNJFqWwo7AuyaX2ZEgZMFspMv7DR5B"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldEvents.sol":{"keccak256":"0x39f6d8930db431c04158b85cc2a612c48d43dc81ec998f267076b12293c5d243","urls":["bzz-raw://d68f1543e5e166d639372d1aec57e3e193b5bb3b37270b6cb0488fab2c0ebe57","dweb:/ipfs/QmdJUFDx87AHWFKP3jVrYg8xqAkiPfuT1M3tEotNt7KUoy"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0xdaa1e92439036e392fe79892819ae165732f416b831f84d38050ca3d958e549b","urls":["bzz-raw://ea8dc52e31a62e8971322ea9ed8f2e83d562ec199d7f93a392c293e96ff7f092","dweb:/ipfs/QmSbM8MgHbrJLYP7uzemfZeC4xctqdyKDbspwHUsgeeVJC"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd99e81434439567e123dbade39850ea3e439ed7a33fe9a609ca6f1e08214908d","urls":["bzz-raw://a00f6f27be952688d8db4ed77667d55219a56a04973db4d421a2776eb46da88b","dweb:/ipfs/QmRqDmtDwZ8pXCcJFzwP7JDtUk86LmhWDrZBKy6q9UK9rz"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0xadcb32bdc444a4420909b738d81fa662dc63739455fe93d5aa89c93a3ccfd2dd","urls":["bzz-raw://d303094c84ebfb0f9f114c54ff4dfc68bfa1e526d0ebe304be6fbeb7cb2f0d3f","dweb:/ipfs/QmYvUx1mNDhkxZFqxLeswW3w9HkvVqeoJiJKj1HN1SB7Gi"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x5012c0607c8d41a4eed69d8a0430f742844883d3c3f17a6717ac287608b4e6af","urls":["bzz-raw://c389f65d050849cc95a7df9f45145186a60ae892b7d02b26ec92f8a38f8e2ee5","dweb:/ipfs/QmNQPBewaXghhVeJDaC1XUK6BbFrZ5qUjryhmJuyvgWdbF"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemHook.sol":{"keccak256":"0xcb7063c48eb27d3ddb0f1b477c8a298b68ed7fceba0762e555342a24a62f6fe3","urls":["bzz-raw://0da7b53848efba426f51f1f3698c3cd862553ed90edf220ed19fda51c12d162f","dweb:/ipfs/QmNd1QKSNoqHms3azKPLZtZoqNuRkgasCnYxVPG482b6jm"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x9cc2147746c9ce4c6f8071b245e85747a9fa115a5592e8eb21f973df6e5847ff","urls":["bzz-raw://d9988f706cc52b8a7dc870cd996ab628694e9d6924d3c7583e1ad936ea7f8691","dweb:/ipfs/QmSY1eAbsnw91biKHKBeyj6tkPeBjmaRSUsTt4G3uWz3cP"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0x50ca52bdd89a9f27d6b03ad00ef45c8c5a6884ea9d75e18f8fa53524ac2feed9","urls":["bzz-raw://55febdece37b291527094fb654919d4c8fe0b231792996a14c5e5cc76512b19e","dweb:/ipfs/QmZHFbDDNmdFHWc1uTSvDgMUUgb8NgBPb1cDUJYajswbHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xaff9a22fac8a0f6eee5763b07a7ccb623c829d37922b85e42e914aad2ad417ee","urls":["bzz-raw://e598f0274d6d97c0a09806bf4fd1f0d054c310cf51b2123f5ce6380d6f3186ea","dweb:/ipfs/QmaaVvqm21YsCgxozDyShcM17jKUXJhf2y26bk2YzPYZoM"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0x7e7321b86836bfbf4b96d0fb2a424ed678efcf01b15fa3d0b4ae4f0b975ad5dc","urls":["bzz-raw://ead41554796bd0507e390f2997aa4a8df7bff8b51523b86fa3c5bd8acb1fec48","dweb:/ipfs/QmVe1VUhfbRy8tviA7UcCtS8NjXhsF1E6Re9xLqWS5aRTK"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xe57042e82311847c56fa569377ed84459bf55afccdd3123312a5dff90c1d06f4","urls":["bzz-raw://baf3258c9118bf16ba68ebcfecdb5e5ffc85d5c0cdc2815ca298283dfcff2c83","dweb:/ipfs/QmcBVyUBR3PVejz7249VrEBMCMKHi72KoUXQ8DFmMmY48F"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf7acdfa0eb01c710d11fba129d613863fe86f1bed352f0bc5630bea81cceae17","urls":["bzz-raw://3e4107681cd20c018cd8f5dff6da72e8a4b02f631c7c59b618e8743482c7bc81","dweb:/ipfs/QmXS8NLaKVXcf97HrD8U4hGHqb9ytYGwdZrTVHHb5EwrRj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0x600cc362780c319e640950ad3520af7fa558171268baab252ff4da4414aa0f1c","urls":["bzz-raw://6d113a833b64bccbbe852f3d0261efd80ad4a0f6771802dc91af79c762a33ff2","dweb:/ipfs/QmaXEdJJaMMQF8nZieWyXdVD15yuXnH89QLZHwD18LAndz"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x7070453d969eba7defd90047d58ae979e27e5c1fcf05598daa4d17fedbe84c35","urls":["bzz-raw://ee5c196c5e339ac0222cd1d14fd9d09451d255605f73732abc33397a9512503b","dweb:/ipfs/QmYwNsWnxP24RzDqFYLnBYswZY97YE3nwG6Xf55f5FqNXa"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol":{"keccak256":"0xe08d3af994098120b5507c71a1c3558763b8c1a88c6eae506aa438c2af78f800","urls":["bzz-raw://bb0c47b16ff524140388765fe9ef99211dd7d9b9374dae09144a9956138de00c","dweb:/ipfs/Qma8ibVu6WZs1hFW3hMnUykV3pPXGZhZ3xJwJXNj6Xu7aL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0x70bed82da026058ddccf52766823c7d55c7d29faad0ab1d76d763786d5277f7c","urls":["bzz-raw://1da6476d62e450d3d935ea8292723612a84fa1d07342fbc052ee851181701a27","dweb:/ipfs/Qmd1FQpmEVbQciLDPkHPXSKB7aYW1YB74BN5JXqn74erhR"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x25248669a093cfdc9453491e5b5806f6aa092a805569799650c43c32f7b7877d","urls":["bzz-raw://2f294f597122450abd267760d91682facd0a1040383caeb44aaadeb74770904a","dweb:/ipfs/QmPXsoh8tUhpnhjdBYYTZCLc8MPHDZK6xUmN7F2DsMEXro"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x1ee313f4f1165034b92c5df1fe4cdd9be52b27780245388db3a0267c119fc926","urls":["bzz-raw://a3d58ca6a58e94bc30d5be0fc7a7d1325a92096c8b8b2b3a0531c2c5d0d60791","dweb:/ipfs/QmZSisbANqwnFzwMJnnYBjemLW4Cqn3oL7MkV4HiQR7GKv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xe0b2ae91638eb7a609ce29428b3ab2a796f06558cf82cca9a258fd4ff06690dd","urls":["bzz-raw://522872daab151f15b83bb63a41dd54bc9142b8875fabd43f4bdae209f7532fd1","dweb:/ipfs/QmNRWboeoneiCkewk7BLp27yQCj7NE6DGNiaeWt6Z4jYtX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol":{"keccak256":"0x28ecea550f7cef98318f2db2e203e758475306a6454f776e6dbc5094811d577e","urls":["bzz-raw://01ae40d53747c2fec400c3bddec5789da6995a38e918bf3badad9c403e70d069","dweb:/ipfs/QmaQhjyGzXjTR16gJUnpaBhG5zJvPdaxJ6c9yJY9FD5kBb"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x50a1f277a00f01e3cb97a85f0fc624ae2192a726136720b6a900b465a7aecc05","urls":["bzz-raw://8f3cd87cc0b905d5b75d134d95176630404e76c0f0a343cbd17b8338e1492c0b","dweb:/ipfs/QmURFDNBdUWgh57apX9n7VF68rSQeQrpc5to4FFV6bbJgN"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x66193215d3c053675d67ba81d530ee2bb1c39250a15cf2d9a6fb166615af461d","urls":["bzz-raw://b783be83ef27281fb6ae2166f692d0ec912bdbe4f49312181b1ef561b5098729","dweb:/ipfs/Qmdtmq4mGtrqoFg4UWhxAevNfVXEUhp8fohRWycqKD2vCk"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0x3a53f395fc56398b4095c1e4016ad5f87d06236fc00f1fb85b9cfe138575b614","urls":["bzz-raw://9d91d30c8506a2d07bcafe0f8feff002bbc7764060d7e7bef7f15b9c4a97c597","dweb:/ipfs/QmVTAxSh1JSMpKD1jmJSTvXbDZQubdJW2DQDoePWecJskH"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xb857dd63073a6469f5bb8deb6c0617763cd42c484821e247572c6b53bb1da3cc","urls":["bzz-raw://07c710d67440b98b145c1991623b7c8cc7f0805b4e6fa37a7d54afcece31239e","dweb:/ipfs/Qmb368QqzbQGUttbDS7eVBGQ8KcXhiai2F9vy3Thyyk2vx"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0xc27730dae8302cb86f5d65ddc9ae0e92afba17842285a6d0cd146a1e21d73c0f","urls":["bzz-raw://4de5f820f1dfe36e53fe1fc77be6a52ac5fa72a7a5d5ec66e5d29ca6ce553674","dweb:/ipfs/QmP5JUMHDCBxZkZ2YnoYQLqQFHeyCpoUVp14hJBWpSdiqV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xcb1e9fd5cd02cbb7125f2a64c02f89272d4b0f2afc0b43f24b727f023ef06493","urls":["bzz-raw://f4a923e67dea1c1c0a978cbb89d4e27f6e0205f49efe0556ac90b358bd2062ab","dweb:/ipfs/QmZww8gDH9kyXsCaTYWzupNhL1QqR1emAbb5VifFWhDWYF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x1706fe4b5441a4e3982a3d32f7de2148627b8dfbbe3e38391dd4dab06b86478c","urls":["bzz-raw://c0569fa73cd26c6476188646194ad58eb5cf78cb7c7dc7722748455c23c9d4d7","dweb:/ipfs/Qma1RuR12bTXSVJJ8Q8Gw23KkBw7pyV9u5Kr8TGutaxYdz"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0x3b8d434a81e5667242724089207f90001099d32095e05c4efd75931201d850b1","urls":["bzz-raw://73d47004e03e56b0d0e64ca9012219bc6ae01cef455d7e6ccab9f60dfc5e55b5","dweb:/ipfs/QmQUcGYNEVBRs1oj1HgJ92SPNuiDL3YVYbBymGy63yxqDc"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/InitModule.sol":{"keccak256":"0xa94f674bf15e20feff8e2e4a5819818a59ffd1026a6c436358f21124481249b3","urls":["bzz-raw://f30b50afbe39a6271ce4082d0d8a30a2d563eb52c89432f2de9d47e7ae4b0771","dweb:/ipfs/QmfEMVXKk8HvdiivYKPKsApRDar4G1bvjfwXvesRFZdVio"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol":{"keccak256":"0x1aa994d09220ac38bd4f47e2be9f54e4b1a46ffb14be40552ac64998059105fe","urls":["bzz-raw://88ba9f14551c18238056f6f5daf6166acc93c531f66cf32bbadb4142eca04a25","dweb:/ipfs/QmQfiy93ewydVkwLdbUSXHn5K29r1SJaiw51sgoFWJXsmu"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol":{"keccak256":"0x5aa1ad023ec7e30b102275af8f76e08d195e277fd89fb5fffd8436adf7dbc3f2","urls":["bzz-raw://5389a9204b6714c8494f169277ccfdcf43ab3d969cafddf8a5eb61d2a2b827a4","dweb:/ipfs/QmVvkj8hEcUQZTvHptDe7fEZHnH9bnut6f3jaLSquPgBCw"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/constants.sol":{"keccak256":"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9","urls":["bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752","dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/functionSignatures.sol":{"keccak256":"0x22a231d9b772d582fa7785218912e183404eab1e7c4ab8b4afe8fe123ebf6234","urls":["bzz-raw://969a745da85bd673861ab9faf3b702d4fbd16b575a6a76cbf5fe55c59efd6425","dweb:/ipfs/QmU6hBi69WMnxWyxjJnzJeiKqs1e8CKPP6rra9WZKs5VU8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol":{"keccak256":"0x8c0466eb13c16390a68a8f44f6a718b17e91c86896b616fdcf4c2702f5eb5bc2","urls":["bzz-raw://1a595433787c57e8335a425ccacec108deff2103de04b400917ad269bdd7bc38","dweb:/ipfs/QmXbhHUKEFV4E6LrN23wQrubZtBZRH5bDCz3jj7yoeUb49"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol":{"keccak256":"0x17b2dc1cc39e7d5fab339a1bb9b81b82cf5caff29806273df267d291ac89cc28","urls":["bzz-raw://308d596b1aefb3616dd9f3f69c933257468756bea73754313aa083a71c5ff883","dweb:/ipfs/QmWuCpM1WNhaKtZerYaxCbUbfQg2a3tGJsdb6Bvjrt77v7"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol":{"keccak256":"0x9d1498bdc2ef2ec0bf6d2beab2543ca826955d7e94a602351394b1a197efeeb5","urls":["bzz-raw://367299bcbe7df6683dc2a6d10838915ac0f7968739630e28900aa9c3e0833ea3","dweb:/ipfs/QmZAiRh4YWhLHxv92A7YRTRYNeVLNWAYjdWd9QWFrzzQsq"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol":{"keccak256":"0x1be1b12b2b2c7ff519cbe503ddda58cd308a8067e9ff7a168f3833031cf3f93d","urls":["bzz-raw://37cede506e9219fa7a1c518ece3fa6333ccad58b4b792629044288d2d9b9e8d1","dweb:/ipfs/QmcFo72Bv2t5GFQgM71NNB7xNLnQwG39oE9KTrdaNsv9ZV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol":{"keccak256":"0x3a8ffe8942badedf5654e02189c6d6e89c5a37d40d8643abbdd7869ee2858498","urls":["bzz-raw://885dec95191527acc629af3b99818e81c37cb14744ae33677a84d37bc9413c86","dweb:/ipfs/Qmd873kb8eDWXqZxnT6Qimh5AW2osaX6KnbXySSVkjZRrf"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xc267df948cb1efec454b25a6ffac1b81f0bd3c33cc590f13722af6cddef5e692","urls":["bzz-raw://e3f156fdc7b29a1011f7745b57c9e08eb85e14596ff63918e91d9e1878dc0bf8","dweb:/ipfs/Qmee2zDChY6qjXua9PwFA4tQvNVj5Dk33TCP1B8F65L6zJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/types.sol":{"keccak256":"0x81b75eb286ec515bde6cbb16c3d089054abb530b744865bbace68343d23177bc","urls":["bzz-raw://afc77bd51e24da666260bb48c44ff611869fb2e550921d732e5aac84a1f09525","dweb:/ipfs/QmeU5N4yeRh5nEA65pvGtQQJNv1GvEPy4PkhMVRYRMoMvh"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x5b94a21fd46abb4aac8f38809c0d6105f30792042c927f8a6a4f40cfe35c7ab8","urls":["bzz-raw://8bade9d52cf370f3b5435abb47a5338dca5498bee773e97518e7a080fa882940","dweb:/ipfs/QmTtaXUWwMQmHW8oKEoRZxagidZcCiN3oLQs7kN3nycrkW"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireNamespace.sol":{"keccak256":"0xda4a4a55bde8e55c28472d37009a194aa221ad11feb233d1c17a87b303977567","urls":["bzz-raw://ef691f35102f6ce85cc1cdaf3ec29b4ba632384a0358629dd642292c709f34e5","dweb:/ipfs/QmYuewEaRZ1UWxd231AK4SpjsiLrd7o4nyaPTeEzLCswcc"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireValidNamespace.sol":{"keccak256":"0x361f8259c4a5ba355b2aad118befe00f7fe5169be730d6c0ca11ab7a863bd6fd","urls":["bzz-raw://ccc850a1ea57e900d85e2c5fac02c36d55b42d2345b439ea7044ea42f5a49c01","dweb:/ipfs/QmVShgn2FgTTg9QGnL5Fzhovowmu1C7fABKLJTxbewZzEG"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0xa1147f218a0152b153d4e8bada0f606bfed40ac1f184fd16a941c2d0033c53f5","urls":["bzz-raw://3f5e0f6d1b51a3a04d4bd84537b2ced373b32824898cf6fbfd13ae1cbdf06359","dweb:/ipfs/QmayYRmBZRUV9m4UnFxuC62VvHriXhkYXeH3HibZ3Gmxxf"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0x15c25ae4b21e091209970e45a198cb51f31eeae482828862641099c1a9b2448a","urls":["bzz-raw://0ce3c3eb58dc5c262d36babf372ad028d2846beea73a59d6e70f0eb8c90ee00d","dweb:/ipfs/QmWUkgegTRtSJM3awvjg4J7DWZ2ME7Pnxp1dP2TWWzLNoo"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x93e7a4800fde9471e4f3bbbd09b81f31296cb8c1c92fc5622eac14bbc2307c51","urls":["bzz-raw://95c364929e1eda55141d6a48d5f6e95203840316927e4e58361230399865f310","dweb:/ipfs/QmXXwN2AQ4dSmVonQijwbnm8o1gnKx36s9pRo6XLah47xU"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xeb042e7d3638430f6fd394107f3237cf14e4325154f0098624e8a7826584d465","urls":["bzz-raw://39e0b8eb87616b661f5a4f2fd7e1a727bd19b7fd8d40ad3d93fda26822f433ea","dweb:/ipfs/QmacYMatKV9pwEwirVRY9a6r89RoNs5yk99ic37ieWA8Dk"],"license":"MIT"},"node_modules/@latticexyz/world/test/DelegationControlMock.sol":{"keccak256":"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e","urls":["bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d","dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf"],"license":"MIT"},"node_modules/@latticexyz/world/test/World.t.sol":{"keccak256":"0xaebde25dcf6be97013cc72bf50c36c243f576153be7431f149a8e67c87b789a6","urls":["bzz-raw://023929f4d8dc90d444bdba6f39499726ed131429df31a1591694c454b62547ef","dweb:/ipfs/QmTMGA5451Dxbq13josZs89oikh6Xiuxa1zKpcGqqs8gvL"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol":{"keccak256":"0xa019ca8c969156d46fbc440510e5d35184d191613e5019dc48447814a53554a9","urls":["bzz-raw://ea16beef2519c9e4deffd9c6a36262264ba6779115830f8d80dabd2916945f57","dweb:/ipfs/QmQQYzRGP2RG36znau6ABeiuSwPHdd29NyAJBSeySLBWJX"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol":{"keccak256":"0xbb3ad96ab0be4a3539f836df90cc4f29455c241576de622d0a85e21c63297219","urls":["bzz-raw://0cf4d9fa1f2ed8aa791e3a99dd29e3b45cb7dcd2f222786fe461e6b477a56abf","dweb:/ipfs/QmYHCqdw64driGxzeXi3zxsBtBk1eVtVTTTYpi2K3rdS9A"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol":{"keccak256":"0xc9c2ba1f2ffb7e23c87158f16406a754a121b2c05dc91ac198f9f4bab36d78a1","urls":["bzz-raw://75831aebdf36e6247925913377bb0c2f6164d17894c0afbcf4a8550d3294b463","dweb:/ipfs/QmTnwY9EzjctGtnvvBXs8cmz5UbbdvsHNv2EpY5vfiJxpG"],"license":"MIT"},"node_modules/@latticexyz/world/test/createInitModule.sol":{"keccak256":"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383","urls":["bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc","dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa"],"license":"MIT"},"node_modules/@latticexyz/world/test/createWorld.sol":{"keccak256":"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196","urls":["bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4","dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/modules/std-delegations/CallboundDelegationControl.sol":{"keccak256":"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202","urls":["bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44","dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF"],"license":"MIT"},"src/modules/std-delegations/StandardDelegationsModule.sol":{"keccak256":"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75","urls":["bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67","dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK"],"license":"MIT"},"src/modules/std-delegations/SystemboundDelegationControl.sol":{"keccak256":"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad","urls":["bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815","dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq"],"license":"MIT"},"src/modules/std-delegations/TimeboundDelegationControl.sol":{"keccak256":"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093","urls":["bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb","dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb"],"license":"MIT"},"src/modules/std-delegations/constants.sol":{"keccak256":"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d","urls":["bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b","dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC"],"license":"MIT"},"src/modules/std-delegations/tables/CallboundDelegations.sol":{"keccak256":"0x22fd8bdfdff4b918b59d85143918e6091fdc9225c61c304517a949e4a420eab4","urls":["bzz-raw://0ad776386ace564c5d7d62e191ab8125923783d404027d82622e520da62d4ca4","dweb:/ipfs/QmUaenwXrYe41sXTsJ4dkhm9AjU8SH62Rjfrp4fcFU32ww"],"license":"MIT"},"src/modules/std-delegations/tables/SystemboundDelegations.sol":{"keccak256":"0x7866a750c927fbacf2cba4085cb91d2411f995693a5baaf5cc1e2b1316d2069b","urls":["bzz-raw://7b28c6dc27281e98f7af53eb8cbcb158c426bb3e9a51846cc2c1e40183ff5f4b","dweb:/ipfs/QmR7TZhv4aaXNWnwN4HkW35jms4Z83cL8vNmtskM5GXhtd"],"license":"MIT"},"src/modules/std-delegations/tables/TimeboundDelegations.sol":{"keccak256":"0x7957a2bca401d8ed11ced86861b25d8bb485d06f188c24b99bf289a5d8b29300","urls":["bzz-raw://19ea655c576e93ebbcae10b6d77b9a0be8fd32f9e47f209986aacb72d90a6842","dweb:/ipfs/QmRppC6j9FBjLs8ZjWwaTZNesxCo2v2tdZstbE6VgBFzJ8"],"license":"MIT"},"test/StandardDelegationsModule.t.sol":{"keccak256":"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a","urls":["bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812","dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN"],"license":"MIT"}},"version":1},"id":210}