@shipload/sdk 1.0.0-next.7 → 1.0.0-next.71

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 (203) hide show
  1. package/lib/scan.d.ts +52 -0
  2. package/lib/scan.js +162 -0
  3. package/lib/scan.js.map +1 -0
  4. package/lib/scan.m.js +152 -0
  5. package/lib/scan.m.js.map +1 -0
  6. package/lib/shipload.d.ts +5822 -1484
  7. package/lib/shipload.js +20838 -5419
  8. package/lib/shipload.js.map +1 -1
  9. package/lib/shipload.m.js +20674 -5669
  10. package/lib/shipload.m.js.map +1 -1
  11. package/lib/testing.d.ts +1691 -0
  12. package/lib/testing.js +7109 -0
  13. package/lib/testing.js.map +1 -0
  14. package/lib/testing.m.js +7103 -0
  15. package/lib/testing.m.js.map +1 -0
  16. package/package.json +20 -2
  17. package/src/capabilities/craftable.test.ts +82 -0
  18. package/src/capabilities/craftable.ts +82 -0
  19. package/src/capabilities/crafting.test.ts +80 -0
  20. package/src/capabilities/crafting.ts +50 -8
  21. package/src/capabilities/gathering.test.ts +29 -0
  22. package/src/capabilities/gathering.ts +38 -20
  23. package/src/capabilities/hauling.ts +0 -5
  24. package/src/capabilities/index.ts +0 -1
  25. package/src/capabilities/modules.ts +27 -30
  26. package/src/capabilities/movement.ts +1 -1
  27. package/src/capabilities/storage.test.ts +26 -0
  28. package/src/capabilities/storage.ts +22 -7
  29. package/src/contracts/fund.ts +306 -0
  30. package/src/contracts/platform.ts +312 -3
  31. package/src/contracts/server.ts +2793 -478
  32. package/src/contracts/token.ts +170 -0
  33. package/src/contracts.ts +2 -0
  34. package/src/coordinates/address.ts +88 -0
  35. package/src/coordinates/constants.test.ts +15 -0
  36. package/src/coordinates/constants.ts +23 -0
  37. package/src/coordinates/index.ts +15 -0
  38. package/src/coordinates/memo.test.ts +47 -0
  39. package/src/coordinates/memo.ts +20 -0
  40. package/src/coordinates/permutation.ts +77 -0
  41. package/src/coordinates/regions.ts +48 -0
  42. package/src/coordinates/sectors.ts +115 -0
  43. package/src/data/capabilities.ts +49 -18
  44. package/src/data/capability-formulas.ts +26 -14
  45. package/src/data/catalog.test.ts +19 -0
  46. package/src/data/catalog.ts +13 -3
  47. package/src/data/charters.json +396 -0
  48. package/src/data/citizenry-adjectives.json +42 -0
  49. package/src/data/citizenry-nouns.json +50 -0
  50. package/src/data/colors.ts +14 -32
  51. package/src/data/entities.json +421 -15
  52. package/src/data/item-ids.ts +53 -13
  53. package/src/data/items.json +330 -77
  54. package/src/data/kind-registry.json +212 -0
  55. package/src/data/kind-registry.ts +192 -0
  56. package/src/data/metadata.ts +312 -51
  57. package/src/data/recipes-runtime.ts +6 -23
  58. package/src/data/recipes.json +2173 -173
  59. package/src/data/tiers.ts +9 -6
  60. package/src/derivation/build-methods.test.ts +71 -0
  61. package/src/derivation/build-methods.ts +50 -0
  62. package/src/derivation/capabilities.test.ts +348 -0
  63. package/src/derivation/capabilities.ts +707 -0
  64. package/src/derivation/capability-mappings.ts +60 -16
  65. package/src/derivation/crafting.test.ts +17 -0
  66. package/src/derivation/crafting.ts +57 -34
  67. package/src/derivation/index.ts +27 -2
  68. package/src/derivation/recipe-usage.test.ts +88 -0
  69. package/src/derivation/recipe-usage.ts +141 -0
  70. package/src/derivation/reserve-regen.ts +34 -0
  71. package/src/derivation/resources.ts +9 -1
  72. package/src/derivation/rollups.test.ts +55 -0
  73. package/src/derivation/rollups.ts +72 -0
  74. package/src/derivation/stars.test.ts +67 -0
  75. package/src/derivation/stars.ts +25 -0
  76. package/src/derivation/stat-scaling.ts +12 -0
  77. package/src/derivation/stats.ts +6 -6
  78. package/src/derivation/strata.ts +5 -3
  79. package/src/derivation/stratum.ts +26 -22
  80. package/src/derivation/tiers.ts +40 -7
  81. package/src/derivation/upgrades.ts +14 -0
  82. package/src/derivation/wormhole.ts +154 -0
  83. package/src/entities/entity.ts +102 -0
  84. package/src/entities/gamestate.ts +3 -28
  85. package/src/entities/makers.ts +144 -136
  86. package/src/entities/slot-multiplier.ts +43 -0
  87. package/src/entity/hydrate.test.ts +156 -0
  88. package/src/entity/hydrate.ts +86 -0
  89. package/src/errors.ts +21 -16
  90. package/src/format.ts +42 -9
  91. package/src/index-module.ts +425 -32
  92. package/src/influence/ballot.test.ts +103 -0
  93. package/src/influence/ballot.ts +98 -0
  94. package/src/influence/categories.ts +32 -0
  95. package/src/influence/charter-metadata.test.ts +136 -0
  96. package/src/influence/charter-metadata.ts +236 -0
  97. package/src/influence/charters.test.ts +112 -0
  98. package/src/influence/charters.ts +150 -0
  99. package/src/influence/citizenry.ts +38 -0
  100. package/src/influence/civic-shuttle.test.ts +202 -0
  101. package/src/influence/civic-shuttle.ts +142 -0
  102. package/src/influence/civic.test.ts +287 -0
  103. package/src/influence/civic.ts +269 -0
  104. package/src/influence/constants.ts +84 -0
  105. package/src/influence/decay.ts +20 -0
  106. package/src/influence/decomp.ts +95 -0
  107. package/src/influence/demand.ts +106 -0
  108. package/src/influence/duration.ts +101 -0
  109. package/src/influence/index.ts +118 -0
  110. package/src/influence/influence.test.ts +450 -0
  111. package/src/influence/quality.ts +25 -0
  112. package/src/influence/valuation.ts +154 -0
  113. package/src/managers/actions.ts +950 -93
  114. package/src/managers/balances.test.ts +161 -0
  115. package/src/managers/balances.ts +93 -0
  116. package/src/managers/base.ts +10 -2
  117. package/src/managers/cluster.test.ts +39 -0
  118. package/src/managers/cluster.ts +53 -0
  119. package/src/managers/construction-types.ts +80 -0
  120. package/src/managers/construction.ts +453 -0
  121. package/src/managers/context.ts +58 -1
  122. package/src/managers/coordinates.ts +14 -0
  123. package/src/managers/entities.ts +35 -63
  124. package/src/managers/epochs.ts +72 -1
  125. package/src/managers/index.ts +38 -1
  126. package/src/managers/influence.test.ts +56 -0
  127. package/src/managers/influence.ts +425 -0
  128. package/src/managers/jobs.test.ts +96 -0
  129. package/src/managers/jobs.ts +58 -0
  130. package/src/managers/locations.ts +25 -29
  131. package/src/managers/nft.test.ts +21 -0
  132. package/src/managers/nft.ts +110 -0
  133. package/src/managers/players.ts +25 -0
  134. package/src/managers/plot.ts +122 -0
  135. package/src/nft/atomicassets.abi.json +1342 -0
  136. package/src/nft/atomicassets.ts +237 -0
  137. package/src/nft/atomicdata.ts +130 -0
  138. package/src/nft/buildImmutableData.ts +388 -0
  139. package/src/nft/description.ts +222 -100
  140. package/src/nft/index.ts +3 -0
  141. package/src/planner/index.ts +296 -0
  142. package/src/planner/planner.test.ts +459 -0
  143. package/src/receipts.ts +22 -0
  144. package/src/resolution/describe-module.ts +43 -25
  145. package/src/resolution/display-name.ts +39 -11
  146. package/src/resolution/resolve-item.test.ts +48 -0
  147. package/src/resolution/resolve-item.ts +112 -58
  148. package/src/scan/index.ts +244 -0
  149. package/src/scan/scan-wasm.base64.ts +2 -0
  150. package/src/scheduling/accessor.ts +65 -23
  151. package/src/scheduling/availability.test.ts +320 -0
  152. package/src/scheduling/availability.ts +251 -0
  153. package/src/scheduling/cancel.test.ts +550 -0
  154. package/src/scheduling/cancel.ts +254 -0
  155. package/src/scheduling/cluster-stock.test.ts +31 -0
  156. package/src/scheduling/cluster-stock.ts +15 -0
  157. package/src/scheduling/energy.ts +47 -0
  158. package/src/scheduling/epoch.ts +1 -0
  159. package/src/scheduling/idle-resolve.ts +45 -0
  160. package/src/scheduling/jobs.test.ts +448 -0
  161. package/src/scheduling/jobs.ts +343 -0
  162. package/src/scheduling/lane-core.ts +128 -0
  163. package/src/scheduling/lanes.test.ts +250 -0
  164. package/src/scheduling/lanes.ts +279 -0
  165. package/src/scheduling/projection.ts +265 -149
  166. package/src/scheduling/schedule.test.ts +163 -0
  167. package/src/scheduling/schedule.ts +282 -116
  168. package/src/scheduling/task-cargo.test.ts +110 -0
  169. package/src/scheduling/task-cargo.ts +62 -0
  170. package/src/scheduling/task-effects.test.ts +35 -0
  171. package/src/scheduling/task-effects.ts +34 -0
  172. package/src/scheduling/unwrap.test.ts +86 -0
  173. package/src/scheduling/unwrap.ts +190 -0
  174. package/src/shipload.ts +63 -4
  175. package/src/subscriptions/manager.cluster.test.ts +51 -0
  176. package/src/subscriptions/manager.ts +245 -172
  177. package/src/subscriptions/mappers.ts +5 -8
  178. package/src/subscriptions/types.ts +28 -3
  179. package/src/testing/catalog-hash.ts +19 -0
  180. package/src/testing/index.ts +2 -0
  181. package/src/testing/projection-parity.ts +167 -0
  182. package/src/travel/reach.test.ts +86 -0
  183. package/src/travel/reach.ts +34 -0
  184. package/src/travel/route-build.test.ts +63 -0
  185. package/src/travel/route-build.ts +60 -0
  186. package/src/travel/route-planner.ts +288 -0
  187. package/src/travel/route-simulator.ts +170 -0
  188. package/src/travel/travel.ts +190 -123
  189. package/src/types/capabilities.ts +37 -8
  190. package/src/types/entity.ts +3 -3
  191. package/src/types/index.ts +0 -1
  192. package/src/types.ts +81 -23
  193. package/src/utils/cargo.test.ts +14 -0
  194. package/src/utils/cargo.ts +2 -0
  195. package/src/utils/display-name.ts +70 -0
  196. package/src/utils/hash.ts +22 -2
  197. package/src/utils/system.ts +24 -5
  198. package/src/capabilities/loading.ts +0 -8
  199. package/src/entities/container.ts +0 -123
  200. package/src/entities/ship-deploy.ts +0 -295
  201. package/src/entities/ship.ts +0 -221
  202. package/src/entities/warehouse.ts +0 -127
  203. package/src/types/entity-traits.ts +0 -69
@@ -1,8 +1,10 @@
1
1
  import type {
2
2
  Action,
3
+ BytesType,
3
4
  Checksum256Type,
4
5
  Int32Type,
5
6
  Int64Type,
7
+ Int8Type,
6
8
  NameType,
7
9
  TimePointType,
8
10
  UInt16Type,
@@ -13,11 +15,14 @@ import type {
13
15
  import {
14
16
  ABI,
15
17
  Blob,
18
+ BlockTimestamp,
16
19
  Bytes,
17
20
  Checksum256,
18
21
  Checksum512,
22
+ ExtendedAsset,
19
23
  Int32,
20
24
  Int64,
25
+ Int8,
21
26
  Name,
22
27
  Struct,
23
28
  TimePoint,
@@ -29,10 +34,15 @@ import {
29
34
  import type {ActionOptions, ContractArgs, PartialBy, Table} from '@wharfkit/contract'
30
35
  import {Contract as BaseContract} from '@wharfkit/contract'
31
36
  export const abiBlob = Blob.from(
32
- 'DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDiIAQlhZGRtb2R1bGUABQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4Cm1vZHVsZV9yZWYJY2FyZ29fcmVmCnRhcmdldF9yZWYKY2FyZ29fcmVmPwhhZGRuZXh1cwADCm5leHVzX25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAdhZHZhbmNlAAIGcmV2ZWFsBnN0cmluZwZjb21taXQLY2hlY2tzdW0yNTYFYmxlbmQAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAZpbnB1dHMMY2FyZ29faXRlbVtdBmNhbmNlbAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50BnVpbnQ2NA5jYW5jZWxfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ9jYW5jZWxsZWRfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwpjYXJnb19pdGVtAAQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10IcXVhbnRpdHkGdWludDMyCWNhcmdvX3JlZgADB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCWNhcmdvX3JvdwAGAmlkBnVpbnQ2NAllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQpjYXJnb192aWV3AAUHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10IcXVhbnRpdHkGdWludDMyAmlkBnVpbnQ2NAxjbGFpbXN0YXJ0ZXIAAwdhY2NvdW50BG5hbWUBeAVpbnQ2NAF5BWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAKAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8Fc3RhdHMGdWludDY0B2l0ZW1faWQGdWludDE2C2Nvb3JkaW5hdGVzAAMBeAVpbnQ2NAF5BWludDY0AXoHdWludDE2PwVjcmFmdAAFC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0CXJlY2lwZV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBmlucHV0cwxjYXJnb19pdGVtW10NY3JhZnRlcl9zdGF0cwACBXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MTYMY3JlYXRlZW50aXR5AAUFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwF4BWludDY0AXkFaW50NjQIZGVtb2xpc2gAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQGZGVwbG95AAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQDcmVmCWNhcmdvX3JlZgpkZXNjZW50aXR5AAQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQMbW9kdWxlX2l0ZW1zCHVpbnQxNltdDG1vZHVsZV9zdGF0cwh1aW50NjRbXQZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDE2CHJlY2hhcmdlBnVpbnQxNhRlbnRpdHlfY3VycmVudF9zdGF0ZQACC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MTYPZW50aXR5X2RlZmF1bHRzAAILd2FyZWhvdXNlX3oGdWludDE2C2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAZBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10HbG9hZGVycw1sb2FkZXJfc3RhdHM/B21vZHVsZXMObW9kdWxlX2VudHJ5W10GZW5lcmd5B3VpbnQxNj8IaHVsbG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/CGdhdGhlcmVyD2dhdGhlcmVyX3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8HaXNfaWRsZQRib29sDGN1cnJlbnRfdGFzawV0YXNrPxRjdXJyZW50X3Rhc2tfZWxhcHNlZAZ1aW50MzIWY3VycmVudF90YXNrX3JlbWFpbmluZwZ1aW50MzINcGVuZGluZ190YXNrcwZ0YXNrW10HaWRsZV9hdAt0aW1lX3BvaW50PwhzY2hlZHVsZQlzY2hlZHVsZT8NZW50aXR5X2xheW91dAACDmVudGl0eV9pdGVtX2lkBnVpbnQxNgVzbG90cwpzbG90X2RlZltdFWVudGl0eV9sYXlvdXRzX3Jlc3VsdAABCGVudGl0aWVzD2VudGl0eV9sYXlvdXRbXQplbnRpdHlfcmVmAAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkCnRpbWVfcG9pbnQPZW50aXR5Z3JvdXBfcm93AAICaWQGdWludDY0DHBhcnRpY2lwYW50cwxlbnRpdHlfcmVmW10LZW51bV9tZW1iZXIAAgV2YWx1ZQV1aW50OARuYW1lBnN0cmluZwtlbnVtX3Jlc3VsdAABB21lbWJlcnMNZW51bV9tZW1iZXJbXQtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdBmdhdGhlcgAEBnNvdXJjZQplbnRpdHlfcmVmC2Rlc3RpbmF0aW9uCmVudGl0eV9yZWYHc3RyYXR1bQZ1aW50MTYIcXVhbnRpdHkGdWludDMyDmdhdGhlcmVyX3N0YXRzAAQFeWllbGQGdWludDE2BWRyYWluBnVpbnQxNgVkZXB0aAZ1aW50MTYFc3BlZWQGdWludDE2CWdldGNvbmZpZwAAC2dldGVsaWdpYmxlAAIGY29vcmRzC2Nvb3JkaW5hdGVzB3N0cmF0dW0GdWludDE2C2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQLZ2V0aXRlbWRhdGEAAApnZXRpdGVtaWRzAAAIZ2V0aXRlbXMAAAxnZXRpdGVtdHlwZXMAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0C2dldG1vZHR5cGVzAAAKZ2V0bW9kdWxlcwAACWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCmdldG5mdGluZm8AAAlnZXRwbGF5ZXIAAQdhY2NvdW50BG5hbWUJZ2V0cmVjaXBlAAEOb3V0cHV0X2l0ZW1faWQGdWludDE2CmdldHJlY2lwZXMAAgtsb3dlcl9ib3VuZAZ1aW50MTYFbGltaXQFdWludDgKZ2V0cmVzY2F0cwAAC2dldHJlc2VydmVzAAIBeAVpbnQ2NAF5BWludDY0DGdldHJlc291cmNlcwAACGdldHNsb3RzAAAKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwxoYXVsZXJfc3RhdHMAAwhjYXBhY2l0eQV1aW50OAplZmZpY2llbmN5BnVpbnQxNgVkcmFpbgZ1aW50MTYEaW5pdAABBHNlZWQLY2hlY2tzdW0yNTYIaXRlbV9kZWYABQJpZAZ1aW50MTYEbWFzcwZ1aW50MzIEdHlwZQV1aW50OAdzdWJ0eXBlBXVpbnQ4BHRpZXIFdWludDgMaXRlbV9pZF9wYWlyAAICaWQGdWludDE2BG5hbWUGc3RyaW5nD2l0ZW1faWRzX3Jlc3VsdAABBWl0ZW1zDml0ZW1faWRfcGFpcltdD2l0ZW1kYXRhX3Jlc3VsdAACBWl0ZW1zCml0ZW1fZGVmW10HcmVjaXBlcw5yZWNpcGVzX3Jlc3VsdAppdGVtc19pbmZvAAEFaXRlbXMKaXRlbV9kZWZbXQRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgQbG9jYXRpb25fZGVyaXZlZAACDHN0YXRpY19wcm9wcw9sb2NhdGlvbl9zdGF0aWMEc2l6ZQZ1aW50MTYNbG9jYXRpb25faW5mbwACBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAxsb2NhdGlvbl9yb3cABgJpZAZ1aW50NjQFb3duZXIEbmFtZQtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQhzY2hlZHVsZQlzY2hlZHVsZT8PbG9jYXRpb25fc3RhdGljAAUGY29vcmRzC2Nvb3JkaW5hdGVzBHR5cGUNbG9jYXRpb25fdHlwZQdzdWJ0eXBlBXVpbnQ4BXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DG1vZHVsZV9lbnRyeQACBHR5cGUFdWludDgJaW5zdGFsbGVkDnBhY2tlZF9tb2R1bGU/C21vZHVsZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyC21vZHVsZV90eXBlBXVpbnQ4BHRpZXIFdWludDgObW9kdWxlc19yZXN1bHQAAQdtb2R1bGVzDW1vZHVsZV9pbmZvW10ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50FGVudGl0eV9jdXJyZW50X3N0YXRlCXByb2plY3RlZBRlbnRpdHlfY3VycmVudF9zdGF0ZQptYXhfZW5lcmd5BnVpbnQxNgdzeXN0ZW1zD25lYXJieV9zeXN0ZW1bXQ1uZWFyYnlfc3lzdGVtAAQIZGlzdGFuY2UGdWludDY0C2VuZXJneV9jb3N0BnVpbnQ2NAtmbGlnaHRfdGltZQZ1aW50MzIIbG9jYXRpb24NbG9jYXRpb25faW5mbwluZXh1c19yb3cABAJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcw5uZnRfc2NoZW1hX2RlZgACC3NjaGVtYV9uYW1lBG5hbWUGZmllbGRzDnNjaGVtYV9maWVsZFtdEG5mdF90ZW1wbGF0ZV9kZWYAAgdpdGVtX2lkBnVpbnQxNgtzY2hlbWFfbmFtZQRuYW1lDW5mdGNvbmZpZ19yb3cAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lDm5mdGluZm9fcmVzdWx0AAIHc2NoZW1hcxBuZnRfc2NoZW1hX2RlZltdCXRlbXBsYXRlcxJuZnRfdGVtcGxhdGVfZGVmW10Gbm90aWZ5AAEFZXZlbnQKdGFza19ldmVudA1wYWNrZWRfbW9kdWxlAAIHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0C3BsYXllcl9pbmZvAAYFb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nCnNoaXBfY291bnQGdWludDY0D3dhcmVob3VzZV9jb3VudAZ1aW50NjQPY29udGFpbmVyX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAEFb3duZXIEbmFtZQhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0DHJlY2lwZV9pbnB1dAAEB2l0ZW1faWQGdWludDE2CGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgIcXVhbnRpdHkGdWludDMyEHJlY2lwZV9pdGVtX2luZm8AAgJpZAZ1aW50MTYEbWFzcwZ1aW50MzIPcmVjaXBlX3Jlc3BvbnNlAAcOb3V0cHV0X2l0ZW1faWQGdWludDE2C291dHB1dF9tYXNzBnVpbnQzMgZpbnB1dHMOcmVjaXBlX2lucHV0W10Kc3RhdF9zbG90cxRzdGF0X3Nsb3RfcmVzcG9uc2VbXQ1ibGVuZF93ZWlnaHRzBWJ5dGVzC291dHB1dF9pdGVtEHJlY2lwZV9pdGVtX2luZm8LaW5wdXRfaXRlbXMScmVjaXBlX2l0ZW1faW5mb1tdDnJlY2lwZXNfcmVzdWx0AAEHcmVjaXBlcxFyZWNpcGVfcmVzcG9uc2VbXQtyZXNlcnZlX3JvdwAEAmlkBnVpbnQ2NAhjb29yZF9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYJcmVtYWluaW5nBnVpbnQzMgdyZXNvbHZlAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQHdWludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABgllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQFdWludDgUbmV3X3NjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8LZW50aXR5Z3JvdXAHdWludDY0Pw1ncm91cF9tZW1iZXJzFkJfdmVjdG9yX2VudGl0eV9yZWZfRT8NcmVzb3VyY2VfaW5mbwAEAmlkBnVpbnQxNgRtYXNzBnVpbnQzMghjYXRlZ29yeQV1aW50OAR0aWVyBXVpbnQ4DnJlc291cmNlX3N0YXRzAAMFc3RhdDEGdWludDE2BXN0YXQyBnVpbnQxNgVzdGF0MwZ1aW50MTYQcmVzb3VyY2VzX3Jlc3VsdAABCXJlc291cmNlcw9yZXNvdXJjZV9pbmZvW10Icm1tb2R1bGUABAtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4CnRhcmdldF9yZWYKY2FyZ29fcmVmPwhybW5mdGNmZwABB2l0ZW1faWQGdWludDE2BHNhbHQAAQRzYWx0BnVpbnQ2NAhzY2hlZHVsZQACB3N0YXJ0ZWQKdGltZV9wb2ludAV0YXNrcwZ0YXNrW10Mc2NoZW1hX2ZpZWxkAAIEbmFtZQZzdHJpbmcKZmllbGRfdHlwZQZzdHJpbmcMc2VxdWVuY2Vfcm93AAIDa2V5BG5hbWUFdmFsdWUGdWludDY0CXNldG5mdGNmZwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUIc2hpcF9yb3cAEwJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwVzdGF0cwZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MHdWludDMyPwhjYXBhY2l0eQd1aW50MzI/BmVuZXJneQd1aW50MTY/CWNhcmdvbWFzcwZ1aW50MzIHZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8HbG9hZGVycw1sb2FkZXJfc3RhdHM/CGdhdGhlcmVyD2dhdGhlcmVyX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8GaGF1bGVyDWhhdWxlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8HaXRlbV9pZAZ1aW50MTYIc2xvdF9kZWYAAQR0eXBlBXVpbnQ4CnNwYXduY2FyZ28AAwllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAtzcGF3bnBhY2tlZAAECWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQJaW5zdGFsbGVkD3BhY2tlZF9tb2R1bGVbXQtzcGF3bnNlZWRlZAAECWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BXN0YXRzBnVpbnQ2NBJzdGF0X3Nsb3RfcmVzcG9uc2UAAQdzb3VyY2VzDXN0YXRfc291cmNlW10Lc3RhdF9zb3VyY2UAAgtpbnB1dF9pbmRleAV1aW50OBBpbnB1dF9zdGF0X2luZGV4BXVpbnQ4CXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50MzIEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAFB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgtyZXNlcnZlX21heAZ1aW50MzIRc3RyYXR1bV9yZW1haW5pbmcAAgdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyBHRhc2sACAR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4C2Nvb3JkaW5hdGVzDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10MZW50aXR5dGFyZ2V0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDE2Pwp0YXNrX2V2ZW50AAkKZXZlbnRfdHlwZQV1aW50OAVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludApuZXdfZW5lcmd5B3VpbnQxNj8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdCHRyYW5zZmVyAAULc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cABAJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRBnYW1lX2NvbmZpZ190eXBlC2dhbWVfY29uZmlnFnN0cmF0dW1fcmVtYWluaW5nX3R5cGURc3RyYXR1bV9yZW1haW5pbmcIdW5kZXBsb3kABAlob3N0X3R5cGUEbmFtZQdob3N0X2lkBnVpbnQ2NAt0YXJnZXRfdHlwZQRuYW1lCXRhcmdldF9pZAZ1aW50NjQNd2FyZWhvdXNlX3JvdwAMAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBXN0YXRzBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8JY2FyZ29tYXNzBnVpbnQzMgdsb2FkZXJzDWxvYWRlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8HaXRlbV9pZAZ1aW50MTYEd2FycAAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAp3YXJwX3N0YXRzAAEFcmFuZ2UGdWludDMyBHdpcGUAAAx3aXBlc2VxdWVuY2UAAAR3cmFwAAQFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQFaXRlbXMMY2FyZ29faXRlbVtdCndyYXBlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQ/AABQUScqUzIJYWRkbW9kdWxlxwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWRkbW9kdWxlCnN1bW1hcnk6ICdJbnN0YWxsIGEgbW9kdWxlIGludG8gYSBzbG90JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YWxsIGEgbW9kdWxlIGZyb20gY2FyZ28gaW50byBhIG1vZHVsZSBzbG90IG9uIGEgbGl2ZSBlbnRpdHkgb3IgYSBwYWNrZWQgZW50aXR5IGluIGNhcmdvLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVGhlIG1vZHVsZSB0eXBlIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSB0YXJnZXQgc2xvdCB0eXBlLiBUaGUgbW9kdWxlIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIGNhcmdvIHVwb24gaW5zdGFsbGF0aW9uLgAAAFh3NVMyCGFkZG5leHVzpwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWRkbmV4dXMKc3VtbWFyeTogJ0FkZCBhIG5leHVzIGxvY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDcmVhdGUgYSBuZXcgbmV4dXMgZW50aXR5IGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcy4gTmV4dXNlcyBhcmUgb3duZWQgYnkgdGhlIGNvbnRyYWN0IGFuZCBzZXJ2ZSBhcyBmaXhlZCBnYXRoZXJpbmcgcG9pbnRzIHdoZXJlIHBsYXllcnMgY2FuIHdyYXAsIHVud3JhcCwgZGVwbG95LCBhbmQgb3RoZXJ3aXNlIGludGVyYWN0IHdpdGggTkZULWJhY2tlZCBhc3NldHMuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAAIA0VTwFYmxlbmT8Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBibGVuZApzdW1tYXJ5OiAnQmxlbmQgY2FyZ28gc3RhY2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDb21iaW5lIG11bHRpcGxlIGNhcmdvIHN0YWNrcyBvZiB0aGUgc2FtZSBpdGVtIHR5cGUgaW50byBhIHNpbmdsZSBzdGFjayB3aXRoIG5ldyBibGVuZGVkIHN0YXRzLiBBbGwgaW5wdXQgc3RhY2tzIG11c3Qgc2hhcmUgdGhlIHNhbWUgaXRlbSBpZC4gVGhlIG91dHB1dCBzdGFjayBoYXMgdGhlIGNvbWJpbmVkIHF1YW50aXR5IG9mIGFsbCBpbnB1dHMuAAAAAESFpkEGY2FuY2VswgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQucFW+JmPpTEQMY2xhaW1zdGFydGVyhQQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xhaW1zdGFydGVyCnN1bW1hcnk6ICdERUJVRzogY2xhaW0gYSBzdGFydGVyIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNwYXduIGEgcHJlLWtpdHRlZCBUMSBzdGFydGVyIHNoaXAgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIGZvciBhIHJlZ2lzdGVyZWQgcGxheWVyLiBBdmFpbGFibGUgb25seSBvbiB0ZXN0IGRlcGxveW1lbnRzIHdoZXJlIG5vIGluLWdhbWUgc2hpcCBlY29ub215IHlldCBleGlzdHMuIFJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gYmUgYSBqb2luZWQgcGxheWVyIHdpdGggbm8gZXhpc3Rpbmcgc2hpcHM7IHRoZSByZXN1bHRpbmcgc2hpcCBpcyBmaXR0ZWQgd2l0aCBhIGdlbmVyYXRvciwgZW5naW5lLCBnYXRoZXJlciwgY3JhZnRlciwgYW5kIGhhdWxlciBtb2R1bGUuAACoG99pVEQJY2xlYW5yc3Zw7AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYW5yc3ZwCnN1bW1hcnk6ICdDbGVhbiB1cCBwYXN0IGVwb2NoIHJlc2VydmVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFcmFzZSByZXNlcnZlIHRhYmxlIHJvd3MgZnJvbSBhIHBhc3QgZXBvY2guIENhbm5vdCBjbGVhbiB0aGUgY3VycmVudCBvciBmdXR1cmUgZXBvY2hzLiBUaGUgbWF4X3Jvd3MgcGFyYW1ldGVyIGNhcHMgdGhlIG51bWJlciBvZiByb3dzIGVyYXNlZCBwZXIgY2FsbCB0byBsaW1pdCBDUFUgdXNhZ2UuAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdOwBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4AAGA0MrcmRQljb25maWdsb2fdAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb25maWdsb2cKc3VtbWFyeTogJ0xvZyBnYW1lIGNvbmZpZ3VyYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IGxvZ3MgdGhlIGN1cnJlbnQgZ2FtZSBjb25maWd1cmF0aW9uLiBDYWxsZWQgaW5saW5lIGFmdGVyIGluaXRpYWxpemF0aW9uIHRvIGJyb2FkY2FzdCBjb25maWcgdmlhIGFjdGlvbiB0cmFjZXMuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAAAAgLzMRQVjcmFmdMgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNyYWZ0CnN1bW1hcnk6ICdDcmFmdCBpdGVtcyBmcm9tIGEgcmVjaXBlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUcmFuc2Zvcm0gY2FyZ28gaXRlbXMgaW50byBhIG5ldyBpdGVtIHVzaW5nIGEgcmVjaXBlLiBUaGUgZW50aXR5IG11c3QgaGF2ZSBhIGNyYWZ0ZXIgbW9kdWxlIGluc3RhbGxlZC4gQ29uc3VtZXMgZW5lcmd5IGFuZCBzY2hlZHVsZXMgYSBjcmFmdGluZyB0YXNrIHdpdGggZHVyYXRpb24gYmFzZWQgb24gdG90YWwgaW5wdXQgbWFzcyBhbmQgY3JhZnRlciBzcGVlZC4gSW5wdXQgcXVhbnRpdGllcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIHJlY2lwZSByZXF1aXJlbWVudHMu4LPLU6ls1EUMY3JlYXRlZW50aXR5vwEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY3JlYXRlZW50aXR5CnN1bW1hcnk6ICdERUJVRzogY3JlYXRlIGFuIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAA27SKVKCGRlbW9saXNo8QMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVtb2xpc2gKc3VtbWFyeTogJ0RlbW9saXNoIGEgc3RhdGlvbmFyeSBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkRlY29tbWlzc2lvbiBhbiBlbnRpdHksIGVyYXNpbmcgaXQgZnJvbSB0aGUgZ2FtZS4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUsIGhhdmUgZW1wdHkgY2FyZ28sIGFuZCBoYXZlIG5vIGluc3RhbGxlZCBtb2R1bGVzIChyZW1vdmUgZWFjaCB2aWEgcm1tb2R1bGUgZmlyc3QpLiBTY2hlZHVsZXMgYSBkZW1vbGlzaCB0YXNrIHRoYXQgZXJhc2VzIHRoZSBlbnRpdHkgb24gcmVzb2x1dGlvbi4gT25seSB2YWxpZCBmb3IgZW50aXRpZXMgdGhhdCBjYW5ub3QgbW92ZTsgdXNlIHVuZGVwbG95IG9yIHdyYXBlbnRpdHkgZm9yIHRoZSByZXN0LgAAAAB4GqtKBmRlcGxveewCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlcGxveQpzdW1tYXJ5OiAnRGVwbG95IGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVW5wYWNrIGEgcGFja2VkIGVudGl0eSBpdGVtIChwYWNrZWQgc2hpcCBvciBwYWNrZWQgY29udGFpbmVyKSBmcm9tIGNhcmdvLCBzY2hlZHVsaW5nIGEgZGVwbG95IHRhc2sgdGhhdCBjcmVhdGVzIHRoZSBuZXcgZW50aXR5IGF0IHRoZSBkZXBsb3lpbmcgZW50aXR5J3MgbG9jYXRpb24gdXBvbiByZXNvbHV0aW9uLgCAzy5PhbBKCmRlc2NlbnRpdHnJAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXNjZW50aXR5CnN1bW1hcnk6ICdEZXNjcmliZSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gc3RyaW5nIGZvciBhIHBhY2tlZCBlbnRpdHksIGRlcml2ZWQgZnJvbSB0aGUgZW50aXR5IGl0ZW0gaWQsIGh1bGwgc3RhdHMsIGFuZCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgbW9kdWxlIGl0ZW0gaWRzIGFuZCBzdGF0cy4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgTkZUIHJlbmRlcmVycyB0byBkaXNwbGF5IHBhY2tlZCBlbnRpdGllcy4AAAAAqHjMVAZlbmFibGXdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQuAAAAAFzVsmEGZ2F0aGVylwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2F0aGVyCnN1bW1hcnk6ICdHYXRoZXIgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpHYXRoZXIgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBnYXRoZXJhYmxlIGxvY2F0aW9uIHR5cGVzLiBTY2hlZHVsZXMgYSBnYXRoZXIgdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZ2F0aGVyZXIgc3RhdHMgYW5kIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIGNvbXBvc2l0aW9uLgAAYG5NirJiCWdldGNvbmZpZ8oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGNvbmZpZwpzdW1tYXJ5OiAnR2V0IGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgZ2FtZSBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBkZWZhdWx0IGVudGl0eSBzdGF0cyBmb3Igd2FyZWhvdXNlcyBhbmQgY29udGFpbmVycywgYW5kIHRoZSBmdWxsIGl0ZW0gZGVmaW5pdGlvbnMgdGFibGUuAFQ8jrmosmILZ2V0ZWxpZ2libGXIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbGlnaWJsZQpzdW1tYXJ5OiAnR2V0IGVsaWdpYmxlIHJlc291cmNlIGl0ZW0gSURzIGF0IGEgbG9jYXRpb24gYW5kIHN0cmF0dW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlc291cmNlIGl0ZW0gSURzIGVsaWdpYmxlIHRvIGJlIGdhdGhlcmVkIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcyBhbmQgc3RyYXR1bSBkZXB0aC4gSXRlbXMgYXJlIGdhdGVkIGJ5IGJvdGggdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgcHJvZmlsZSBhbmQgdGhlIGRlcHRoIHRocmVzaG9sZCBmb3IgZWFjaCB0aWVyLgCwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLgBMNkmq7LJiC2dldGl0ZW1kYXRhqAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbWRhdGEKc3VtbWFyeTogJ0dldCBmdWxsIGl0ZW0gY2F0YWxvZycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGNvbXBsZXRlIGl0ZW0gY2F0YWxvZyBhcyB0aGUgY29udHJhY3Qgc2VlcyBpdCwgaW5jbHVkaW5nIHR5cGUsIHN1YnR5cGUsIHRpZXIsIG1hc3MsIGFuZCBvdGhlciBzdGF0aWMgbWV0YWRhdGEuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgYW5kIGNsaWVudHMgdG8gbWlycm9yIHRoZSBjb250cmFjdCdzIGl0ZW0gZGVmaW5pdGlvbnMuAABOTqrssmIKZ2V0aXRlbWlkc4YDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1pZHMKc3VtbWFyeTogJ0dldCBpdGVtIGlkIHRvIG5hbWUgbWFwcGluZ3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIG1hcHBpbmcgb2YgaXRlbSBpZCBjb25zdGFudHMgdG8gdGhlaXIgY2Fub25pY2FsIHN0cmluZyBuYW1lcy4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byByZXNvbHZlIG51bWVyaWMgaXRlbSBpZHMgdG8gaHVtYW4tcmVhZGFibGUgaWRlbnRpZmllcnMuAAAAWKrssmIIZ2V0aXRlbXOaAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtcwpzdW1tYXJ5OiAnR2V0IGFsbCBhdmFpbGFibGUgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCBpdGVtcyBpbiB0aGUgZ2FtZSBpbmNsdWRpbmcgdGhlaXIgaWQsIGJhc2UgcHJpY2UsIGFuZCBtYXNzLoBV9Vmq7LJiDGdldGl0ZW10eXBlc4gDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW10eXBlcwpzdW1tYXJ5OiAnR2V0IGl0ZW0gdHlwZSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIGl0ZW0gdHlwZSBlbnVtIHZhbHVlcyBhbmQgdGhlaXIgc3RyaW5nIG5hbWVzIChyZXNvdXJjZSwgY29tcG9uZW50LCBtb2R1bGUsIGVudGl0eSkuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGVjb2RlIGl0ZW0gdHlwZSBpZGVudGlmaWVycy4AJnXZIBqzYgtnZXRsb2NhdGlvbuICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2F0aW9uCnN1bW1hcnk6ICdHZXQgbG9jYXRpb24gaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NhdGlvbiBpbmNsdWRpbmcgd2hldGhlciBhIHN5c3RlbSBleGlzdHMsIGFuZCBmb3IgZWFjaCBpdGVtOiBwcmljZSwgc3VwcGx5LCByYXJpdHkgbXVsdGlwbGllciwgYW5kIGxvY2F0aW9uIG11bHRpcGxpZXIuAIDJJiEas2IKZ2V0bG9jZGF0Yf4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2RhdGEKc3VtbWFyeTogJ0dldCBkZXJpdmVkIGxvY2F0aW9uIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgZGVyaXZlZCBsb2NhdGlvbiBkYXRhIGluY2x1ZGluZyBzdGF0aWMgcHJvcGVydGllcyAodHlwZSwgZGlmZmljdWx0eSwgc2VlZHMpIGZyb20gdGhlIGdhbWUgc2VlZCBhbmQgZXBvY2gtc3BlY2lmaWMgcHJvcGVydGllcyAoYWN0aXZlLCBzZWVkcykgZnJvbSB0aGUgY3VycmVudCBlcG9jaCBzZWVkLgCwqj4nKrNiC2dldG1vZHR5cGVz1gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bW9kdHlwZXMKc3VtbWFyeTogJ0dldCBtb2R1bGUgdHlwZSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIG1vZHVsZSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKGFueSwgZW5naW5lLCBnZW5lcmF0b3IsIGdhdGhlcmVyLCBsb2FkZXIsIHdhcnAsIGNyYWZ0ZXIsIGxhdW5jaGVyLCBzdG9yYWdlLCBoYXVsZXIpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBtb2R1bGUgc3VidHlwZSBpZGVudGlmaWVycyBhbmQgc2xvdCBjb21wYXRpYmlsaXR5LgAAVlEnKrNiCmdldG1vZHVsZXOAAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRtb2R1bGVzCnN1bW1hcnk6ICdHZXQgYWxsIG1vZHVsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIG1vZHVsZXMsIGluY2x1ZGluZyBlYWNoIG1vZHVsZSdzIGlkLCBtYXNzLCBzdWJ0eXBlLCBhbmQgdGllci4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBlbnVtZXJhdGUgaW5zdGFsbGFibGUgZXF1aXBtZW50LgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAXdPlNbNiCmdldG5mdGluZm/wAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZnRpbmZvCnN1bW1hcnk6ICdHZXQgTkZUIHNjaGVtYSBhbmQgdGVtcGxhdGUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIEF0b21pY0Fzc2V0cyBzY2hlbWFzIGFuZCB0ZW1wbGF0ZXMgdGhlIGdhbWUgY29udHJhY3QgZXhwZWN0cywgcGx1cyB0aGUgY3VycmVudCBgaXRlbV9pZCDihpIgKHRlbXBsYXRlX2lkLCBzY2hlbWFfbmFtZSlgIG1hcHBpbmcgc3RvcmVkIGluIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBzeW5jIGF0b21pY2Fzc2V0cyBzdGF0ZSB3aXRoIHRoZSBjb250cmFjdC4AALjKm1izYglnZXRwbGF5ZXL9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRwbGF5ZXIKc3VtbWFyeTogJ0dldCBwbGF5ZXIgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBwbGF5ZXIgaW5jbHVkaW5nIGJhbGFuY2UsIGRlYnQsIG5ldHdvcnRoLCBlbnRpdHkgY291bnRzLCBhbmQgcHJpY2luZyBmb3IgbmV4dCBwdXJjaGFzZXMuIFJldHVybnMgaXNfcGxheWVyPWZhbHNlIGlmIHRoZSBhY2NvdW50IGhhcyBub3Qgam9pbmVkIHRoZSBnYW1lLgAAUNUhdbNiCWdldHJlY2lwZaYDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlY2lwZQpzdW1tYXJ5OiAnR2V0IGEgc2luZ2xlIGNyYWZ0aW5nIHJlY2lwZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHJlY2lwZSB3aG9zZSBvdXRwdXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gaXRlbSBpZCwgaW5jbHVkaW5nIGl0cyBpbnB1dHMsIGJsZW5kIHdlaWdodHMsIHN0YXQgc2xvdHMsIGFuZCByZXNvbHZlZCBpdGVtIG1hc3MgaW5mby4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkaXNwbGF5IGNyYWZ0aW5nIHJlcXVpcmVtZW50cy4AAFbVIXWzYgpnZXRyZWNpcGVzrAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVjaXBlcwpzdW1tYXJ5OiAnTGlzdCBjcmFmdGluZyByZWNpcGVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyBhIHBhZ2luYXRlZCBsaXN0IG9mIGNyYWZ0aW5nIHJlY2lwZXMgc3RhcnRpbmcgYXQgdGhlIHByb3ZpZGVkIGxvd2VyIGJvdW5kIG91dHB1dCBpdGVtIGlkLCB1cCB0byB0aGUgc3BlY2lmaWVkIGxpbWl0LiBFYWNoIGVudHJ5IGluY2x1ZGVzIGlucHV0cywgYmxlbmQgd2VpZ2h0cywgc3RhdCBzbG90cywgYW5kIHJlc29sdmVkIGl0ZW0gbWFzcyBpbmZvLgAAzgZhdbNiCmdldHJlc2NhdHOeAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZXNjYXRzCnN1bW1hcnk6ICdHZXQgcmVzb3VyY2UgY2F0ZWdvcnkgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiByZXNvdXJjZSBjYXRlZ29yeSBlbnVtIHZhbHVlcyBhbmQgdGhlaXIgc3RyaW5nIG5hbWVzIChvcmUsIGdhcywgcmVnb2xpdGgsIGJpb21hc3MsIGNyeXN0YWwpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSByZXNvdXJjZSBzdWJ0eXBlIGlkZW50aWZpZXJzLgCw2ldhdbNiC2dldHJlc2VydmVz/AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzZXJ2ZXMKc3VtbWFyeTogJ0dldCBjdXJyZW50IHJlc2VydmUgbW9kaWZpY2F0aW9ucyBhdCBhIGxvY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBjaGFpbidzIG1vZGlmaWNhdGlvbnMgdG8gZGVyaXZlZCByZXNlcnZlcyBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZSBmb3IgdGhlIGN1cnJlbnQgZXBvY2ggYXMgYSBsaXN0IG9mIHtzdHJhdHVtLCByZW1haW5pbmd9IHBhaXJzLiBTdHJhdGEgbm90IHByZXNlbnQgaW4gdGhlIHJlc3BvbnNlIHVzZSB0aGVpciBkZXJpdmVkIGluaXRpYWwgcmVzZXJ2ZS4gQ29tcG9zZSB3aXRoIFNESyBkZXJpdmF0aW9uIHRvIGdldCB0aGUgZnVsbCBwZXItbG9jYXRpb24gc3RyYXRhIHZpZXcugBW6mmJ1s2IMZ2V0cmVzb3VyY2VzhwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzb3VyY2VzCnN1bW1hcnk6ICdHZXQgYWxsIHJlc291cmNlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgc3Vic2V0IG9mIGl0ZW1zIGNsYXNzaWZpZWQgYXMgcmVzb3VyY2VzLCBpbmNsdWRpbmcgZWFjaCByZXNvdXJjZSdzIGlkLCBtYXNzLCBzdWJ0eXBlLCBhbmQgdGllci4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBlbnVtZXJhdGUgZ2F0aGVyYWJsZSBtYXRlcmlhbHMuAAAAONOIs2IIZ2V0c2xvdHO7Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzbG90cwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzbG90IGxheW91dHMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBtb2R1bGUgc2xvdCBsYXlvdXQgZm9yIGV2ZXJ5IGVudGl0eSBpdGVtIHR5cGUsIGxpc3RpbmcgdGhlIG9yZGVyZWQgc2xvdCB0eXBlcyBhdmFpbGFibGUgZm9yIG1vZHVsZSBpbnN0YWxsYXRpb24uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZSB0eXBlcyBhcmUgY29tcGF0aWJsZSB3aXRoIGEgZ2l2ZW4gZW50aXR5IGh1bGwuAIDU2dyMs2IKZ2V0c3RyYXR1bdICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN0cmF0dW0Kc3VtbWFyeTogJ0dldCByZXNvdXJjZSBzdHJhdHVtIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhIGZvciBhIHNwZWNpZmljIGRlcHRoIGxheWVyIGF0IGEgY29vcmRpbmF0ZSwgaW5jbHVkaW5nIHRoZSBzdHJhdHVtIHNlZWQgaW5mbyBhbmQgZGVyaXZlZCByZXNvdXJjZSBzdGF0cy6AlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgCi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaPgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAABAhNKwaQdoYXNoNTEy+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaDUxMgpzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTUxMiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGE1MTIgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAAAAkN10BGluaXT6AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0CnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAil3TkLoIcmVjaGFyZ2XNAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZWNoYXJnZQpzdW1tYXJ5OiAnUmVjaGFyZ2Ugc2hpcCBlbmVyZ3knCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNjaGVkdWxlIGEgcmVjaGFyZ2UgdGFzayBmb3IgYW4gZW50aXR5IHRvIHJlc3RvcmUgZW5lcmd5IHRvIGZ1bGwgY2FwYWNpdHkuIFRoZSByZWNoYXJnZSBkdXJhdGlvbiBkZXBlbmRzIG9uIGN1cnJlbnQgZW5lcmd5IGxldmVsIGFuZCByZWNoYXJnZSByYXRlLgAAAEDtSLG6B3Jlc29sdmXQAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuAAAAKupEpbwIcm1tb2R1bGW8Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW1vZHVsZQpzdW1tYXJ5OiAnUmVtb3ZlIGEgbW9kdWxlIGZyb20gYSBzbG90JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgYW4gaW5zdGFsbGVkIG1vZHVsZSBmcm9tIGEgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgaXMgcmV0dXJuZWQgdG8gY2FyZ28uIEZhaWxzIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgaGF2ZSBlbm91Z2ggY2FyZ28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgcmV0dXJuZWQgbW9kdWxlLgAAAGyhvKa8CHJtbmZ0Y2ZnoQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcm1uZnRjZmcKc3VtbWFyeTogJ1JlbW92ZSBORlQgdGVtcGxhdGUgbWFwcGluZyBmb3IgYW4gaXRlbScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVtb3ZlIHRoZSBBdG9taWNBc3NldHMgdGVtcGxhdGUgbWFwcGluZyBmb3IgdGhlIHNwZWNpZmllZCBpdGVtIGlkIGZyb20gdGhlIGBuZnRjb25maWdgIHRhYmxlLiBBZnRlciByZW1vdmFsIHRoZSBpdGVtIGNhbiBubyBsb25nZXIgYmUgd3JhcHBlZCBvciB1bndyYXBwZWQgdW50aWwgYSBuZXcgbWFwcGluZyBpcyBzZXQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAAAAAJCjwQRzYWx02AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4AAGAL5TWzwglzZXRuZnRjZmfEAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzZXRuZnRjZmcKc3VtbWFyeTogJ1NldCBORlQgdGVtcGxhdGUgbWFwcGluZyBmb3IgYW4gaXRlbScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQmluZCBhbiBpdGVtIGlkIHRvIGFuIEF0b21pY0Fzc2V0cyB0ZW1wbGF0ZSBpZCBhbmQgc2NoZW1hIG5hbWUuIFVzZWQgdG8gY29uZmlndXJlIGhvdyB0aGUgY29udHJhY3QgbWludHMgYW5kIHJlY29nbml6ZXMgTkZUcyBmb3IgYSBnaXZlbiBpdGVtLiBJbnNlcnRzIGEgbmV3IG1hcHBpbmcgaWYgb25lIGRvZXMgbm90IGV4aXN0LCBvciB1cGRhdGVzIHRoZSBleGlzdGluZyBtYXBwaW5nLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAABl16DJTcUKc3Bhd25jYXJnb8UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNwYXduY2FyZ28Kc3VtbWFyeTogJ0RFQlVHOiBzcGF3biBjYXJnbyBvbiBhbiBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AkoLI1MlNxQtzcGF3bnBhY2tlZOcBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNwYXducGFja2VkCnN1bW1hcnk6ICdERUJVRzogc3Bhd24gYSBwYWNrZWQgZW50aXR5IHdpdGggaW5zdGFsbGVkIG1vZHVsZXMgb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAJJKSuHJTcULc3Bhd25zZWVkZWTNAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzcGF3bnNlZWRlZApzdW1tYXJ5OiAnREVCVUc6IHNwYXduIHNlZWRlZCBjYXJnbyBvbiBhbiBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAABXLTzNzQh0cmFuc2ZlcsgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYW5zZmVyCnN1bW1hcnk6ICdUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIGVudGl0aWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIHR3byBlbnRpdGllcyBhdCB0aGUgc2FtZSBsb2NhdGlvbi4gQm90aCBlbnRpdGllcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIgYW5kIGF0IGxlYXN0IG9uZSBtdXN0IGhhdmUgbG9hZGVycy4gQ3JlYXRlcyBsb2FkIGFuZCB1bmxvYWQgdGFza3Mgb24gYm90aCBlbnRpdGllcyB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIGNvbWJpbmVkIGxvYWRlciBjYXBhY2l0eSBhbmQgWi1kaXN0YW5jZSBiZXR3ZWVuIHRoZW0uAAAAAES1zc0GdHJhdmVs+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGFuIGVudGl0eSBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgAAAJ7GqtLUCHVuZGVwbG955wQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdW5kZXBsb3kKc3VtbWFyeTogJ1BhY2sgYSBkZXBsb3llZCBlbnRpdHkgaW50byBhIGhvc3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClBhY2sgYW4gZW50aXR5IGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvIGFzIGEgcGFja2VkLWVudGl0eSBpdGVtLiBIb3N0IGFuZCB0YXJnZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSBvd25lciBhbmQgY29vcmRpbmF0ZXMsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzIGFuZCBlbm91Z2ggY2FwYWNpdHkgZm9yIHRoZSBwYWNrZWQgbWFzcywgYW5kIHRoZSB0YXJnZXQgbXVzdCBiZSBpZGxlIHdpdGggZW1wdHkgY2FyZ28uIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgYW5kIHNjaGVkdWxlcyB1bmRlcGxveSB0YXNrcyBvbiBib3RoIGVudGl0aWVzOyBvbiByZXNvbHV0aW9uIHRoZSB0YXJnZXQgaXMgZXJhc2VkIGFuZCB0aGUgcGFja2VkIGVudGl0eSBpcyBhZGRlZCB0byB0aGUgaG9zdCdzIGNhcmdvLiBJbnZlcnNlIG9mIGRlcGxveS4AAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAFDN5QR3cmFw/gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd3JhcApzdW1tYXJ5OiAnV3JhcCBjYXJnbyBpbnRvIGFuIE5GVCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKV3JhcCBhIHF1YW50aXR5IG9mIGNhcmdvIGZyb20gYW4gZW50aXR5IGludG8gYW4gQXRvbWljQXNzZXRzIE5GVCBtaW50ZWQgdG8gdGhlIHNwZWNpZmllZCBvd25lci4gVGhlIGVudGl0eSBtdXN0IGJlIGF0IGEgbmV4dXMsIGhhdmUgbG9hZGVycywgYW5kIGNvbnRhaW4gZW5vdWdoIG9mIHRoZSByZXF1ZXN0ZWQgY2FyZ28uIFNjaGVkdWxlcyBhIHdyYXAgdGFzayB0aGF0LCBvbiByZXNvbHV0aW9uLCByZW1vdmVzIHRoZSBjYXJnbyBmcm9tIHRoZSBlbnRpdHkgYW5kIG1pbnRzIHRoZSBORlQgdXNpbmcgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyZWQgZm9yIHRoYXQgaXRlbSBpZC4AgM8uT1XN5Qp3cmFwZW50aXR55gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd3JhcGVudGl0eQpzdW1tYXJ5OiAnV3JhcCBhIGRlcGxveWVkIGVudGl0eSBpbnRvIGFuIE5GVCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKV3JhcCBhbiBlbnRpdHkgaW50byBhbiBBdG9taWNBc3NldHMgTkZUIG1pbnRlZCB0byBpdHMgb3duZXIuIFRoZSBlbnRpdHkgbXVzdCBiZSBhdCBhIG5leHVzLCBpZGxlIHdpdGggZW1wdHkgY2FyZ28sIGFuZCBoYXZlIGFuIG5mdGNvbmZpZyBtYXBwaW5nIGZvciBpdHMgaXRlbSBpZC4gU2NoZWR1bGVzIGEgd3JhcCB0YXNrIHRoYXQsIG9uIHJlc29sdXRpb24sIGVyYXNlcyB0aGUgZW50aXR5IGFuZCBtaW50cyB0aGUgTkZUIHByZXNlcnZpbmcgaXRzIHN0YXRzIGFuZCBpbnN0YWxsZWQgbW9kdWxlcy4NAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAC4ajqTJ0UDaTY0AAANY29udGFpbmVyX3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAAJO6bBCNA2k2NAAADGxvY2F0aW9uX3JvdwAAAAAArLuaA2k2NAAACW5leHVzX3JvdwAAYG5NivKaA2k2NAAADW5mdGNvbmZpZ19yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAAAArKrPA2k2NAAACXR5cGVzX3JvdwAAUFjTpq7hA2k2NAAADXdhcmVob3VzZV9yb3cBEVNoaXBsb2FkIChTZXJ2ZXIpEVNoaXBsb2FkIChTZXJ2ZXIpAAAAKAAAAABEhaZBDmNhbmNlbF9yZXN1bHRzAAAAAIC8zEUMdGFza19yZXN1bHRzAAAADbtIpUoMdGFza19yZXN1bHRzAAAAAHgaq0oMdGFza19yZXN1bHRzAIDPLk+FsEoGc3RyaW5nAAAAAFzVsmEMdGFza19yZXN1bHRzAABgbk2KsmILZ2FtZV9jb25maWcAVDyOuaiyYgh1aW50MTZbXQCwctnlqbJiDWVudGl0eV9pbmZvW10AAPDZ5amyYgtlbnRpdHlfaW5mbwBMNkmq7LJiD2l0ZW1kYXRhX3Jlc3VsdAAATk6q7LJiD2l0ZW1faWRzX3Jlc3VsdAAAAFiq7LJiCml0ZW1zX2luZm+AVfVZquyyYgtlbnVtX3Jlc3VsdAAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkALCqPicqs2ILZW51bV9yZXN1bHQAAFZRJyqzYg5tb2R1bGVzX3Jlc3VsdAAA8OcaNbNiC25lYXJieV9pbmZvAABd0+U1s2IObmZ0aW5mb19yZXN1bHQAALjKm1izYgtwbGF5ZXJfaW5mbwAAUNUhdbNiDnJlY2lwZXNfcmVzdWx0AABW1SF1s2IOcmVjaXBlc19yZXN1bHQAAM4GYXWzYgtlbnVtX3Jlc3VsdACw2ldhdbNiE3N0cmF0dW1fcmVtYWluaW5nW12AFbqaYnWzYhByZXNvdXJjZXNfcmVzdWx0AAAAONOIs2IVZW50aXR5X2xheW91dHNfcmVzdWx0AIDU2dyMs2IMc3RyYXR1bV9kYXRhgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXQCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAAABXLTzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHMAAACexqrS1Ax0YXNrX3Jlc3VsdHMAAAAAAFCv4Qx0YXNrX3Jlc3VsdHMAAAAAAFDN5Qx0YXNrX3Jlc3VsdHMAgM8uT1XN5Qx0YXNrX3Jlc3VsdHM='
37
+ 'DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDi+AgthYmFuZG9ucGxvdAABB3Bsb3RfaWQGdWludDY0CmFkZGNvbnRyaWIABQZwbGF5ZXIEbmFtZQllbnRpdHlfaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAZidW5kbGUMY2FyZ29faXRlbVtdCWFkZG1vZHVsZQAECWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4Cm1vZHVsZV9yZWYJY2FyZ29fcmVmCnRhcmdldF9yZWYKY2FyZ29fcmVmPwhhZGRuZXh1cwADCm5leHVzX25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAlhZGRvcmFjbGUAAQlvcmFjbGVfaWQEbmFtZQ1iYWxsb3RfY3JlZGl0AAIHYWNjb3VudARuYW1lBmFtb3VudAZ1aW50NjQKYmFsbG90X3JvdwAHCWJhbGxvdF9pZAZ1aW50NjQEa2luZAV1aW50OAdzdWJqZWN0BnVpbnQ2NAVzZWF0cwZ1aW50MzINc2V0dGxlZF9lcG9jaAZ1aW50MzIFcXVldWUIdWludDMyW10GcGFya2VkD2JhbGxvdF9jcmVkaXRbXQ5iYWxsb3Rfc2VxX3JvdwADB25leHRfaWQGdWludDY0BmN1cnNvcgZ1aW50NjQJcGFnZV9yb3dzBnVpbnQzMgxiYWxsb3RfdGFsbHkAAgZvcHRpb24GdWludDMyBndlaWdodAZ1aW50NjQPYmFsbG90cGlja3Nfcm93AAIHYWNjb3VudARuYW1lBXBpY2tzCHVpbnQzMltdEGJhbGxvdHNldHRsZV9yb3cABgliYWxsb3RfaWQGdWludDY0BXJvdW5kBnVpbnQzMgZjdXJzb3IGdWludDY0DHRhcmdldF9lcG9jaAZ1aW50MzIHdGFsbGllcw5iYWxsb3RfdGFsbHlbXQZzZWF0ZWQIdWludDMyW10FYmxlbmQAAgJpZAZ1aW50NjQGaW5wdXRzDGNhcmdvX2l0ZW1bXQxidWlsZGVyX2xhbmUABApzbG90X2luZGV4BXVpbnQ4BXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MzIKb3V0cHV0X3BjdAZ1aW50MTYNYnVpbGRpbmdzX3JvdwACCWVudGl0eV9pZAZ1aW50NjQIYnVpbGRpbmcFdWludDgIYnVpbGRqb2IABAl0YXJnZXRfaWQGdWludDY0B2RvY2tfaWQGdWludDY0DnRhcmdldF9pdGVtX2lkBnVpbnQxNgZpbnB1dHMMY2FyZ29faXRlbVtdDGJ1aWxkam9iX3JvdwAMAmlkBnVpbnQ2NAhidWlsZGluZwZ1aW50NjQGc29ja2V0BXVpbnQ4BnRhcmdldAZ1aW50NjQFb3duZXIEbmFtZQZjb29yZHMLY29vcmRpbmF0ZXMJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQOdGFyZ2V0X2l0ZW1faWQGdWludDE2BWNhcmdvDGNhcmdvX2l0ZW1bXQlkZXBvc2l0ZWQEYm9vbAphcnJpdmVzX2F0CnRpbWVfcG9pbnQQYnVpbGRqb2JzX3Jlc3VsdAABBGpvYnMOYnVpbGRqb2Jfcm93W10JYnVpbGRwbG90AAIKYnVpbGRlcl9pZAZ1aW50NjQHcGxvdF9pZAZ1aW50NjQGY2FuY2VsAAMCaWQGdWludDY0CGxhbmVfa2V5BXVpbnQ4BWNvdW50BnVpbnQ2NA5jYW5jZWxfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ9jYW5jZWxsZWRfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwtjYW5jZWxidWlsZAABBmpvYl9pZAZ1aW50NjQLY2FuY2VsY2l2aWMAAwhidWlsZGluZwZ1aW50NjQIbGFuZV9rZXkFdWludDgHZnJvbV9pZAZ1aW50NjQLY2FuY2VsY3JhZnQAAQZqb2JfaWQGdWludDY0CmNhcmdvX2l0ZW0ABQdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhxdWFudGl0eQZ1aW50MzIJZW50aXR5X2lkB3VpbnQ2ND8JY2FyZ29fcmVmAAQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10JZW50aXR5X2lkB3VpbnQ2ND8JY2FyZ29fcm93AAcCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdC3NlcXVlbmNlX2lkB3VpbnQ2ND8KY2FyZ29fdmlldwAGB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHF1YW50aXR5BnVpbnQzMgJpZAZ1aW50NjQJZW50aXR5X2lkB3VpbnQ2ND8KY2FzdGJhbGxvdAADBnBsYXllcgRuYW1lCWJhbGxvdF9pZAZ1aW50NjQFcGlja3MIdWludDMyW10QY2hhcnRlcl9ub2RlX2RlZgAGB25vZGVfaWQGdWludDMyBGNvc3QGdWludDY0B3ByZXJlcXMIdWludDMyW10GZ3JhbnRzDWNpdmljX2dyYW50W10PZXhjbHVzaW9uX2dyb3VwBnVpbnQxNgpyZXBlYXRfY2FwBXVpbnQ4EmNoYXJ0ZXJfcmVhZHlfdmlldwADAXgFaW50NjQBeQVpbnQ2NAdtYW5kYXRlBnVpbnQzMg5jaGFydGVyX3Jlc3VsdAAOC2xvY2F0aW9uX2lkBnVpbnQ2NAhsaWZldGltZQZ1aW50NjQFc3BlbnQGdWludDY0CnVuYXNzaWduZWQGdWludDY0B21hbmRhdGUGdWludDMyCW5leHRfY29zdAZ1aW50NjQLcHJlcmVxc19tZXQEYm9vbAlidWlsZGFibGUEYm9vbAVlcG9jaAZ1aW50MzIFYnVpbHQOY2hhcnRlcl92aWV3W10JYmFsbG90X2lkBnVpbnQ2NAhzZXR0bGluZwRib29sBXF1ZXVlC3NlYXRfdmlld1tdCHByb2dyZXNzD3Byb2dyZXNzX3ZpZXdbXRNjaGFydGVyX3RyZWVfcmVzdWx0AAEFbm9kZXMSY2hhcnRlcl9ub2RlX2RlZltdDGNoYXJ0ZXJfdmlldwACB25vZGVfaWQGdWludDMyB3JlcGVhdHMGdWludDE2DGNoYXJ0ZXJyZWFkeQACAXgFaW50NjQBeQVpbnQ2NBNjaGFydGVycmVhZHlfcmVzdWx0AAEGd29ybGRzFGNoYXJ0ZXJfcmVhZHlfdmlld1tdD2NpdGl6ZW5zaGlwX3JvdwAEC2xvY2F0aW9uX2lkBnVpbnQ2NAhsaWZldGltZQZ1aW50NjQGYWN0aXZlBnVpbnQ2NAxhY3RpdmVfZXBvY2gGdWludDMyC2NpdmljX2dyYW50AAQEa2luZAV1aW50OAhidWlsZGluZwV1aW50OARzdGF0BXVpbnQ4BXZhbHVlBnVpbnQxNg9jaXZpY2NvbmZpZ19yb3cAAQtjaXZpY19vd25lcgRuYW1lDGNpdmljc2h1dHRsZQAECGJ1aWxkaW5nBnVpbnQ2NAdmcm9tX2lkBnVpbnQ2NAV0b19pZAZ1aW50NjQFaXRlbXMMY2FyZ29faXRlbVtdCWNsYWltX3JvdwABBW93bmVyBG5hbWUKY2xhaW1idWlsZAABBmpvYl9pZAZ1aW50NjQKY2xhaW1jcmFmdAACBmpvYl9pZAZ1aW50NjQHc2hpcF9pZAZ1aW50NjQJY2xhaW1wbG90AAMKYnVpbGRlcl9pZAZ1aW50NjQOdGFyZ2V0X2l0ZW1faWQGdWludDE2BHNsb3QMY2x1c3Rlcl9zbG90DGNsYWltc3RhcnRlcgABBW93bmVyBG5hbWUJY2xlYW5yc3ZwAAIFZXBvY2gGdWludDY0CG1heF9yb3dzBnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8KY2xvc2VlcG9jaAABBWVwb2NoBnVpbnQ2NAxjbHVzdGVyX2NlbGwAAwJneARpbnQ4Amd5BGludDgGZW50aXR5BnVpbnQ2NAtjbHVzdGVyX3JvdwACBHJvb3QGdWludDY0BWNlbGxzDmNsdXN0ZXJfY2VsbFtdDGNsdXN0ZXJfc2xvdAADA2h1YgZ1aW50NjQCZ3gEaW50OAJneQRpbnQ4DmNsdXN0ZXJfc291cmNlAAIJc291cmNlX2lkBnVpbnQ2NAVpdGVtcwxjYXJnb19pdGVtW10MY2x1c3RlcmNyYWZ0AAYCaWQGdWludDY0CXJlY2lwZV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyB3NvdXJjZXMQY2x1c3Rlcl9zb3VyY2VbXQZ0YXJnZXQHdWludDY0PwRzbG90BnVpbnQ4PwZjb21taXQAAwlvcmFjbGVfaWQEbmFtZQVlcG9jaAZ1aW50NjQGY29tbWl0C2NoZWNrc3VtMjU2CmNvbW1pdF9yb3cABAJpZAZ1aW50NjQFZXBvY2gGdWludDY0CW9yYWNsZV9pZARuYW1lBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcLY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/CGNvdXBsaW5nAAMLY291bnRlcnBhcnQKZW50aXR5X3JlZgRob2xkBnVpbnQ2NARraW5kBXVpbnQ4BWNyYWZ0AAYCaWQGdWludDY0CXJlY2lwZV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBmlucHV0cwxjYXJnb19pdGVtW10GdGFyZ2V0B3VpbnQ2ND8Ec2xvdAZ1aW50OD8MY3JhZnRlcl9sYW5lAAQKc2xvdF9pbmRleAV1aW50OAVzcGVlZAZ1aW50MTYFZHJhaW4GdWludDMyCm91dHB1dF9wY3QGdWludDE2CGNyYWZ0am9iAAUHc2hpcF9pZAZ1aW50NjQLd29ya3Nob3BfaWQGdWludDY0CXJlY2lwZV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBmlucHV0cwxjYXJnb19pdGVtW10MY3JhZnRqb2Jfcm93AA4CaWQGdWludDY0CGJ1aWxkaW5nBnVpbnQ2NAZzb2NrZXQFdWludDgFb3duZXIEbmFtZQdzaGlwX2lkBnVpbnQ2NAZjb29yZHMLY29vcmRpbmF0ZXMJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzILZW5lcmd5X3BhaWQGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQlkZXBvc2l0ZWQEYm9vbAphcnJpdmVzX2F0CnRpbWVfcG9pbnQQY3JhZnRqb2JzX3Jlc3VsdAABBGpvYnMOY3JhZnRqb2Jfcm93W10JZGJnY3JlZGl0AAUFb3duZXIEbmFtZQF4BWludDY0AXkFaW50NjQNYW1vdW50X2F0b21pYwZ1aW50NjQEbm9kZQd1aW50MzI/B2RiZ2pvYnMAAgZjcmFmdHMOY3JhZnRqb2Jfcm93W10GYnVpbGRzDmJ1aWxkam9iX3Jvd1tdCmRiZ21hbmRhdGUAAwF4BWludDY0AXkFaW50NjQHbm9kZV9pZAZ1aW50MzIKZGJnb2xkam9icwACBmNyYWZ0cw5jcmFmdGpvYl9yb3dbXQZidWlsZHMOYnVpbGRqb2Jfcm93W10LZGJncGFnZXJvd3MAAQRyb3dzBnVpbnQzMgdkYmdwaWNrAAQHc29ja2V0cxJzb2NrZXRfY2FuZGlkYXRlW10CaWQGdWludDY0B2Fycml2YWwKdGltZV9wb2ludANjYXAGdWludDE2CGRiZ3BsYWNlAAQHd2luZG93cxFyZXNlcnZlZF93aW5kb3dbXQJpZAZ1aW50NjQHYXJyaXZhbAp0aW1lX3BvaW50CGR1cmF0aW9uBnVpbnQzMghkYmdwdXJnZQACCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwlkYmdyZXBhY2sAAwd3aW5kb3dzEXJlc2VydmVkX3dpbmRvd1tdDGNhbmNlbGxlZF9pZAZ1aW50NjQDbm93CnRpbWVfcG9pbnQIZGJnc2VhdHMAAwF4BWludDY0AXkFaW50NjQFc2VhdHMGdWludDMyDWRlY29tcF9idWNrZXQAAwhjYXRlZ29yeQV1aW50OAR0aWVyBXVpbnQ4CHJhd19tYXNzBnVpbnQzMg1kZWNvbXBfcmVzdWx0AAMHaXRlbV9pZAZ1aW50MTYOcHJvY2Vzc2VkX21hc3MGdWludDY0B2J1Y2tldHMPZGVjb21wX2J1Y2tldFtdCWRlbGVudGl0eQABCWVudGl0eV9pZAZ1aW50NjQNZGVtYW5kX3Jlc3VsdAAFDWFidW5kYW50X21hc2sFdWludDgMbGFja2luZ19tYXNrBXVpbnQ4BWFjdXRlBXVpbnQ4B25lZWRfZnAIdWludDY0W10FZXBvY2gGdWludDMyCGRlbW9saXNoAAEJZW50aXR5X2lkBnVpbnQ2NAZkZXBsb3kAAwJpZAZ1aW50NjQDcmVmCWNhcmdvX3JlZgRzbG90DWNsdXN0ZXJfc2xvdD8KZGVwb3RfdmlldwAECnBsYXllcl9jYXAGdWludDY0C3N0b3JlZF9tYXNzBnVpbnQ2NA1yZXNlcnZlZF9tYXNzBnVpbnQ2NARyb3dzDXN0b3JhZ2Vfcm93W10KZGVwb3RzdG9yZQADB3NoaXBfaWQGdWludDY0CGRlcG90X2lkBnVpbnQ2NAVpdGVtcwxjYXJnb19pdGVtW10JZGVwb3R0YWtlAAMHc2hpcF9pZAZ1aW50NjQIZGVwb3RfaWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQpkZXNjZW50aXR5AAQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQMbW9kdWxlX2l0ZW1zCHVpbnQxNltdDG1vZHVsZV9zdGF0cwh1aW50NjRbXQZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDMyCHJlY2hhcmdlBnVpbnQzMhRlbnRpdHlfY3VycmVudF9zdGF0ZQACC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MzIPZW50aXR5X2RlZmF1bHRzAAILd2FyZWhvdXNlX3oGdWludDE2C2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAYBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXRlbV9pZAZ1aW50MTYJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQZlbmVyZ3kHdWludDMyPwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8Ed2FycAt3YXJwX3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPw5nYXRoZXJlcl9sYW5lcw9nYXRoZXJlcl9sYW5lW10NY3JhZnRlcl9sYW5lcw5jcmFmdGVyX2xhbmVbXQ1idWlsZGVyX2xhbmVzDmJ1aWxkZXJfbGFuZVtdDGxvYWRlcl9sYW5lcw1sb2FkZXJfbGFuZVtdCGxhdW5jaGVyD2xhdW5jaGVyX3N0YXRzPwVsYW5lcwZsYW5lW10FaG9sZHMGaG9sZFtdDHByb2plY3RlZF9hdAp0aW1lX3BvaW50DWVudGl0eV9sYXlvdXQAAw5lbnRpdHlfaXRlbV9pZAZ1aW50MTYFc2xvdHMKc2xvdF9kZWZbXQ1iYXNlX2h1bGxtYXNzBnVpbnQzMhVlbnRpdHlfbGF5b3V0c19yZXN1bHQAAQhlbnRpdGllcw9lbnRpdHlfbGF5b3V0W10KZW50aXR5X3JlZgACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAplbnRpdHlfcm93AAwCaWQGdWludDY0BW93bmVyBG5hbWUEa2luZARuYW1lB2l0ZW1faWQGdWludDE2BG5hbWUGc3RyaW5nBXN0YXRzBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kHdWludDMyPwljYXJnb21hc3MGdWludDMyB21vZHVsZXMObW9kdWxlX2VudHJ5W10FbGFuZXMGbGFuZVtdBWhvbGRzBmhvbGRbXQ5lbnRpdHlfc2VxX3JvdwABB25leHRfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAZ1aW50MzIQc2NoZWR1bGVfc3RhcnRlZAp0aW1lX3BvaW50D2VudGl0eWdyb3VwX3JvdwACAmlkBnVpbnQ2NAxwYXJ0aWNpcGFudHMMZW50aXR5X3JlZltdC2VudW1fbWVtYmVyAAIFdmFsdWUFdWludDgEbmFtZQZzdHJpbmcLZW51bV9yZXN1bHQAAQdtZW1iZXJzDWVudW1fbWVtYmVyW10JZXBvY2hfcm93AAQFZXBvY2gGdWludDY0Cm9yYWNsZV9pZHMGbmFtZVtdCXRocmVzaG9sZAV1aW50OARzZWVkC2NoZWNrc3VtMjU2DGZpeGNhcmdvbWFzcwABCWVudGl0eV9pZAZ1aW50NjQKZml4aXRlbWlkcwAAEGZvb3RwcmludF9yZXN1bHQAAQVjZWxscwtncmlkX2NlbGxbXQtmb3JjZXJldmVhbAABBWVwb2NoBnVpbnQ2NAVmb3VuZAAEBnBsYXllcgRuYW1lCWVudGl0eV9pZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0C2dhbWVfY29uZmlnAAMHdmVyc2lvbgZ1aW50MzIIZGVmYXVsdHMPZW50aXR5X2RlZmF1bHRzBWl0ZW1zCml0ZW1fZGVmW10GZ2F0aGVyAAUJc291cmNlX2lkBnVpbnQ2NA5kZXN0aW5hdGlvbl9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYIcXVhbnRpdHkGdWludDMyBHNsb3QGdWludDg/DWdhdGhlcmVyX2xhbmUABQpzbG90X2luZGV4BXVpbnQ4BXlpZWxkBnVpbnQxNgVkcmFpbgZ1aW50MzIFZGVwdGgGdWludDE2Cm91dHB1dF9wY3QGdWludDE2CmdhdGhlcnBsYW4ABglzb3VyY2VfaWQGdWludDY0DmRlc3RpbmF0aW9uX2lkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNghxdWFudGl0eQZ1aW50MzIIcmVjaGFyZ2UEYm9vbAVzbG90cwVieXRlcwxnZW5lc2lzZmxlZXQAAQhlbnRpdGllcwxlbnRpdHlfcm93W10MZ2VuZXNpc3dvcmxkAAQHZm91bmRlcgRuYW1lAXgFaW50NjQBeQVpbnQ2NAhub2RlX2lkcwh1aW50MzJbXQxnZXRidWlsZGpvYnMAAQtidWlsZGluZ19pZAZ1aW50NjQKZ2V0Y2hhcnRlcgACAXgFaW50NjQBeQVpbnQ2NAxnZXRjaGFydHRyZWUAAAxnZXRjaHJ0cmVhZHkAAApnZXRjbHVzdGVyAAEGaHViX2lkBnVpbnQ2NAlnZXRjb25maWcAAAxnZXRjcmFmdGpvYnMAAQtidWlsZGluZ19pZAZ1aW50NjQJZ2V0ZGVjb21wAAEHaXRlbV9pZAZ1aW50MTYJZ2V0ZGVtYW5kAAIBeAVpbnQ2NAF5BWludDY0CmdldGRlcG9zaXQAAgVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NAhnZXRkZXBvdAACCGRlcG90X2lkBnVpbnQ2NAVvd25lcgRuYW1lC2dldGRpc3RhbmNlAAQCYXgFaW50NjQCYXkFaW50NjQCYngFaW50NjQCYnkFaW50NjQLZ2V0ZWxpZ2libGUAAgZjb29yZHMLY29vcmRpbmF0ZXMHc3RyYXR1bQZ1aW50MTYJZ2V0ZW50Y2xzAAALZ2V0ZW50aXRpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/CWdldGVudGl0eQABCWVudGl0eV9pZAZ1aW50NjQMZ2V0Zm9vdHByaW50AAEHaXRlbV9pZAZ1aW50MTYLZ2V0aW5mZGVjYXkAAgZhY3RpdmUGdWludDY0BmVwb2NocwZ1aW50MzIMZ2V0aW5mbHVlbmNlAAMFb3duZXIEbmFtZQF4BWludDY0AXkFaW50NjQLZ2V0aW5mdmFsdWUAAwVpdGVtcwxjYXJnb19pdGVtW10BeAVpbnQ2NAF5BWludDY0C2dldGl0ZW1kYXRhAAAKZ2V0aXRlbWlkcwAACGdldGl0ZW1zAAALZ2V0aXRlbXR5cGUAAQdpdGVtX2lkBnVpbnQxNgxnZXRpdGVtdHlwZXMAAAtnZXRraW5kbWV0YQAAC2dldGxvY2F0aW9uAAIBeAVpbnQ2NAF5BWludDY0CmdldGxvY2RhdGEAAgF4BWludDY0AXkFaW50NjQKZ2V0bWludGNmZwAADGdldG1pbnRyZWFkeQAAC2dldG1vZHR5cGVzAAAKZ2V0bW9kdWxlcwAACWdldG5lYXJieQACCWVudGl0eV9pZAZ1aW50NjQIcmVjaGFyZ2UEYm9vbApnZXRuZnRiYXNlAAAKZ2V0bmZ0aW5mbwAACWdldHBsYXllcgABB2FjY291bnQEbmFtZQdnZXRwb29sAAIIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OAhnZXRwb29scwAADGdldHByb2pzdGF0ZQACCWVudGl0eV9pZAZ1aW50NjQKdGFza19jb3VudAZ1aW50OD8JZ2V0cmVjaXBlAAEOb3V0cHV0X2l0ZW1faWQGdWludDE2CmdldHJlY2lwZXMAAgtsb3dlcl9ib3VuZAZ1aW50MTYFbGltaXQFdWludDgKZ2V0cmVzY2F0cwAAC2dldHJlc2VydmVzAAIBeAVpbnQ2NAF5BWludDY0DGdldHJlc291cmNlcwAACGdldHNsb3RzAAAKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/DGdldHZvdGVyZWFkeQAACGdldHZvdGVzAAMBeAVpbnQ2NAF5BWludDY0BnBsYXllcgRuYW1lC2dldHdvcm1ob2xlAAIBeAVpbnQ2NAF5BWludDY0CWdyaWRfY2VsbAACAmd4BGludDgCZ3kEaW50OAxncm91cHRyYW5zaXQABQhlbnRpdGllcwxlbnRpdHlfcmVmW10CYXgFaW50NjQCYXkFaW50NjQCYngFaW50NjQCYnkFaW50NjQLZ3JvdXB0cmF2ZWwABAhlbnRpdGllcwxlbnRpdHlfcmVmW10BeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nDGhhdWxlcl9zdGF0cwAECGNhcGFjaXR5BXVpbnQ4CmVmZmljaWVuY3kGdWludDE2BWRyYWluBnVpbnQzMhBjYXBhY2l0eV9ieV90aWVyEWhhdWxlcl90aWVyX2NhcFtdD2hhdWxlcl90aWVyX2NhcAACBHRpZXIFdWludDgIY2FwYWNpdHkFdWludDgEaG9sZAAFAmlkBnVpbnQ2NARraW5kBXVpbnQ4C2NvdW50ZXJwYXJ0CmVudGl0eV9yZWYFdW50aWwKdGltZV9wb2ludA1pbmNvbWluZ19tYXNzBnVpbnQzMgtpbXBvcnRjYXJnbwABA3JvdwljYXJnb19yb3cKaW1wb3J0Y2VsbAAEBHJvb3QGdWludDY0Amd4BGludDgCZ3kEaW50OAllbnRpdHlfaWQGdWludDY0DGltcG9ydGVudGl0eQABA3JvdwplbnRpdHlfcm93C2ltcG9ydGVwb2NoAAEDcm93CWVwb2NoX3JvdwtpbXBvcnRncm91cAABA3Jvdw9lbnRpdHlncm91cF9yb3cMaW1wb3J0bmZ0Y2ZnAAEDcm93DW5mdGNvbmZpZ19yb3cMaW1wb3J0cGxheWVyAAEFb3duZXIEbmFtZQ1pbXBvcnRyZXNlcnZlAAILZXBvY2hfc2NvcGUGdWludDMyA3JvdwtyZXNlcnZlX3JvdwtpbXBvcnRzdGF0ZQABA3JvdwlzdGF0ZV9yb3cLaW5mYnVybl9yb3cAAQNicHMGdWludDE2DWluZmRlbWFuZF9yb3cAAwRwZWFrBnVpbnQ2NARiYXNlBnVpbnQ2NAVmbG9vcgZ1aW50NjQQaW5mbHVlbmNlX3RvdGFscwALEXN0YW5kaW5nX2xpZmV0aW1lBnVpbnQ2NA9zdGFuZGluZ19hY3RpdmUGdWludDY0FGNpdGl6ZW5zaGlwX2xpZmV0aW1lBnVpbnQ2NBJjaXRpemVuc2hpcF9hY3RpdmUGdWludDY0EWxvY2F0aW9uX2xpZmV0aW1lBnVpbnQ2NA9sb2NhdGlvbl9hY3RpdmUGdWludDY0BXNwZW50BnVpbnQ2NAdtYW5kYXRlBnVpbnQzMgdmb3VuZGVyBG5hbWUHZm91bmRlZAZ1aW50MzIFZXBvY2gGdWludDMyC2luZm1pbnRfcm93AAMIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OAl0aHJlc2hvbGQGdWludDY0C2luZnBvb2xfcm93AAYIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OAVncmFkZQV1aW50OAhxdWFudGl0eQZ1aW50NjQFc3RhdHMGdWludDY0A2JhcgZ1aW50NjQOaW5mcXVhbGl0eV9yb3cAAQJkMQZ1aW50MzIPaW5mdmFsdWVfcmVzdWx0AAIMdG90YWxfYXRvbWljBnVpbnQ2NA9wZXJfaXRlbV9hdG9taWMIdWludDY0W10NaW5md2VpZ2h0X3JvdwADCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgJd2VpZ2h0X2ZwBnVpbnQ2NAhpdGVtX2RlZgAFAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgR0eXBlBXVpbnQ4B3N1YnR5cGUFdWludDgEdGllcgV1aW50OAxpdGVtX2lkX3BhaXIAAgJpZAZ1aW50MTYEbmFtZQZzdHJpbmcPaXRlbV9pZHNfcmVzdWx0AAEFaXRlbXMOaXRlbV9pZF9wYWlyW10PaXRlbWRhdGFfcmVzdWx0AAIFaXRlbXMKaXRlbV9kZWZbXQdyZWNpcGVzDnJlY2lwZXNfcmVzdWx0Cml0ZW1zX2luZm8AAQVpdGVtcwppdGVtX2RlZltdBGpvaW4AAQdhY2NvdW50BG5hbWUQa2luZF9tZXRhX3Jlc3VsdAACBWtpbmRzD2tpbmRfbWV0YV9yb3dbXQl0ZW1wbGF0ZXMTdGVtcGxhdGVfbWV0YV9yb3dbXQ1raW5kX21ldGFfcm93AAUEa2luZARuYW1lDmNsYXNzaWZpY2F0aW9uBXVpbnQ4EGNhcGFiaWxpdHlfZmxhZ3MFdWludDgHel9jb29yZAZ1aW50MzINZGVmYXVsdF9sYWJlbAZzdHJpbmcEbGFuZQACCGxhbmVfa2V5BXVpbnQ4CHNjaGVkdWxlCHNjaGVkdWxlBmxhdW5jaAADC2xhdW5jaGVyX2lkBnVpbnQ2NApjYXRjaGVyX2lkBnVpbnQ2NAVpdGVtcwxjYXJnb19pdGVtW10ObGF1bmNoZXJfc3RhdHMAAwtjaGFyZ2VfcmF0ZQZ1aW50MTYIdmVsb2NpdHkGdWludDE2BWRyYWluBnVpbnQxNgRsb2FkAAMCaWQGdWludDY0B2Zyb21faWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQtsb2FkZXJfbGFuZQAECnNsb3RfaW5kZXgFdWludDgEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNgpvdXRwdXRfcGN0BnVpbnQxNhBsb2NhdGlvbl9kZXJpdmVkAAIMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwRzaXplBnVpbnQxNg1sb2NhdGlvbl9pbmZvAAMGY29vcmRzC2Nvb3JkaW5hdGVzCWlzX3N5c3RlbQRib29sC2lzX3dvcm1ob2xlBGJvb2wPbG9jYXRpb25fc3RhdGljAAUGY29vcmRzC2Nvb3JkaW5hdGVzBHR5cGUNbG9jYXRpb25fdHlwZQdzdWJ0eXBlBXVpbnQ4BXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4CmxvY2tlcl9yb3cAAwhkZXBvdF9pZAZ1aW50NjQLc3RvcmVkX21hc3MGdWludDY0DXJlc2VydmVkX21hc3MGdWludDY0DG1hbmRhdGVzX3JvdwACB25vZGVfaWQGdWludDMyB3JlcGVhdHMGdWludDE2C21pZ3JhdGVqb2JzAAATbWludF90aHJlc2hvbGRfdmlldwADCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgJdGhyZXNob2xkBnVpbnQ2NA5taW50Y2ZnX3Jlc3VsdAACCnRocmVzaG9sZHMVbWludF90aHJlc2hvbGRfdmlld1tdCGJ1cm5fYnBzBnVpbnQxNgltaW50cV9yb3cAAgJpZAZ1aW50NjQFZ3JhZGUFdWludDgJbWludHJlYWR5AAEJbWF4X21pbnRzB3VpbnQzMj8MbW9kdWxlX2VudHJ5AAIEdHlwZQV1aW50OAlpbnN0YWxsZWQOcGFja2VkX21vZHVsZT8LbW9kdWxlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzILbW9kdWxlX3R5cGUFdWludDgEdGllcgV1aW50OA5tb2R1bGVzX3Jlc3VsdAABB21vZHVsZXMNbW9kdWxlX2luZm9bXQ5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDMyCG1vdmV0aWxlAAUGaHViX2lkBnVpbnQ2NAdmcm9tX2d4BGludDgHZnJvbV9neQRpbnQ4BXRvX2d4BGludDgFdG9fZ3kEaW50OApuYXR1cmFsaXplAAMGcGxheWVyBG5hbWUBeAVpbnQ2NAF5BWludDY0C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDMyB3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvDm5mdF9jYXJnb19pdGVtAAQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10IcXVhbnRpdHkGdWludDMyEG5mdF9pdGVtX3BheWxvYWQAAgRpdGVtDm5mdF9jYXJnb19pdGVtCGxvY2F0aW9uDGNvb3JkaW5hdGVzPw5uZnRfc2NoZW1hX2RlZgACC3NjaGVtYV9uYW1lBG5hbWUGZmllbGRzDnNjaGVtYV9maWVsZFtdEG5mdF90ZW1wbGF0ZV9kZWYAAwdpdGVtX2lkBnVpbnQxNgtzY2hlbWFfbmFtZQRuYW1lC3RlbXBsYXRlX2lkBWludDMyDW5mdGNvbmZpZ19yb3cAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lCW5mdGltZ3VybAACBGl0ZW0KY2FyZ29faXRlbQhsb2NhdGlvbgxjb29yZGluYXRlcz8ObmZ0aW5mb19yZXN1bHQAAgdzY2hlbWFzEG5mdF9zY2hlbWFfZGVmW10JdGVtcGxhdGVzEm5mdF90ZW1wbGF0ZV9kZWZbXQZub3RpZnkAAQVldmVudAp0YXNrX2V2ZW50EW9yYWNsZV9jb25maWdfcm93AAIJdGhyZXNob2xkBXVpbnQ4CGRlYWRsaW5lBnVpbnQzMgpvcmFjbGVfcm93AAECaWQEbmFtZQ1wYWNrZWRfbW9kdWxlAAIHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0CnBsYWNlY2FyZ28AAwVvd25lcgRuYW1lB2hvc3RfaWQGdWludDY0CGFzc2V0X2lkBnVpbnQ2NAtwbGFjZWVudGl0eQADBW93bmVyBG5hbWUIYXNzZXRfaWQGdWludDY0D3RhcmdldF9uZXh1c19pZAZ1aW50NjQLcGxheWVyX2luZm8AAwVvd25lcgRuYW1lCWlzX3BsYXllcgRib29sDGNvbXBhbnlfbmFtZQZzdHJpbmcKcGxheWVyX3JvdwABBW93bmVyBG5hbWUQcG9vbF9wYWlyX3Jlc3VsdAAJCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgHaXRlbV9pZAZ1aW50MTYRc3RhbmRhcmRfcXVhbnRpdHkGdWludDY0DnN0YW5kYXJkX3N0YXRzBnVpbnQ2NBBwcmVtaXVtX3F1YW50aXR5BnVpbnQ2NA1wcmVtaXVtX3N0YXRzBnVpbnQ2NANiYXIGdWludDY0CXRocmVzaG9sZAZ1aW50NjQJcG9vbF92aWV3AAcIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OAVncmFkZQV1aW50OAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50NjQFc3RhdHMGdWludDY0A2JhcgZ1aW50NjQMcG9vbHNfcmVzdWx0AAEFcG9vbHMLcG9vbF92aWV3W10McHJvZ3Jlc3Nfcm93AAIHbm9kZV9pZAZ1aW50MzIGYW1vdW50BnVpbnQ2NA1wcm9ncmVzc192aWV3AAIHbm9kZV9pZAZ1aW50MzIGYW1vdW50BnVpbnQ2NA9wcm9qZWN0ZWRfc3RhdGUAEQVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQd1aW50MzI/CWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29fdmlld1tdCGh1bGxtYXNzB3VpbnQzMj8IY2FwYWNpdHkHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/BmhhdWxlcg1oYXVsZXJfc3RhdHM/DmdhdGhlcmVyX2xhbmVzD2dhdGhlcmVyX2xhbmVbXQ1jcmFmdGVyX2xhbmVzDmNyYWZ0ZXJfbGFuZVtdDWJ1aWxkZXJfbGFuZXMOYnVpbGRlcl9sYW5lW10MbG9hZGVyX2xhbmVzDWxvYWRlcl9sYW5lW10IbGF1bmNoZXIPbGF1bmNoZXJfc3RhdHM/BHRpZXIFdWludDgIcmVjaGFyZ2UAAQJpZAZ1aW50NjQMcmVjaXBlX2lucHV0AAIHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyEHJlY2lwZV9pdGVtX2luZm8AAgJpZAZ1aW50MTYEbWFzcwZ1aW50MzIPcmVjaXBlX3Jlc3BvbnNlAAgOb3V0cHV0X2l0ZW1faWQGdWludDE2C291dHB1dF9tYXNzBnVpbnQzMgZpbnB1dHMOcmVjaXBlX2lucHV0W10Kc3RhdF9zbG90cxRzdGF0X3Nsb3RfcmVzcG9uc2VbXQ1ibGVuZF93ZWlnaHRzBWJ5dGVzC291dHB1dF9pdGVtEHJlY2lwZV9pdGVtX2luZm8LaW5wdXRfaXRlbXMScmVjaXBlX2l0ZW1faW5mb1tdD3NvdXJjZV9zdWJjbGFzcwd1aW50MTY/DnJlY2lwZXNfcmVzdWx0AAEHcmVjaXBlcxFyZWNpcGVfcmVzcG9uc2VbXQhyZWZpdF9vcAACAm9wBXVpbnQ4BHNsb3QFdWludDgMcmVmcnNoZW50aXR5AAEJZW50aXR5X2lkBnVpbnQ2NAxyZW1vdmVvcmFjbGUAAQlvcmFjbGVfaWQEbmFtZQZyZW5hbWUAAgJpZAZ1aW50NjQEbmFtZQZzdHJpbmcNcmVwYWNrX3Jlc3VsdAABB3dpbmRvd3MRcmVzZXJ2ZWRfd2luZG93W10LcmVzZXJ2ZV9yb3cABQJpZAZ1aW50NjQIY29vcmRfaWQGdWludDY0B3N0cmF0dW0GdWludDE2CXJlbWFpbmluZwZ1aW50MzIKbGFzdF9ibG9jaxRibG9ja190aW1lc3RhbXBfdHlwZQ9yZXNlcnZlZF93aW5kb3cABAJpZAZ1aW50NjQHYXJyaXZhbAp0aW1lX3BvaW50CXN0YXJ0c19hdAp0aW1lX3BvaW50DGNvbXBsZXRlc19hdAp0aW1lX3BvaW50B3Jlc29sdmUAAgJpZAZ1aW50NjQFY291bnQHdWludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABgllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQGdWludDMyFG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CnJlc29sdmVhbGwAAQVvd25lcgRuYW1lEnJlc29sdmVhbGxfcmVzdWx0cwACB3NjYW5uZWQGdWludDMyCHJlc29sdmVkBnVpbnQzMgxyZXNvbHZlZWFybHkAAgJpZAZ1aW50NjQFY291bnQHdWludDY0Pw1yZXNvdXJjZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgOcmVzb3VyY2Vfc3RhdHMAAwVzdGF0MQZ1aW50MTYFc3RhdDIGdWludDE2BXN0YXQzBnVpbnQxNhByZXNvdXJjZXNfcmVzdWx0AAEJcmVzb3VyY2VzD3Jlc291cmNlX2luZm9bXQZyZXZlYWwAAwlvcmFjbGVfaWQEbmFtZQVlcG9jaAZ1aW50NjQGcmV2ZWFsC2NoZWNrc3VtMjU2CnJldmVhbF9yb3cABAJpZAZ1aW50NjQFZXBvY2gGdWludDY0CW9yYWNsZV9pZARuYW1lBnJldmVhbAtjaGVja3N1bTI1NghybW1vZHVsZQADCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4CnRhcmdldF9yZWYKY2FyZ29fcmVmPwhybW5mdGNmZwABB2l0ZW1faWQGdWludDE2DnJvdXRlX3dheXBvaW50AAIBeAVpbnQ2NAF5BWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzY2hlbWFfZmllbGQAAgRuYW1lBnN0cmluZwpmaWVsZF90eXBlBnN0cmluZwlzZWF0X3ZpZXcABAdub2RlX2lkBnVpbnQzMgRjb3N0BnVpbnQ2NAhwcm9ncmVzcwZ1aW50NjQDZ2FwBnVpbnQ2NAhzZXRjaXZpYwABB2FjY291bnQEbmFtZQpzZXRjbHVzdGVyAAEDcm93C2NsdXN0ZXJfcm93CXNldGNvb3JkcwADCWVudGl0eV9pZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0C3NldGRlYWRsaW5lAAEIZGVhZGxpbmUGdWludDMyCnNldGluZmJ1cm4AAQNicHMGdWludDE2CHNldGluZmQxAAECZDEGdWludDMyDHNldGluZmRlbWFuZAADBHBlYWsGdWludDY0BGJhc2UGdWludDY0BWZsb29yBnVpbnQ2NApzZXRpbmZtaW50AAMIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OAl0aHJlc2hvbGQGdWludDY0DHNldGluZndlaWdodAADCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgJd2VpZ2h0X2ZwBnVpbnQ2NAlzZXRuZXh0aWQAAQduZXh0X2lkBnVpbnQ2NAlzZXRuZnRjZmcAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lDHNldHRocmVzaG9sZAABCXRocmVzaG9sZAV1aW50OAxzZXR0bGViYWxsb3QAAgliYWxsb3RfaWQGdWludDY0CW1heF9wYWdlcwZ1aW50MzIMc2V0dW53cmFwbWluAAEIYXNzZXRfaWQGdWludDY0C3NldHdyYXBjb3N0AAMJaXRlbV90eXBlBXVpbnQ4BHRpZXIFdWludDgGYW1vdW50BnVpbnQ2NApzZXR3cmFwZmVlAAIHZmVlX3BjdAZ1aW50MTYLZmVlX2FjY291bnQEbmFtZQdzaHV0dGxlAAQHY2FycmllcgZ1aW50NjQHZnJvbV9pZAZ1aW50NjQFdG9faWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQhzbG90X2RlZgADBHR5cGUFdWludDgKb3V0cHV0X3BjdAZ1aW50MTYIbWF4X3RpZXIFdWludDgQc29ja2V0X2NhbmRpZGF0ZQADB3dpbmRvd3MRcmVzZXJ2ZWRfd2luZG93W10IZHVyYXRpb24GdWludDMyBmFjdGl2ZQZ1aW50MTYLc29ja2V0X3BpY2sAAwVmb3VuZARib29sBnNvY2tldAV1aW50OAZ3aW5kb3cPcmVzZXJ2ZWRfd2luZG93DHN0YW5kaW5nX3JvdwAEB2FjY291bnQEbmFtZQhsaWZldGltZQZ1aW50NjQGYWN0aXZlBnVpbnQ2NAxhY3RpdmVfZXBvY2gGdWludDMyEnN0YXRfc2xvdF9yZXNwb25zZQABB3NvdXJjZXMNc3RhdF9zb3VyY2VbXQtzdGF0X3NvdXJjZQACC2lucHV0X2luZGV4BXVpbnQ4EGlucHV0X3N0YXRfaW5kZXgFdWludDgJc3RhdGVfcm93AAMHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2C3N0b3JhZ2Vfcm93AAcCaWQGdWludDY0BW93bmVyBG5hbWUHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdC3NlcXVlbmNlX2lkB3VpbnQ2ND8Jc3Rvd2NhcmdvAAUFb3duZXIEbmFtZQllbnRpdHlfaWQGdWludDY0CG5leHVzX2lkBnVpbnQ2NAhjYXJnb19pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CnN0b3dlbnRpdHkAAwVvd25lcgRuYW1lCWVudGl0eV9pZAZ1aW50NjQIbmV4dXNfaWQGdWludDY0DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAFB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgtyZXNlcnZlX21heAZ1aW50MzIRc3RyYXR1bV9yZW1haW5pbmcAAwdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyCmxhc3RfYmxvY2sUYmxvY2tfdGltZXN0YW1wX3R5cGUKc3dhcG1vZHVsZQADCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4Cm1vZHVsZV9yZWYJY2FyZ29fcmVmCHN3YXB0aWxlAAUGaHViX2lkBnVpbnQ2NARhX2d4BGludDgEYV9neQRpbnQ4BGJfZ3gEaW50OARiX2d5BGludDgEdGFzawAMBHR5cGUFdWludDgIZHVyYXRpb24GdWludDMyCmNhbmNlbGFibGUFdWludDgLY29vcmRpbmF0ZXMMY29vcmRpbmF0ZXM/BWNhcmdvDGNhcmdvX2l0ZW1bXQljb3VwbGluZ3MKY291cGxpbmdbXQdzdWJqZWN0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDMyPw50YXJnZXRfaXRlbV9pZAd1aW50MTY/BXJlZml0CXJlZml0X29wPwxjaGFydGVyX25vZGUHdWludDMyPwp0YXNrX2V2ZW50AAoKZXZlbnRfdHlwZQV1aW50OAVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BnVpbnQzMgR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MzI/CGxhbmVfa2V5BXVpbnQ4DHRhc2tfcmVzdWx0cwABCGVudGl0aWVzEmVudGl0eV90YXNrX2luZm9bXRF0ZW1wbGF0ZV9tZXRhX3JvdwADB2l0ZW1faWQGdWludDE2BGtpbmQEbmFtZQ1kaXNwbGF5X2xhYmVsBnN0cmluZwd0cmFuc2l0AAUCaWQGdWludDY0AmF4BWludDY0AmF5BWludDY0AmJ4BWludDY0AmJ5BWludDY0BnRyYXZlbAAEAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAp0cmF2ZWxwbGFuAAMIZW50aXRpZXMMZW50aXR5X3JlZltdCXdheXBvaW50cxByb3V0ZV93YXlwb2ludFtdCHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93ABACaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkQZ2FtZV9jb25maWdfdHlwZQtnYW1lX2NvbmZpZxZzdHJhdHVtX3JlbWFpbmluZ190eXBlEXN0cmF0dW1fcmVtYWluaW5nFW5mdF9pdGVtX3BheWxvYWRfdHlwZRBuZnRfaXRlbV9wYXlsb2FkEmRlY29tcF9yZXN1bHRfdHlwZQ1kZWNvbXBfcmVzdWx0EmRlbWFuZF9yZXN1bHRfdHlwZQ1kZW1hbmRfcmVzdWx0FGluZnZhbHVlX3Jlc3VsdF90eXBlD2luZnZhbHVlX3Jlc3VsdBVpbmZsdWVuY2VfdG90YWxzX3R5cGUQaW5mbHVlbmNlX3RvdGFscxFwb29sc19yZXN1bHRfdHlwZQxwb29sc19yZXN1bHQVcG9vbF9wYWlyX3Jlc3VsdF90eXBlEHBvb2xfcGFpcl9yZXN1bHQTbWludGNmZ19yZXN1bHRfdHlwZQ5taW50Y2ZnX3Jlc3VsdBNjaGFydGVyX3Jlc3VsdF90eXBlDmNoYXJ0ZXJfcmVzdWx0GGNoYXJ0ZXJyZWFkeV9yZXN1bHRfdHlwZRNjaGFydGVycmVhZHlfcmVzdWx0EHZvdGVfcmVzdWx0X3R5cGULdm90ZV9yZXN1bHQPZGVwb3Rfdmlld190eXBlCmRlcG90X3ZpZXcIdW5kZXBsb3kAAgdob3N0X2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0BnVubG9hZAADAmlkBnVpbnQ2NAV0b19pZAZ1aW50NjQFaXRlbXMMY2FyZ29faXRlbVtdB3VwZ3JhZGUABQpidWlsZGVyX2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0DnRhcmdldF9pdGVtX2lkBnVpbnQxNgZpbnB1dHMMY2FyZ29faXRlbVtdBHNsb3QGdWludDg/C3ZvdGVfb3B0aW9uAAUHbm9kZV9pZAZ1aW50MzIEY29zdAZ1aW50NjQEc2VhdAZ1aW50MzIGd2VpZ2h0BnVpbnQ2NARyYW5rBnVpbnQzMgt2b3RlX3Jlc3VsdAAJC2xvY2F0aW9uX2lkBnVpbnQ2NAliYWxsb3RfaWQGdWludDY0BWVwb2NoBnVpbnQzMg1zZXR0bGVkX2Vwb2NoBnVpbnQzMgVzZWF0cwZ1aW50MzIIc2V0dGxpbmcEYm9vbAVxdWV1ZQh1aW50MzJbXQdvcHRpb25zDXZvdGVfb3B0aW9uW10FcGlja3MIdWludDMyW10Jdm90ZXJlYWR5AAEJbWF4X3BhZ2VzBnVpbnQzMgR3YXJwAAMCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAp3YXJwX3N0YXRzAAEFcmFuZ2UGdWludDMyDndpbmRvd19yZWNlaXB0AAMGam9iX2lkBnVpbnQ2NAlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludAR3aXBlAAAKd29ybGRzX3JvdwAJC2xvY2F0aW9uX2lkBnVpbnQ2NAhsaWZldGltZQZ1aW50NjQGYWN0aXZlBnVpbnQ2NAxhY3RpdmVfZXBvY2gGdWludDMyBXNwZW50BnVpbnQ2NAp1bmFzc2lnbmVkBnVpbnQ2NAliYWxsb3RfaWQGdWludDY0B2ZvdW5kZXIEbmFtZQdmb3VuZGVkBnVpbnQzMg13b3JtaG9sZV9pbmZvAAMGY29vcmRzC2Nvb3JkaW5hdGVzC2lzX3dvcm1ob2xlBGJvb2wLZGVzdGluYXRpb24LY29vcmRpbmF0ZXMOd3JhcGNvbmZpZ19yb3cAAwdmZWVfcGN0BnVpbnQxNgtmZWVfYWNjb3VudARuYW1lDG1pbl9hc3NldF9pZAZ1aW50NjQMd3JhcGNvc3Rfcm93AAMJaXRlbV90eXBlBXVpbnQ4BHRpZXIFdWludDgGYW1vdW50BnVpbnQ2NKYBADKNddI0zTELYWJhbmRvbnBsb3QAAMBxN0+KUjIKYWRkY29udHJpYgAAAFBRJypTMglhZGRtb2R1bGXHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRtb2R1bGUKc3VtbWFyeTogJ0luc3RhbGwgYSBtb2R1bGUgaW50byBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluc3RhbGwgYSBtb2R1bGUgZnJvbSBjYXJnbyBpbnRvIGEgbW9kdWxlIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldCBzbG90IHR5cGUuIFRoZSBtb2R1bGUgaXRlbSBpcyByZW1vdmVkIGZyb20gY2FyZ28gdXBvbiBpbnN0YWxsYXRpb24uAAAAWHc1UzIIYWRkbmV4dXOnAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRuZXh1cwpzdW1tYXJ5OiAnQWRkIGEgbmV4dXMgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNyZWF0ZSBhIG5ldyBuZXh1cyBlbnRpdHkgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLiBOZXh1c2VzIGFyZSBvd25lZCBieSB0aGUgY29udHJhY3QgYW5kIHNlcnZlIGFzIGZpeGVkIGdhdGhlcmluZyBwb2ludHMgd2hlcmUgcGxheWVycyBjYW4gd3JhcCwgdW53cmFwLCBkZXBsb3ksIGFuZCBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBORlQtYmFja2VkIGFzc2V0cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAUBGZS1MyCWFkZG9yYWNsZQAAAAAAgDRVPAVibGVuZPwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJsZW5kCnN1bW1hcnk6ICdCbGVuZCBjYXJnbyBzdGFja3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbWJpbmUgbXVsdGlwbGUgY2FyZ28gc3RhY2tzIG9mIHRoZSBzYW1lIGl0ZW0gdHlwZSBpbnRvIGEgc2luZ2xlIHN0YWNrIHdpdGggbmV3IGJsZW5kZWQgc3RhdHMuIEFsbCBpbnB1dCBzdGFja3MgbXVzdCBzaGFyZSB0aGUgc2FtZSBpdGVtIGlkLiBUaGUgb3V0cHV0IHN0YWNrIGhhcyB0aGUgY29tYmluZWQgcXVhbnRpdHkgb2YgYWxsIGlucHV0cy4AAACHvhSdPghidWlsZGpvYgAAAMg01hSdPglidWlsZHBsb3QAAAAAAESFpkEGY2FuY2VswgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuAFJ0+kSFpkELY2FuY2VsYnVpbGQAAJDbDkWFpkELY2FuY2VsY2l2aWMAAPIyF0WFpkELY2FuY2VsY3JhZnQAAECmMZqTsUEKY2FzdGJhbGxvdADgk1H3qnxNQwxjaGFydGVycmVhZHkAoGLOumHktkMMY2l2aWNzaHV0dGxlAABAik4f6UxECmNsYWltYnVpbGQAAEBe5iLpTEQKY2xhaW1jcmFmdAAAAMg0VulMRAljbGFpbXBsb3QAcFW+JmPpTEQMY2xhaW1zdGFydGVyAAAAqBvfaVRECWNsZWFucnN2cOwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFucnN2cApzdW1tYXJ5OiAnQ2xlYW4gdXAgcGFzdCBlcG9jaCByZXNlcnZlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXJhc2UgcmVzZXJ2ZSB0YWJsZSByb3dzIGZyb20gYSBwYXN0IGVwb2NoLiBDYW5ub3QgY2xlYW4gdGhlIGN1cnJlbnQgb3IgZnV0dXJlIGVwb2Nocy4gVGhlIG1heF9yb3dzIHBhcmFtZXRlciBjYXBzIHRoZSBudW1iZXIgb2Ygcm93cyBlcmFzZWQgcGVyIGNhbGwgdG8gbGltaXQgQ1BVIHVzYWdlLgCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AQEO0KoVpRApjbG9zZWVwb2NoAJCXueiqjHVEDGNsdXN0ZXJjcmFmdAAAAAAAZCclRQZjb21taXTsAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb21taXQKc3VtbWFyeTogJ1NldCBjb21taXQgdmFsdWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNldCB0aGUgaW5pdGlhbCBjb21taXQgdmFsdWUgZHVyaW5nIGdhbWUgaW5pdGlhbGl6YXRpb24uAABgNDK3JkUJY29uZmlnbG9n3QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29uZmlnbG9nCnN1bW1hcnk6ICdMb2cgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBsb2dzIHRoZSBjdXJyZW50IGdhbWUgY29uZmlndXJhdGlvbi4gQ2FsbGVkIGlubGluZSBhZnRlciBpbml0aWFsaXphdGlvbiB0byBicm9hZGNhc3QgY29uZmlnIHZpYSBhY3Rpb24gdHJhY2VzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAIC8zEUFY3JhZnTIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmFmdApzdW1tYXJ5OiAnQ3JhZnQgaXRlbXMgZnJvbSBhIHJlY2lwZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmb3JtIGNhcmdvIGl0ZW1zIGludG8gYSBuZXcgaXRlbSB1c2luZyBhIHJlY2lwZS4gVGhlIGVudGl0eSBtdXN0IGhhdmUgYSBjcmFmdGVyIG1vZHVsZSBpbnN0YWxsZWQuIENvbnN1bWVzIGVuZXJneSBhbmQgc2NoZWR1bGVzIGEgY3JhZnRpbmcgdGFzayB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIHRvdGFsIGlucHV0IG1hc3MgYW5kIGNyYWZ0ZXIgc3BlZWQuIElucHV0IHF1YW50aXRpZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSByZWNpcGUgcmVxdWlyZW1lbnRzLgAAAIe+vMxFCGNyYWZ0am9iAAAAyC6pi9hJCWRiZ2NyZWRpdAAAAAAAH/rYSQdkYmdqb2JzAACAyiZNI9lJCmRiZ21hbmRhdGUAAAA+9KVI2UkKZGJnb2xkam9icwAAMKdXMVPZSQtkYmdwYWdlcm93cwAAAAAAIlfZSQdkYmdwaWNrAAAAAAqZWNlJCGRiZ3BsYWNlAAAAAIpdXdlJCGRiZ3B1cmdlAAAAgMhUddlJCWRiZ3JlcGFjawAAAAA4G4XZSQhkYmdzZWF0cwAAAPDZ5amiSglkZWxlbnRpdHkAAAAADbtIpUoIZGVtb2xpc2jxAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZW1vbGlzaApzdW1tYXJ5OiAnRGVtb2xpc2ggYSBzdGF0aW9uYXJ5IGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRGVjb21taXNzaW9uIGFuIGVudGl0eSwgZXJhc2luZyBpdCBmcm9tIHRoZSBnYW1lLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSwgaGF2ZSBlbXB0eSBjYXJnbywgYW5kIGhhdmUgbm8gaW5zdGFsbGVkIG1vZHVsZXMgKHJlbW92ZSBlYWNoIHZpYSBybW1vZHVsZSBmaXJzdCkuIFNjaGVkdWxlcyBhIGRlbW9saXNoIHRhc2sgdGhhdCBlcmFzZXMgdGhlIGVudGl0eSBvbiByZXNvbHV0aW9uLiBPbmx5IHZhbGlkIGZvciBlbnRpdGllcyB0aGF0IGNhbm5vdCBtb3ZlOyB1c2UgdW5kZXBsb3kgb3Igd3JhcGVudGl0eSBmb3IgdGhlIHJlc3QuAAAAAHgaq0oGZGVwbG957AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVwbG95CnN1bW1hcnk6ICdEZXBsb3kgYSBwYWNrZWQgZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpVbnBhY2sgYSBwYWNrZWQgZW50aXR5IGl0ZW0gKHBhY2tlZCBzaGlwIG9yIHBhY2tlZCBjb250YWluZXIpIGZyb20gY2FyZ28sIHNjaGVkdWxpbmcgYSBkZXBsb3kgdGFzayB0aGF0IGNyZWF0ZXMgdGhlIG5ldyBlbnRpdHkgYXQgdGhlIGRlcGxveWluZyBlbnRpdHkncyBsb2NhdGlvbiB1cG9uIHJlc29sdXRpb24uAIC6NONMq0oKZGVwb3RzdG9yZQAAAFDQ5EyrSglkZXBvdHRha2UAAIDPLk+FsEoKZGVzY2VudGl0eckDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlc2NlbnRpdHkKc3VtbWFyeTogJ0Rlc2NyaWJlIGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBzdHJpbmcgZm9yIGEgcGFja2VkIGVudGl0eSwgZGVyaXZlZCBmcm9tIHRoZSBlbnRpdHkgaXRlbSBpZCwgaHVsbCBzdGF0cywgYW5kIHRoZSBsaXN0IG9mIGluc3RhbGxlZCBtb2R1bGUgaXRlbSBpZHMgYW5kIHN0YXRzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGRpc3BsYXkgcGFja2VkIGVudGl0aWVzLgAAAACoeMxUBmVuYWJsZd0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC6AsZGUXYO6WwxmaXhjYXJnb21hc3OQAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBmaXhjYXJnb21hc3MKc3VtbWFyeTogJ0RFQlVHOiByZWNvbXB1dGUgZW50aXR5IGNhcmdvIG1hc3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlY29tcHV0ZSBhbmQgcmV3cml0ZSBhbiBlbnRpdHkncyBjYXJnbyBtYXNzIGZyb20gaXRzIGN1cnJlbnQgY2FyZ28uIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4gQXZhaWxhYmxlIGZvciByZXBhaXJpbmcgZHJpZnQgYmV0d2VlbiBjYWNoZWQgY2FyZ28gbWFzcyBhbmQgdGhlIHRydWUgbWFzcyBkZXJpdmVkIGZyb20gY2FyZ28gcm93cy4AAE5Oquy6WwpmaXhpdGVtaWRzAACiUVtdhS5dC2ZvcmNlcmV2ZWFsvgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZm9yY2VyZXZlYWwKc3VtbWFyeTogJ0RFQlVHOiBmb3JjZS1maW5hbGl6ZSBhbiBlcG9jaCBmcm9tIGV4aXN0aW5nIHJldmVhbHMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkZpbmFsaXplIGEgc3R1Y2sgZXBvY2ggYnkgY29tcHV0aW5nIGl0cyBzZWVkIGZyb20gdGhlIHJldmVhbHMgYWxyZWFkeSBzdWJtaXR0ZWQsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGNvbmZpZ3VyZWQgdGhyZXNob2xkLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIFRoZSBzZWVkIGlzIGRlcml2ZWQgc29sZWx5IGZyb20gdGhlIHByZS1pbWFnZS1sb2NrZWQgcmV2ZWFscyBhbHJlYWR5IG9uIGNoYWluOyBubyBhZG1pbi1zdXBwbGllZCBlbnRyb3B5IGlzIGludHJvZHVjZWQuIFVzZWQgdG8gdW5ibG9jayBlcG9jaCBwcm9ncmVzc2lvbiB3aGVuIHRoZSB0aHJlc2hvbGQgY2Fubm90IG90aGVyd2lzZSBiZSBtZXQuAAAAAIA0NV0FZm91bmQAAAAAAFzVsmEGZ2F0aGVylwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2F0aGVyCnN1bW1hcnk6ICdHYXRoZXIgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpHYXRoZXIgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBnYXRoZXJhYmxlIGxvY2F0aW9uIHR5cGVzLiBTY2hlZHVsZXMgYSBnYXRoZXIgdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZ2F0aGVyZXIgc3RhdHMgYW5kIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIGNvbXBvc2l0aW9uLgDANLFe1bJhCmdhdGhlcnBsYW4AkJWKCzuspmIMZ2VuZXNpc2ZsZWV0qQQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2VuZXNpc2ZsZWV0CnN1bW1hcnk6ICdNaW50IHRoZSBvbmUtdGltZSBnZW5lc2lzIGZsZWV0JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbXBsYWNlIHRoZSBvbmUtdGltZSBnZW5lc2lzIGZsZWV0OiBhIGNhbGxlci1zdXBwbGllZCBzZXQgb2YgZW50aXRpZXMgKHNoaXBzLCBzdHJ1Y3R1cmVzLCBhbmQgY29udGFpbmVycykgd3JpdHRlbiB0byB0aGUgd29ybGQgYXMtaXMuIFZhbGlkIG9ubHkgZHVyaW5nIHRoZSBwcmUtZ2VuZXNpcyB3aW5kb3csIGJlZm9yZSBlcG9jaCAxIGlzIGZpbmFsaXplZC4gVGhlIHN1cHBsaWVkIGVudGl0eSBpZHMgYXJlIGhvbm9yZWQgYW5kIHRoZSBpZCBzZXF1ZW5jZSBpcyBhZHZhbmNlZCBwYXN0IHRoZW07IGlkIDAgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBHZW5lc2lzIE5leHVzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkukOKlHDuspmIMZ2VuZXNpc3dvcmxk5wctLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2VuZXNpc3dvcmxkCnN1bW1hcnk6ICdGb3VuZCBhIHdvcmxkIGF0IGdhbWUgbGF1bmNoIHdpdGggaXRzIGNpdmljIGNoYXJ0ZXJzIGFscmVhZHkgY29tcGxldGVkJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpGb3VuZCBhIHBsYW5ldCBhcyBhIHdvcmxkIGR1cmluZyB0aGUgcHJlLWdlbmVzaXMgd2luZG93LCBiZWZvcmUgZXBvY2ggMSBpcyBmaW5hbGl6ZWQsIHdpdGggdGhlIGxpc3RlZCBjaGFydGVyIG5vZGVzIGNvbXBsZXRlZCBpbiBvcmRlci4gVGhlIGZvdW5kZXIgbXVzdCBob2xkIGEgY29tcGFueSBvbiB0aGUgcGxhdGZvcm07IHRoZSBmb3VuZGVyIGlzIGNyZWRpdGVkIHdpdGggbGlmZXRpbWUgaW5mbHVlbmNlIGVxdWFsIHRvIHRoZSBzdW1tZWQgY29zdCBvZiB0aGUgbGlzdGVkIG5vZGVzLCBhbmQgZWFjaCBub2RlIGlzIHRoZW4gY29tcGxldGVkIHRocm91Z2ggdGhlIHNhbWUgcnVsZXMgYSBjaGFydGVyIGNyYW5rIGFwcGxpZXM6IHByZXJlcXVpc2l0ZXMgbXVzdCBiZSBzYXRpc2ZpZWQgYnkgZWFybGllciBub2RlcyBpbiB0aGUgbGlzdCwgYSBzcGF3biBub2RlIGFkb3B0cyBhIGNpdmljIGVudGl0eSBvZiBpdHMga2luZCBhbHJlYWR5IHN0YW5kaW5nIGF0IHRoZSBsb2NhdGlvbiBvciBzcGF3bnMgb25lLCBhbmQgYSByZWZpdCBub2RlIHJlZml0cyB0aGUgZW50aXR5IHJlY29yZGVkIGZvciBpdHMgdGFyZ2V0LiBTcGVudCBhZHZhbmNlcyBieSBldmVyeSBub2RlJ3MgY29zdCwgc28gdGhlIHJlc3VsdGluZyB3b3JsZCBpcyBvbmUgYSBzaW5nbGUgZm91bmRlciBjb3VsZCBoYXZlIGFkdmFuY2VkIGFsb25lLiBFYWNoIGxvY2F0aW9uIGNhbiBiZSBmb3VuZGVkIHRoaXMgd2F5IG9uY2UuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS6AD30pOn2yYgxnZXRidWlsZGpvYnMAAMBV+ZqGsmIKZ2V0Y2hhcnRlcgCg1M35moayYgxnZXRjaGFydHRyZWUA4JNRN9+GsmIMZ2V0Y2hydHJlYWR5AADAVRnriLJiCmdldGNsdXN0ZXIAAABgbk2KsmIJZ2V0Y29uZmlnygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Y29uZmlnCnN1bW1hcnk6ICdHZXQgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBnYW1lIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGRlZmF1bHQgZW50aXR5IHN0YXRzIGZvciB3YXJlaG91c2VzIGFuZCBjb250YWluZXJzLCBhbmQgdGhlIGZ1bGwgaXRlbSBkZWZpbml0aW9ucyB0YWJsZS6AD315mYuyYgxnZXRjcmFmdGpvYnMAAACokiKVsmIJZ2V0ZGVjb21wAAAASNNIlbJiCWdldGRlbWFuZAAAQHaYVpWyYgpnZXRkZXBvc2l0AAAAAJlWlbJiCGdldGRlcG90AAAUmiZjl7JiC2dldGRpc3RhbmNlAABUPI65qLJiC2dldGVsaWdpYmxlyAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZWxpZ2libGUKc3VtbWFyeTogJ0dldCBlbGlnaWJsZSByZXNvdXJjZSBpdGVtIElEcyBhdCBhIGxvY2F0aW9uIGFuZCBzdHJhdHVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgbGlzdCBvZiByZXNvdXJjZSBpdGVtIElEcyBlbGlnaWJsZSB0byBiZSBnYXRoZXJlZCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgYW5kIHN0cmF0dW0gZGVwdGguIEl0ZW1zIGFyZSBnYXRlZCBieSBib3RoIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIHByb2ZpbGUgYW5kIHRoZSBkZXB0aCB0aHJlc2hvbGQgZm9yIGVhY2ggdGllci4AAMAR5amyYglnZXRlbnRjbHOMAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRjbHMKc3VtbWFyeTogJ0dldCBlbnRpdHkgY2xhc3MgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBlbnRpdHkgY2xhc3MgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAoT3JiaXRhbFZlc3NlbCwgUGxhbmV0YXJ5U3RydWN0dXJlKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgZW50aXR5IGNsYXNzIGlkZW50aWZpZXJzLgCwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLpCnuzVTurJiDGdldGZvb3RwcmludAAAvEEqremyYgtnZXRpbmZkZWNheQCg0FQ6rumyYgxnZXRpbmZsdWVuY2UAAJSOZq/psmILZ2V0aW5mdmFsdWUAAEw2SarssmILZ2V0aXRlbWRhdGGoAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtZGF0YQpzdW1tYXJ5OiAnR2V0IGZ1bGwgaXRlbSBjYXRhbG9nJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgY29tcGxldGUgaXRlbSBjYXRhbG9nIGFzIHRoZSBjb250cmFjdCBzZWVzIGl0LCBpbmNsdWRpbmcgdHlwZSwgc3VidHlwZSwgdGllciwgbWFzcywgYW5kIG90aGVyIHN0YXRpYyBtZXRhZGF0YS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgY2xpZW50cyB0byBtaXJyb3IgdGhlIGNvbnRyYWN0J3MgaXRlbSBkZWZpbml0aW9ucy4AAE5OquyyYgpnZXRpdGVtaWRzhgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbWlkcwpzdW1tYXJ5OiAnR2V0IGl0ZW0gaWQgdG8gbmFtZSBtYXBwaW5ncycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgbWFwcGluZyBvZiBpdGVtIGlkIGNvbnN0YW50cyB0byB0aGVpciBjYW5vbmljYWwgc3RyaW5nIG5hbWVzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHJlc29sdmUgbnVtZXJpYyBpdGVtIGlkcyB0byBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVycy4AAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MuAFT1WarssmILZ2V0aXRlbXR5cGUAgFX1WarssmIMZ2V0aXRlbXR5cGVziAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXR5cGVzCnN1bW1hcnk6ICdHZXQgaXRlbSB0eXBlIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgaXRlbSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKHJlc291cmNlLCBjb21wb25lbnQsIG1vZHVsZSwgZW50aXR5KS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgaXRlbSB0eXBlIGlkZW50aWZpZXJzLgBMVjJNB7NiC2dldGtpbmRtZXRh+AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0a2luZG1ldGEKc3VtbWFyeTogJ0dldCBlbnRpdHkga2luZCBtZXRhZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGVudGl0eSBraW5kIHJlZ2lzdHJ5IGFuZCB0ZW1wbGF0ZSByZWdpc3RyeSwgaW5jbHVkaW5nIGVhY2gga2luZCdzIGNsYXNzaWZpY2F0aW9uLCBjYXBhYmlsaXR5IGZsYWdzLCBaLWNvb3JkaW5hdGUsIGFuZCBkZWZhdWx0IGxhYmVsLCBwbHVzIHRoZSBtYXBwaW5nIG9mIGVudGl0eSBpdGVtIGlkcyB0byBraW5kcyB3aXRoIGRpc3BsYXkgbGFiZWxzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGludGVycHJldCBlbnRpdHkga2luZHMgYW5kIGNhcGFiaWxpdGllcy4AJnXZIBqzYgtnZXRsb2NhdGlvbuICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2F0aW9uCnN1bW1hcnk6ICdHZXQgbG9jYXRpb24gaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NhdGlvbiBpbmNsdWRpbmcgd2hldGhlciBhIHN5c3RlbSBleGlzdHMsIGFuZCBmb3IgZWFjaCBpdGVtOiBwcmljZSwgc3VwcGx5LCByYXJpdHkgbXVsdGlwbGllciwgYW5kIGxvY2F0aW9uIG11bHRpcGxpZXIuAIDJJiEas2IKZ2V0bG9jZGF0Yf4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2RhdGEKc3VtbWFyeTogJ0dldCBkZXJpdmVkIGxvY2F0aW9uIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgZGVyaXZlZCBsb2NhdGlvbiBkYXRhIGluY2x1ZGluZyBzdGF0aWMgcHJvcGVydGllcyAodHlwZSwgZGlmZmljdWx0eSwgc2VlZHMpIGZyb20gdGhlIGdhbWUgc2VlZCBhbmQgZXBvY2gtc3BlY2lmaWMgcHJvcGVydGllcyAoYWN0aXZlLCBzZWVkcykgZnJvbSB0aGUgY3VycmVudCBlcG9jaCBzZWVkLgAAWyhPJ7NiCmdldG1pbnRjZmcA4JNRN08ns2IMZ2V0bWludHJlYWR5AACwqj4nKrNiC2dldG1vZHR5cGVz1gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bW9kdHlwZXMKc3VtbWFyeTogJ0dldCBtb2R1bGUgdHlwZSBlbnVtIHZhbHVlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIG1vZHVsZSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKGFueSwgZW5naW5lLCBnZW5lcmF0b3IsIGdhdGhlcmVyLCBsb2FkZXIsIHdhcnAsIGNyYWZ0ZXIsIGxhdW5jaGVyLCBzdG9yYWdlLCBoYXVsZXIpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBtb2R1bGUgc3VidHlwZSBpZGVudGlmaWVycyBhbmQgc2xvdCBjb21wYXRpYmlsaXR5LgAAVlEnKrNiCmdldG1vZHVsZXOAAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRtb2R1bGVzCnN1bW1hcnk6ICdHZXQgYWxsIG1vZHVsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIG1vZHVsZXMsIGluY2x1ZGluZyBlYWNoIG1vZHVsZSdzIGlkLCBtYXNzLCBzdWJ0eXBlLCBhbmQgdGllci4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBlbnVtZXJhdGUgaW5zdGFsbGFibGUgZXF1aXBtZW50LgAA8OcaNbNiCWdldG5lYXJiecoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGFuZCBmbGlnaHQgdGltZS4AgMLm5DWzYgpnZXRuZnRiYXNlAAAAXdPlNbNiCmdldG5mdGluZm/wAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZnRpbmZvCnN1bW1hcnk6ICdHZXQgTkZUIHNjaGVtYSBhbmQgdGVtcGxhdGUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgc2V0IG9mIEF0b21pY0Fzc2V0cyBzY2hlbWFzIGFuZCB0ZW1wbGF0ZXMgdGhlIGdhbWUgY29udHJhY3QgZXhwZWN0cywgcGx1cyB0aGUgY3VycmVudCBgaXRlbV9pZCDihpIgKHRlbXBsYXRlX2lkLCBzY2hlbWFfbmFtZSlgIG1hcHBpbmcgc3RvcmVkIGluIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBzeW5jIGF0b21pY2Fzc2V0cyBzdGF0ZSB3aXRoIHRoZSBjb250cmFjdC4AALjKm1izYglnZXRwbGF5ZXL9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRwbGF5ZXIKc3VtbWFyeTogJ0dldCBwbGF5ZXIgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBwbGF5ZXIgaW5jbHVkaW5nIGJhbGFuY2UsIGRlYnQsIG5ldHdvcnRoLCBlbnRpdHkgY291bnRzLCBhbmQgcHJpY2luZyBmb3IgbmV4dCBwdXJjaGFzZXMuIFJldHVybnMgaXNfcGxheWVyPWZhbHNlIGlmIHRoZSBhY2NvdW50IGhhcyBub3Qgam9pbmVkIHRoZSBnYW1lLgAAACBSWrNiB2dldHBvb2wAAAAAOFJas2IIZ2V0cG9vbHMAoLLJ+NFbs2IMZ2V0cHJvanN0YXRlywMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cHJvanN0YXRlCnN1bW1hcnk6ICdHZXQgcHJvamVjdGVkIGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHByb2plY3RlZCBzdGF0ZSBvZiBhbiBlbnRpdHkgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5leHQgdGFza19jb3VudCBzY2hlZHVsZWQgdGFza3MgKG9yIGFsbCB0YXNrcyBpZiB0YXNrX2NvdW50IGlzIG9taXR0ZWQpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHByZXZpZXcgdGhlIHJlc3VsdCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZSB3aXRob3V0IHJlc29sdmluZyBvbi1jaGFpbi4AAFDVIXWzYglnZXRyZWNpcGWmAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGUKc3VtbWFyeTogJ0dldCBhIHNpbmdsZSBjcmFmdGluZyByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSByZWNpcGUgd2hvc2Ugb3V0cHV0IG1hdGNoZXMgdGhlIGdpdmVuIGl0ZW0gaWQsIGluY2x1ZGluZyBpdHMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGlzcGxheSBjcmFmdGluZyByZXF1aXJlbWVudHMuAABW1SF1s2IKZ2V0cmVjaXBlc6wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlY2lwZXMKc3VtbWFyeTogJ0xpc3QgY3JhZnRpbmcgcmVjaXBlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBjcmFmdGluZyByZWNpcGVzIHN0YXJ0aW5nIGF0IHRoZSBwcm92aWRlZCBsb3dlciBib3VuZCBvdXRwdXQgaXRlbSBpZCwgdXAgdG8gdGhlIHNwZWNpZmllZCBsaW1pdC4gRWFjaCBlbnRyeSBpbmNsdWRlcyBpbnB1dHMsIGJsZW5kIHdlaWdodHMsIHN0YXQgc2xvdHMsIGFuZCByZXNvbHZlZCBpdGVtIG1hc3MgaW5mby4AAM4GYXWzYgpnZXRyZXNjYXRzngMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzY2F0cwpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcmVzb3VyY2UgY2F0ZWdvcnkgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAob3JlLCBnYXMsIHJlZ29saXRoLCBiaW9tYXNzLCBjcnlzdGFsKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgcmVzb3VyY2Ugc3VidHlwZSBpZGVudGlmaWVycy4AsNpXYXWzYgtnZXRyZXNlcnZlc/wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2VydmVzCnN1bW1hcnk6ICdHZXQgY3VycmVudCByZXNlcnZlIG1vZGlmaWNhdGlvbnMgYXQgYSBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgY2hhaW4ncyBtb2RpZmljYXRpb25zIHRvIGRlcml2ZWQgcmVzZXJ2ZXMgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGUgZm9yIHRoZSBjdXJyZW50IGVwb2NoIGFzIGEgbGlzdCBvZiB7c3RyYXR1bSwgcmVtYWluaW5nfSBwYWlycy4gU3RyYXRhIG5vdCBwcmVzZW50IGluIHRoZSByZXNwb25zZSB1c2UgdGhlaXIgZGVyaXZlZCBpbml0aWFsIHJlc2VydmUuIENvbXBvc2Ugd2l0aCBTREsgZGVyaXZhdGlvbiB0byBnZXQgdGhlIGZ1bGwgcGVyLWxvY2F0aW9uIHN0cmF0YSB2aWV3LoAVuppidbNiDGdldHJlc291cmNlc4cDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc291cmNlcwpzdW1tYXJ5OiAnR2V0IGFsbCByZXNvdXJjZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIHJlc291cmNlcywgaW5jbHVkaW5nIGVhY2ggcmVzb3VyY2UncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGdhdGhlcmFibGUgbWF0ZXJpYWxzLgAAADjTiLNiCGdldHNsb3RzuwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c2xvdHMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc2xvdCBsYXlvdXRzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgbW9kdWxlIHNsb3QgbGF5b3V0IGZvciBldmVyeSBlbnRpdHkgaXRlbSB0eXBlLCBsaXN0aW5nIHRoZSBvcmRlcmVkIHNsb3QgdHlwZXMgYXZhaWxhYmxlIGZvciBtb2R1bGUgaW5zdGFsbGF0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRldGVybWluZSB3aGljaCBtb2R1bGUgdHlwZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBhIGdpdmVuIGVudGl0eSBodWxsLgCA1NncjLNiCmdldHN0cmF0dW3SAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdHJhdHVtCnN1bW1hcnk6ICdHZXQgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHJlc291cmNlIHN0cmF0dW0gZGF0YSBmb3IgYSBzcGVjaWZpYyBkZXB0aCBsYXllciBhdCBhIGNvb3JkaW5hdGUsIGluY2x1ZGluZyB0aGUgc3RyYXR1bSBzZWVkIGluZm8gYW5kIGRlcml2ZWQgcmVzb3VyY2Ugc3RhdHMugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS7gk1FXZbqzYgxnZXR2b3RlcmVhZHkAAAAAWGW6s2IIZ2V0dm90ZXMAAFSkTV7Ks2ILZ2V0d29ybWhvbGUAkB2e5uaq6WUMZ3JvdXB0cmFuc2l0AACi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaPgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAABAhNKwaQdoYXNoNTEy+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaDUxMgpzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTUxMiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGE1MTIgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAouwblS6t0C2ltcG9ydGNhcmdvAABAjArlS6t0CmltcG9ydGNlbGwA4LPLU+VLq3QMaW1wb3J0ZW50aXR5AAAaolXlS6t0C2ltcG9ydGVwb2NoAACqppflS6t0C2ltcG9ydGdyb3VwAMAWymvmS6t0DGltcG9ydG5mdGNmZwBwlTex5kurdAxpbXBvcnRwbGF5ZXIAuq/C6uZLq3QNaW1wb3J0cmVzZXJ2ZQAAVDYZ50urdAtpbXBvcnRzdGF0ZQAAAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAAAAADQ0tYkGbGF1bmNoAAAAAAAAkAyNBGxvYWQAAPChT2VzmZMLbWlncmF0ZWpvYnMAAADwyaibp5MJbWludHJlYWR5AAAAACq6rDaVCG1vdmV0aWxlAACA+i6aq7OZCm5hdHVyYWxpemUAAACIVzPp8poJbmZ0aW1ndXJssgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbmZ0aW1ndXJsCnN1bW1hcnk6ICdHZXQgTkZUIGltYWdlIFVSTCBmb3IgYSBjYXJnbyBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgaW1hZ2UgVVJMIHRoZSBjb250cmFjdCBlbWl0cyBmb3IgYSBnaXZlbiBjYXJnbyBpdGVtLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIGxvY2F0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGZldGNoIHRoZSBjYW5vbmljYWwgYXJ0d29yayBmb3IgYW4gaXRlbSBvciBwYWNrZWQgZW50aXR5LgAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAZdcghUysCnBsYWNlY2FyZ2/JBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBwbGFjZWNhcmdvCnN1bW1hcnk6ICdSZXN0b3JlIE5GVCBjYXJnbyBvbnRvIGEgaG9zdCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiBjYWxsZWQgaW5saW5lIGJ5IHRoZSBwbGF0Zm9ybSBjb250cmFjdCBvbmx5LiBSZXN0b3JlcyB0aGUgY2FyZ28gcmVjb3JkZWQgaW4gYW4gdW53cmFwcGVkIE5GVCBvbnRvIGEgaG9zdCBlbnRpdHkuIFZhbGlkYXRlcyBob3N0IG93bmVyc2hpcCwgbG9hZGVycywgYW5kIHJlbWFpbmluZyBjYXBhY2l0eSwgZGVzZXJpYWxpemVzIHRoZSBORlQncyBpdGVtIGRhdGEsIGFuZCBhcHBlbmRzIGFuIHVud3JhcCB0YXNrIHRvIGRlbGl2ZXIgdGhlIGNhcmdvIHRvIHRoZSBob3N0LiBUaGUgcGxhdGZvcm0gY29udHJhY3QgY3JlZGl0cyB0aGUgZGVwb3NpdCByZWZ1bmQgYW5kIGJ1cm5zIHRoZSBhc3NldC4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgB8dnkqhUysC3BsYWNlZW50aXR5wAQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcGxhY2VlbnRpdHkKc3VtbWFyeTogJ01hdGVyaWFsaXplIGEgcGFja2VkLWVudGl0eSBORlQgYXMgYSBsaXZlIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIGNhbGxlZCBpbmxpbmUgYnkgdGhlIHBsYXRmb3JtIGNvbnRyYWN0IG9ubHkuIEVtcGxhY2VzIGEgbGl2ZSBvcmJpdGFsIHZlc3NlbCAoc2hpcCBvciBjb250YWluZXIpIGZyb20gaXRzIHBhY2tlZC1lbnRpdHkgTkZUIGRhdGEgYXQgdGhlIHJlY29yZGVkIHdyYXAgb3JpZ2luLCB0aGVuIHF1ZXVlcyB0cmF2ZWwgYW5kIHJlY2hhcmdlIHRhc2tzIHRvIGRlbGl2ZXIgaXQgdG8gdGhlIHRhcmdldCBuZXh1cyBhdCBmdWxsIGVuZXJneS4gVGhlIHBsYXRmb3JtIGNvbnRyYWN0IGNyZWRpdHMgdGhlIGRlcG9zaXQgcmVmdW5kIGFuZCBidXJucyB0aGUgYXNzZXQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAACKXdOQughyZWNoYXJnZc0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlY2hhcmdlCnN1bW1hcnk6ICdSZWNoYXJnZSBzaGlwIGVuZXJneScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2NoZWR1bGUgYSByZWNoYXJnZSB0YXNrIGZvciBhbiBlbnRpdHkgdG8gcmVzdG9yZSBlbmVyZ3kgdG8gZnVsbCBjYXBhY2l0eS4gVGhlIHJlY2hhcmdlIGR1cmF0aW9uIGRlcGVuZHMgb24gY3VycmVudCBlbmVyZ3kgbGV2ZWwgYW5kIHJlY2hhcmdlIHJhdGUu4LPLUzV8l7oMcmVmcnNoZW50aXR5uAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVmcnNoZW50aXR5CnN1bW1hcnk6ICdSZWZyZXNoIGRlcml2ZWQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZWNvbXB1dGUgZGVyaXZlZCBmaWVsZHMgb24gYW4gZW50aXR5IGZyb20gaXRzIGN1cnJlbnQgY2FyZ28gYW5kIG1vZHVsZXMsIHJlZnJlc2hpbmcgY2FwYWJpbGl0eSBzdGF0cyBhbmQgY2FyZ28gbWFzcy4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFVzZWQgdG8gcmVjb25jaWxlIGRlcml2ZWQgc3RhdGUgYWZ0ZXIgZGF0YSBtaWdyYXRpb25zIG9yIGNvbnRyYWN0IHVwZ3JhZGVzLqAiMpeqTaW6DHJlbW92ZW9yYWNsZQAAAAAAKGmmugZyZW5hbWUAAAAAQO1IsboHcmVzb2x2ZdADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlc29sdmUKc3VtbWFyeTogJ0NvbXBsZXRlIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVzb2x2ZSBjb21wbGV0ZWQgdGFza3MgaW4gYW4gZW50aXR5J3Mgc2NoZWR1bGUsIGFwcGx5aW5nIHRoZWlyIGVmZmVjdHMgKHJlY2hhcmdlIGVuZXJneSwgdXBkYXRlIGxvY2F0aW9uLCBsb2FkL3VubG9hZCBjYXJnbykuIElmIGNvdW50IGlzIHNwZWNpZmllZCwgcmVzb2x2ZSBleGFjdGx5IHRoYXQgbWFueSB0YXNrczsgb3RoZXJ3aXNlIHJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcy4gRmFpbHMgaWYgY291bnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0YXNrcy4AQIxG7UixugpyZXNvbHZlYWxsAODjNUrtSLG6DHJlc29sdmVlYXJseQAAAAAARKO2ugZyZXZlYWwAAAAAKupEpbwIcm1tb2R1bGW8Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW1vZHVsZQpzdW1tYXJ5OiAnUmVtb3ZlIGEgbW9kdWxlIGZyb20gYSBzbG90JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgYW4gaW5zdGFsbGVkIG1vZHVsZSBmcm9tIGEgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgaXMgcmV0dXJuZWQgdG8gY2FyZ28uIEZhaWxzIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgaGF2ZSBlbm91Z2ggY2FyZ28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgcmV0dXJuZWQgbW9kdWxlLgAAAGyhvKa8CHJtbmZ0Y2ZnoQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcm1uZnRjZmcKc3VtbWFyeTogJ1JlbW92ZSBORlQgdGVtcGxhdGUgbWFwcGluZyBmb3IgYW4gaXRlbScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVtb3ZlIHRoZSBBdG9taWNBc3NldHMgdGVtcGxhdGUgbWFwcGluZyBmb3IgdGhlIHNwZWNpZmllZCBpdGVtIGlkIGZyb20gdGhlIGBuZnRjb25maWdgIHRhYmxlLiBBZnRlciByZW1vdmFsIHRoZSBpdGVtIGNhbiBubyBsb25nZXIgYmUgd3JhcHBlZCBvciB1bndyYXBwZWQgdW50aWwgYSBuZXcgbWFwcGluZyBpcyBzZXQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAADIbYeywghzZXRjaXZpYwAAwFUZ64iywgpzZXRjbHVzdGVyAAAAwOlSirLCCXNldGNvb3JkcwAA1HQxGZWywgtzZXRkZWFkbGluZQAAwLz6rOmywgpzZXRpbmZidXJuAAAAACGt6bLCCHNldGluZmQxAJCmkSqt6bLCDHNldGluZmRlbWFuZAAAQJ5OrumywgpzZXRpbmZtaW50AJAbc4qv6bLCDHNldGluZndlaWdodAAAAEgudzWzwglzZXRuZXh0aWQAAABgC+U1s8IJc2V0bmZ0Y2ZnxAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2V0bmZ0Y2ZnCnN1bW1hcnk6ICdTZXQgTkZUIHRlbXBsYXRlIG1hcHBpbmcgZm9yIGFuIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJpbmQgYW4gaXRlbSBpZCB0byBhbiBBdG9taWNBc3NldHMgdGVtcGxhdGUgaWQgYW5kIHNjaGVtYSBuYW1lLiBVc2VkIHRvIGNvbmZpZ3VyZSBob3cgdGhlIGNvbnRyYWN0IG1pbnRzIGFuZCByZWNvZ25pemVzIE5GVHMgZm9yIGEgZ2l2ZW4gaXRlbS4gSW5zZXJ0cyBhIG5ldyBtYXBwaW5nIGlmIG9uZSBkb2VzIG5vdCBleGlzdCwgb3IgdXBkYXRlcyB0aGUgZXhpc3RpbmcgbWFwcGluZy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LpAibVjdlrPCDHNldHRocmVzaG9sZACQaYzmqJizwgxzZXR0bGViYWxsb3QAMJ2s5vKps8IMc2V0dW53cmFwbWluAAAypqiay7PCC3NldHdyYXBjb3N0AACAUquay7PCCnNldHdyYXBmZWUAAAAAQMWcdcMHc2h1dHRsZQAAAKDsGsRpxglzdG93Y2FyZ2/VBS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzdG93Y2FyZ28Kc3VtbWFyeTogJ1Jlc2VydmUgYSBjYXJnbyBzdGFjayBmb3Igd3JhcHBpbmcgaW50byBhbiBORlQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiBjYWxsZWQgaW5saW5lIGJ5IHRoZSBwbGF0Zm9ybSBjb250cmFjdCBvbmx5LiBSZXNlcnZlcyBhbmQgY29uc3VtZXMgYSBjYXJnbyBzdGFjayBvbiBhIGxpdmUgZW50aXR5IGZvciB3cmFwcGluZyBpbnRvIGFuIE5GVC4gVmFsaWRhdGVzIGVudGl0eSBvd25lcnNoaXAsIGxvYWRlcnMsIGFuZCBwcmVzZW5jZSBhdCB0aGUgbmV4dXMsIGFuZCBjb25maXJtcyB0aGUgdGFyZ2V0IGNhcmdvIHN0YWNrIGlzIGF2YWlsYWJsZSBhbmQgbm90IHJlc2VydmVkIGJ5IGEgcGVuZGluZyB0YXNrLiBDb21wdXRlcyB0aGUgd3JhcCBjb3N0IGFuZCBmZWUsIGRlYml0cyB0aGVtIGZyb20gdGhlIG93bmVyJ3MgcGxhdGZvcm0gZGVwb3NpdCBiYWxhbmNlLCBkZXJpdmVzIHRoZSBORlQncyBpbW11dGFibGUgZGF0YSwgYW5kIG1pbnRzIHRoZSBORlQgaW5saW5lIGFzIHRoZSBnYW1lIGNvbnRyYWN0IGJlZm9yZSBjb25zdW1pbmcgdGhlIGNhcmdvLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAIDPLk/FacYKc3Rvd2VudGl0eZkFLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHN0b3dlbnRpdHkKc3VtbWFyeTogJ1Jlc2VydmUgYW4gZW50aXR5IGZvciB3cmFwcGluZyBpbnRvIGFuIE5GVCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIGNhbGxlZCBpbmxpbmUgYnkgdGhlIHBsYXRmb3JtIGNvbnRyYWN0IG9ubHkuIFJlc2VydmVzIGEgd2hvbGUgZW50aXR5IChzaGlwLCBjb250YWluZXIsIG9yIHBsYW5ldGFyeSBzdHJ1Y3R1cmUpIGZvciB3cmFwcGluZyBpbnRvIGFuIE5GVC4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBlbXB0eSBjYXJnbyBhbmQgbm8gc2NoZWR1bGVkIHRhc2tzLiBDb21wdXRlcyB0aGUgd3JhcCBjb3N0IGFuZCBmZWUsIGRlYml0cyB0aGVtIGZyb20gdGhlIG93bmVyJ3MgcGxhdGZvcm0gZGVwb3NpdCBiYWxhbmNlLCBkZXJpdmVzIHRoZSBlbnRpdHkgTkZUJ3MgaW1tdXRhYmxlIGRhdGEsIG1pbnRzIHRoZSBORlQgaW5saW5lIGFzIHRoZSBnYW1lIGNvbnRyYWN0LCBhbmQgZXJhc2VzIHRoZSBlbnRpdHkgZnJvbSB0aGUgd29ybGQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AgIo6UVkNxwpzd2FwbW9kdWxlAAAAACq6XA3HCHN3YXB0aWxlAAAAACA7PM3NB3RyYW5zaXQAAAAAAES1zc0GdHJhdmVs+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGFuIGVudGl0eSBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgDANLFGtc3NCnRyYXZlbHBsYW4AAAAAnsaq0tQIdW5kZXBsb3nnBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1bmRlcGxveQpzdW1tYXJ5OiAnUGFjayBhIGRlcGxveWVkIGVudGl0eSBpbnRvIGEgaG9zdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUGFjayBhbiBlbnRpdHkgaW50byBhIGhvc3QgZW50aXR5J3MgY2FyZ28gYXMgYSBwYWNrZWQtZW50aXR5IGl0ZW0uIEhvc3QgYW5kIHRhcmdldCBtdXN0IHNoYXJlIHRoZSBzYW1lIG93bmVyIGFuZCBjb29yZGluYXRlcywgdGhlIGhvc3QgbXVzdCBoYXZlIGxvYWRlcnMgYW5kIGVub3VnaCBjYXBhY2l0eSBmb3IgdGhlIHBhY2tlZCBtYXNzLCBhbmQgdGhlIHRhcmdldCBtdXN0IGJlIGlkbGUgd2l0aCBlbXB0eSBjYXJnby4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBhbmQgc2NoZWR1bGVzIHVuZGVwbG95IHRhc2tzIG9uIGJvdGggZW50aXRpZXM7IG9uIHJlc29sdXRpb24gdGhlIHRhcmdldCBpcyBlcmFzZWQgYW5kIHRoZSBwYWNrZWQgZW50aXR5IGlzIGFkZGVkIHRvIHRoZSBob3N0J3MgY2FyZ28uIEludmVyc2Ugb2YgZGVwbG95LgAAAAAkQ+PUBnVubG9hZAAAAABAJXNZ1Qd1cGdyYWRlAAAA8MmoqzLdCXZvdGVyZWFkeQAAAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLSgAAAAAZBqjOQNpNjQAAApiYWxsb3Rfcm93ADBErmYaozkDaTY0AAAPYmFsbG90cGlja3Nfcm93AACwCmcaozkDaTY0AAAOYmFsbG90X3NlcV9yb3egYs4KZxqjOQNpNjQAABBiYWxsb3RzZXR0bGVfcm93AADAbLoUnT4DaTY0AAANYnVpbGRpbmdzX3JvdwAAwIe+FJ0+A2k2NAAADGJ1aWxkam9iX3JvdwAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwCqa3iq77JDA2k2NAAAD2NpdGl6ZW5zaGlwX3JvdwCYW5Mi5LZDA2k2NAAAD2NpdmljY29uZmlnX3JvdwAAAABg6UxEA2k2NAAACWNsYWltX3JvdwAAAOCqjHVEA2k2NAAAC2NsdXN0ZXJfcm93AAAAAGQnJUUDaTY0AAAKY29tbWl0X3JvdwAAwIe+vMxFA2k2NAAADGNyYWZ0am9iX3JvdwAAAAD47PJUA2k2NAAACmVudGl0eV9yb3cAqqaX+ezyVANpNjQAAA9lbnRpdHlncm91cF9yb3cAALAK++zyVANpNjQAAA5lbnRpdHlfc2VxX3JvdwAAAACAhmhVA2k2NAAACWVwb2NoX3JvdwAAAGBefdZ0A2k2NAAAC2luZmJ1cm5fcm93AABI00iV1nQDaTY0AAANaW5mZGVtYW5kX3JvdwAAACBPJ9d0A2k2NAAAC2luZm1pbnRfcm93AAAAIFJa13QDaTY0AAALaW5mcG9vbF9yb3cAgM8uGm3XdANpNjQAAA5pbmZxdWFsaXR5X3JvdwAAyI05xdd0A2k2NAAADWluZndlaWdodF9yb3cAAAAAXwURjQNpNjQAAApsb2NrZXJfcm93AAAAWGWTppEDaTY0AAAMbWFuZGF0ZXNfcm93AAAAAACbp5MDaTY0AAAJbWludHFfcm93AABgbk2K8poDaTY0AAANbmZ0Y29uZmlnX3JvdwAAYAupiMylA2k2NAAAEW9yYWNsZV9jb25maWdfcm93AAAAAKuIzKUDaTY0AAAKb3JhY2xlX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAAAYq8vorQNpNjQAAAxwcm9ncmVzc19yb3cAAABA7auwugNpNjQAAAtyZXNlcnZlX3JvdwAAAABEo7a6A2k2NAAACnJldmVhbF9yb3cAAABsujRNxgNpNjQAAAxzdGFuZGluZ19yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAAABAMXNpxgNpNjQAAAtzdG9yYWdlX3JvdwAAAAAArKrPA2k2NAAACXR5cGVzX3JvdwAAAADgFC/lA2k2NAAACndvcmxkc19yb3cAAHNrUlTN5QNpNjQAAA53cmFwY29uZmlnX3JvdwAAABlTVM3lA2k2NAAADHdyYXBjb3N0X3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAABiADKNddI0zTEMdGFza19yZXN1bHRzAMBxN0+KUjIMdGFza19yZXN1bHRzAAAAh74UnT4Od2luZG93X3JlY2VpcHQAAMg01hSdPgx0YXNrX3Jlc3VsdHMAAAAARIWmQQ5jYW5jZWxfcmVzdWx0cwBSdPpEhaZBDHRhc2tfcmVzdWx0cwCQ2w5FhaZBDmNhbmNlbF9yZXN1bHRzoGLOumHktkMMdGFza19yZXN1bHRzAEBe5iLpTEQMdGFza19yZXN1bHRzAADINFbpTEQMdGFza19yZXN1bHRzkJe56KqMdUQMdGFza19yZXN1bHRzAAAAAIC8zEUMdGFza19yZXN1bHRzAAAAh768zEUOd2luZG93X3JlY2VpcHQAAAAAIlfZSQtzb2NrZXRfcGljawAAAAqZWNlJD3Jlc2VydmVkX3dpbmRvdwAAgMhUddlJDXJlcGFja19yZXN1bHQAAAANu0ilSgx0YXNrX3Jlc3VsdHMAAAAAeBqrSgx0YXNrX3Jlc3VsdHMAgLo040yrSgx0YXNrX3Jlc3VsdHMAAFDQ5EyrSgx0YXNrX3Jlc3VsdHMAgM8uT4WwSgZzdHJpbmcAAAAAXNWyYQx0YXNrX3Jlc3VsdHMAwDSxXtWyYQx0YXNrX3Jlc3VsdHOAD30pOn2yYhBidWlsZGpvYnNfcmVzdWx0AMBV+ZqGsmIOY2hhcnRlcl9yZXN1bHSg1M35moayYhNjaGFydGVyX3RyZWVfcmVzdWx04JNRN9+GsmITY2hhcnRlcnJlYWR5X3Jlc3VsdADAVRnriLJiC2NsdXN0ZXJfcm93AABgbk2KsmILZ2FtZV9jb25maWeAD315mYuyYhBjcmFmdGpvYnNfcmVzdWx0AACokiKVsmINZGVjb21wX3Jlc3VsdAAASNNIlbJiDWRlbWFuZF9yZXN1bHQAQHaYVpWyYg5leHRlbmRlZF9hc3NldAAAAJlWlbJiCmRlcG90X3ZpZXcAFJomY5eyYgZ1aW50NjQAVDyOuaiyYgh1aW50MTZbXQAAwBHlqbJiC2VudW1fcmVzdWx0ALBy2eWpsmINZW50aXR5X2luZm9bXQAA8NnlqbJiC2VudGl0eV9pbmZvkKe7NVO6smIQZm9vdHByaW50X3Jlc3VsdAC8QSqt6bJiBnVpbnQ2NKDQVDqu6bJiEGluZmx1ZW5jZV90b3RhbHMAlI5mr+myYg9pbmZ2YWx1ZV9yZXN1bHQATDZJquyyYg9pdGVtZGF0YV9yZXN1bHQAAE5OquyyYg9pdGVtX2lkc19yZXN1bHQAAABYquyyYgppdGVtc19pbmZvAFT1WarssmIFdWludDiAVfVZquyyYgtlbnVtX3Jlc3VsdABMVjJNB7NiEGtpbmRfbWV0YV9yZXN1bHQAJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZAAAWyhPJ7NiDm1pbnRjZmdfcmVzdWx04JNRN08ns2IGdWludDMyALCqPicqs2ILZW51bV9yZXN1bHQAAFZRJyqzYg5tb2R1bGVzX3Jlc3VsdAAA8OcaNbNiC25lYXJieV9pbmZvAIDC5uQ1s2IIc3RyaW5nW10AAF3T5TWzYg5uZnRpbmZvX3Jlc3VsdAAAuMqbWLNiC3BsYXllcl9pbmZvAAAAIFJas2IQcG9vbF9wYWlyX3Jlc3VsdAAAADhSWrNiDHBvb2xzX3Jlc3VsdKCyyfjRW7NiD3Byb2plY3RlZF9zdGF0ZQAAUNUhdbNiDnJlY2lwZXNfcmVzdWx0AABW1SF1s2IOcmVjaXBlc19yZXN1bHQAAM4GYXWzYgtlbnVtX3Jlc3VsdACw2ldhdbNiE3N0cmF0dW1fcmVtYWluaW5nW12AFbqaYnWzYhByZXNvdXJjZXNfcmVzdWx0AAAAONOIs2IVZW50aXR5X2xheW91dHNfcmVzdWx0AIDU2dyMs2IMc3RyYXR1bV9kYXRhgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXeCTUVdlurNiBnVpbnQzMgAAAFhlurNiC3ZvdGVfcmVzdWx0AFSkTV7Ks2INd29ybWhvbGVfaW5mb5AdnubmqullDHRhc2tfcmVzdWx0cwCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAAAANDS1iQx0YXNrX3Jlc3VsdHMAAAAAAJAMjQx0YXNrX3Jlc3VsdHMAAAAquqw2lQx0YXNrX3Jlc3VsdHMAAIhXM+nymgZzdHJpbmcAAGXXIIVMrAx0YXNrX3Jlc3VsdHMAfHZ5KoVMrAx0YXNrX3Jlc3VsdHMAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAQIxG7UixuhJyZXNvbHZlYWxsX3Jlc3VsdHPg4zVK7Uixug9yZXNvbHZlX3Jlc3VsdHMAAABAxZx1wwx0YXNrX3Jlc3VsdHMAAKDsGsRpxgx0YXNrX3Jlc3VsdHMAgM8uT8Vpxgx0YXNrX3Jlc3VsdHMAAAAqulwNxwx0YXNrX3Jlc3VsdHMAAAAgOzzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHMAwDSxRrXNzQx0YXNrX3Jlc3VsdHMAAACexqrS1Ax0YXNrX3Jlc3VsdHMAAAAAJEPj1Ax0YXNrX3Jlc3VsdHMAAABAJXNZ1Qx0YXNrX3Jlc3VsdHMAAAAAAFCv4Qx0YXNrX3Jlc3VsdHM='
33
38
  )
34
39
  export const abi = ABI.from(abiBlob)
35
40
  export namespace Types {
41
+ @Struct.type('abandonplot')
42
+ export class abandonplot extends Struct {
43
+ @Struct.field(UInt64)
44
+ declare plot_id: UInt64
45
+ }
36
46
  @Struct.type('packed_module')
37
47
  export class packed_module extends Struct {
38
48
  @Struct.field(UInt16)
@@ -47,6 +57,32 @@ export namespace Types {
47
57
  @Struct.field(packed_module, {optional: true})
48
58
  declare installed?: packed_module
49
59
  }
60
+ @Struct.type('cargo_item')
61
+ export class cargo_item extends Struct {
62
+ @Struct.field(UInt16)
63
+ declare item_id: UInt16
64
+ @Struct.field(UInt64)
65
+ declare stats: UInt64
66
+ @Struct.field(module_entry, {array: true})
67
+ declare modules: module_entry[]
68
+ @Struct.field(UInt32)
69
+ declare quantity: UInt32
70
+ @Struct.field(UInt64, {optional: true})
71
+ declare entity_id?: UInt64
72
+ }
73
+ @Struct.type('addcontrib')
74
+ export class addcontrib extends Struct {
75
+ @Struct.field(Name)
76
+ declare player: Name
77
+ @Struct.field(UInt64)
78
+ declare entity_id: UInt64
79
+ @Struct.field(Int64)
80
+ declare x: Int64
81
+ @Struct.field(Int64)
82
+ declare y: Int64
83
+ @Struct.field(cargo_item, {array: true})
84
+ declare bundle: cargo_item[]
85
+ }
50
86
  @Struct.type('cargo_ref')
51
87
  export class cargo_ref extends Struct {
52
88
  @Struct.field(UInt16)
@@ -55,11 +91,11 @@ export namespace Types {
55
91
  declare stats: UInt64
56
92
  @Struct.field(module_entry, {array: true})
57
93
  declare modules: module_entry[]
94
+ @Struct.field(UInt64, {optional: true})
95
+ declare entity_id?: UInt64
58
96
  }
59
97
  @Struct.type('addmodule')
60
98
  export class addmodule extends Struct {
61
- @Struct.field(Name)
62
- declare entity_type: Name
63
99
  @Struct.field(UInt64)
64
100
  declare entity_id: UInt64
65
101
  @Struct.field(UInt8)
@@ -78,39 +114,163 @@ export namespace Types {
78
114
  @Struct.field(Int64)
79
115
  declare y: Int64
80
116
  }
81
- @Struct.type('advance')
82
- export class advance extends Struct {
83
- @Struct.field('string')
84
- declare reveal: string
85
- @Struct.field(Checksum256)
86
- declare commit: Checksum256
117
+ @Struct.type('addoracle')
118
+ export class addoracle extends Struct {
119
+ @Struct.field(Name)
120
+ declare oracle_id: Name
87
121
  }
88
- @Struct.type('cargo_item')
89
- export class cargo_item extends Struct {
90
- @Struct.field(UInt16)
91
- declare item_id: UInt16
122
+ @Struct.type('ballot_credit')
123
+ export class ballot_credit extends Struct {
124
+ @Struct.field(Name)
125
+ declare account: Name
92
126
  @Struct.field(UInt64)
93
- declare stats: UInt64
94
- @Struct.field(module_entry, {array: true})
95
- declare modules: module_entry[]
127
+ declare amount: UInt64
128
+ }
129
+ @Struct.type('ballot_row')
130
+ export class ballot_row extends Struct {
131
+ @Struct.field(UInt64)
132
+ declare ballot_id: UInt64
133
+ @Struct.field(UInt8)
134
+ declare kind: UInt8
135
+ @Struct.field(UInt64)
136
+ declare subject: UInt64
96
137
  @Struct.field(UInt32)
97
- declare quantity: UInt32
138
+ declare seats: UInt32
139
+ @Struct.field(UInt32)
140
+ declare settled_epoch: UInt32
141
+ @Struct.field(UInt32, {array: true})
142
+ declare queue: UInt32[]
143
+ @Struct.field(ballot_credit, {array: true})
144
+ declare parked: ballot_credit[]
145
+ }
146
+ @Struct.type('ballot_seq_row')
147
+ export class ballot_seq_row extends Struct {
148
+ @Struct.field(UInt64)
149
+ declare next_id: UInt64
150
+ @Struct.field(UInt64)
151
+ declare cursor: UInt64
152
+ @Struct.field(UInt32)
153
+ declare page_rows: UInt32
154
+ }
155
+ @Struct.type('ballot_tally')
156
+ export class ballot_tally extends Struct {
157
+ @Struct.field(UInt32)
158
+ declare option: UInt32
159
+ @Struct.field(UInt64)
160
+ declare weight: UInt64
161
+ }
162
+ @Struct.type('ballotpicks_row')
163
+ export class ballotpicks_row extends Struct {
164
+ @Struct.field(Name)
165
+ declare account: Name
166
+ @Struct.field(UInt32, {array: true})
167
+ declare picks: UInt32[]
168
+ }
169
+ @Struct.type('ballotsettle_row')
170
+ export class ballotsettle_row extends Struct {
171
+ @Struct.field(UInt64)
172
+ declare ballot_id: UInt64
173
+ @Struct.field(UInt32)
174
+ declare round: UInt32
175
+ @Struct.field(UInt64)
176
+ declare cursor: UInt64
177
+ @Struct.field(UInt32)
178
+ declare target_epoch: UInt32
179
+ @Struct.field(ballot_tally, {array: true})
180
+ declare tallies: ballot_tally[]
181
+ @Struct.field(UInt32, {array: true})
182
+ declare seated: UInt32[]
98
183
  }
99
184
  @Struct.type('blend')
100
185
  export class blend extends Struct {
101
- @Struct.field(Name)
102
- declare entity_type: Name
103
186
  @Struct.field(UInt64)
104
187
  declare id: UInt64
105
188
  @Struct.field(cargo_item, {array: true})
106
189
  declare inputs: cargo_item[]
107
190
  }
191
+ @Struct.type('builder_lane')
192
+ export class builder_lane extends Struct {
193
+ @Struct.field(UInt8)
194
+ declare slot_index: UInt8
195
+ @Struct.field(UInt16)
196
+ declare speed: UInt16
197
+ @Struct.field(UInt32)
198
+ declare drain: UInt32
199
+ @Struct.field(UInt16)
200
+ declare output_pct: UInt16
201
+ }
202
+ @Struct.type('buildings_row')
203
+ export class buildings_row extends Struct {
204
+ @Struct.field(UInt64)
205
+ declare entity_id: UInt64
206
+ @Struct.field(UInt8)
207
+ declare building: UInt8
208
+ }
209
+ @Struct.type('buildjob')
210
+ export class buildjob extends Struct {
211
+ @Struct.field(UInt64)
212
+ declare target_id: UInt64
213
+ @Struct.field(UInt64)
214
+ declare dock_id: UInt64
215
+ @Struct.field(UInt16)
216
+ declare target_item_id: UInt16
217
+ @Struct.field(cargo_item, {array: true})
218
+ declare inputs: cargo_item[]
219
+ }
220
+ @Struct.type('coordinates')
221
+ export class coordinates extends Struct {
222
+ @Struct.field(Int64)
223
+ declare x: Int64
224
+ @Struct.field(Int64)
225
+ declare y: Int64
226
+ @Struct.field(UInt16, {optional: true})
227
+ declare z?: UInt16
228
+ }
229
+ @Struct.type('buildjob_row')
230
+ export class buildjob_row extends Struct {
231
+ @Struct.field(UInt64)
232
+ declare id: UInt64
233
+ @Struct.field(UInt64)
234
+ declare building: UInt64
235
+ @Struct.field(UInt8)
236
+ declare socket: UInt8
237
+ @Struct.field(UInt64)
238
+ declare target: UInt64
239
+ @Struct.field(Name)
240
+ declare owner: Name
241
+ @Struct.field(coordinates)
242
+ declare coords: coordinates
243
+ @Struct.field(TimePoint)
244
+ declare starts_at: TimePoint
245
+ @Struct.field(TimePoint)
246
+ declare completes_at: TimePoint
247
+ @Struct.field(UInt16)
248
+ declare target_item_id: UInt16
249
+ @Struct.field(cargo_item, {array: true})
250
+ declare cargo: cargo_item[]
251
+ @Struct.field('bool')
252
+ declare deposited: boolean
253
+ @Struct.field(TimePoint)
254
+ declare arrives_at: TimePoint
255
+ }
256
+ @Struct.type('buildjobs_result')
257
+ export class buildjobs_result extends Struct {
258
+ @Struct.field(buildjob_row, {array: true})
259
+ declare jobs: buildjob_row[]
260
+ }
261
+ @Struct.type('buildplot')
262
+ export class buildplot extends Struct {
263
+ @Struct.field(UInt64)
264
+ declare builder_id: UInt64
265
+ @Struct.field(UInt64)
266
+ declare plot_id: UInt64
267
+ }
108
268
  @Struct.type('cancel')
109
269
  export class cancel extends Struct {
110
- @Struct.field(Name)
111
- declare entity_type: Name
112
270
  @Struct.field(UInt64)
113
271
  declare id: UInt64
272
+ @Struct.field(UInt8)
273
+ declare lane_key: UInt8
114
274
  @Struct.field(UInt64)
115
275
  declare count: UInt64
116
276
  }
@@ -136,6 +296,25 @@ export namespace Types {
136
296
  @Struct.field(entity_ref, {array: true, optional: true})
137
297
  declare group_members?: entity_ref[]
138
298
  }
299
+ @Struct.type('cancelbuild')
300
+ export class cancelbuild extends Struct {
301
+ @Struct.field(UInt64)
302
+ declare job_id: UInt64
303
+ }
304
+ @Struct.type('cancelcivic')
305
+ export class cancelcivic extends Struct {
306
+ @Struct.field(UInt64)
307
+ declare building: UInt64
308
+ @Struct.field(UInt8)
309
+ declare lane_key: UInt8
310
+ @Struct.field(UInt64)
311
+ declare from_id: UInt64
312
+ }
313
+ @Struct.type('cancelcraft')
314
+ export class cancelcraft extends Struct {
315
+ @Struct.field(UInt64)
316
+ declare job_id: UInt64
317
+ }
139
318
  @Struct.type('cargo_row')
140
319
  export class cargo_row extends Struct {
141
320
  @Struct.field(UInt64)
@@ -150,6 +329,8 @@ export namespace Types {
150
329
  declare stats: UInt64
151
330
  @Struct.field(module_entry, {array: true})
152
331
  declare modules: module_entry[]
332
+ @Struct.field(UInt64, {optional: true})
333
+ declare sequence_id?: UInt64
153
334
  }
154
335
  @Struct.type('cargo_view')
155
336
  export class cargo_view extends Struct {
@@ -163,16 +344,193 @@ export namespace Types {
163
344
  declare quantity: UInt32
164
345
  @Struct.field(UInt64)
165
346
  declare id: UInt64
347
+ @Struct.field(UInt64, {optional: true})
348
+ declare entity_id?: UInt64
166
349
  }
167
- @Struct.type('claimstarter')
168
- export class claimstarter extends Struct {
350
+ @Struct.type('castballot')
351
+ export class castballot extends Struct {
169
352
  @Struct.field(Name)
170
- declare account: Name
353
+ declare player: Name
354
+ @Struct.field(UInt64)
355
+ declare ballot_id: UInt64
356
+ @Struct.field(UInt32, {array: true})
357
+ declare picks: UInt32[]
358
+ }
359
+ @Struct.type('civic_grant')
360
+ export class civic_grant extends Struct {
361
+ @Struct.field(UInt8)
362
+ declare kind: UInt8
363
+ @Struct.field(UInt8)
364
+ declare building: UInt8
365
+ @Struct.field(UInt8)
366
+ declare stat: UInt8
367
+ @Struct.field(UInt16)
368
+ declare value: UInt16
369
+ }
370
+ @Struct.type('charter_node_def')
371
+ export class charter_node_def extends Struct {
372
+ @Struct.field(UInt32)
373
+ declare node_id: UInt32
374
+ @Struct.field(UInt64)
375
+ declare cost: UInt64
376
+ @Struct.field(UInt32, {array: true})
377
+ declare prereqs: UInt32[]
378
+ @Struct.field(civic_grant, {array: true})
379
+ declare grants: civic_grant[]
380
+ @Struct.field(UInt16)
381
+ declare exclusion_group: UInt16
382
+ @Struct.field(UInt8)
383
+ declare repeat_cap: UInt8
384
+ }
385
+ @Struct.type('charter_ready_view')
386
+ export class charter_ready_view extends Struct {
387
+ @Struct.field(Int64)
388
+ declare x: Int64
389
+ @Struct.field(Int64)
390
+ declare y: Int64
391
+ @Struct.field(UInt32)
392
+ declare mandate: UInt32
393
+ }
394
+ @Struct.type('charter_view')
395
+ export class charter_view extends Struct {
396
+ @Struct.field(UInt32)
397
+ declare node_id: UInt32
398
+ @Struct.field(UInt16)
399
+ declare repeats: UInt16
400
+ }
401
+ @Struct.type('seat_view')
402
+ export class seat_view extends Struct {
403
+ @Struct.field(UInt32)
404
+ declare node_id: UInt32
405
+ @Struct.field(UInt64)
406
+ declare cost: UInt64
407
+ @Struct.field(UInt64)
408
+ declare progress: UInt64
409
+ @Struct.field(UInt64)
410
+ declare gap: UInt64
411
+ }
412
+ @Struct.type('progress_view')
413
+ export class progress_view extends Struct {
414
+ @Struct.field(UInt32)
415
+ declare node_id: UInt32
416
+ @Struct.field(UInt64)
417
+ declare amount: UInt64
418
+ }
419
+ @Struct.type('charter_result')
420
+ export class charter_result extends Struct {
421
+ @Struct.field(UInt64)
422
+ declare location_id: UInt64
423
+ @Struct.field(UInt64)
424
+ declare lifetime: UInt64
425
+ @Struct.field(UInt64)
426
+ declare spent: UInt64
427
+ @Struct.field(UInt64)
428
+ declare unassigned: UInt64
429
+ @Struct.field(UInt32)
430
+ declare mandate: UInt32
431
+ @Struct.field(UInt64)
432
+ declare next_cost: UInt64
433
+ @Struct.field('bool')
434
+ declare prereqs_met: boolean
435
+ @Struct.field('bool')
436
+ declare buildable: boolean
437
+ @Struct.field(UInt32)
438
+ declare epoch: UInt32
439
+ @Struct.field(charter_view, {array: true})
440
+ declare built: charter_view[]
441
+ @Struct.field(UInt64)
442
+ declare ballot_id: UInt64
443
+ @Struct.field('bool')
444
+ declare settling: boolean
445
+ @Struct.field(seat_view, {array: true})
446
+ declare queue: seat_view[]
447
+ @Struct.field(progress_view, {array: true})
448
+ declare progress: progress_view[]
449
+ }
450
+ @Struct.type('charter_tree_result')
451
+ export class charter_tree_result extends Struct {
452
+ @Struct.field(charter_node_def, {array: true})
453
+ declare nodes: charter_node_def[]
454
+ }
455
+ @Struct.type('charterready')
456
+ export class charterready extends Struct {
171
457
  @Struct.field(Int64)
172
458
  declare x: Int64
173
459
  @Struct.field(Int64)
174
460
  declare y: Int64
175
461
  }
462
+ @Struct.type('charterready_result')
463
+ export class charterready_result extends Struct {
464
+ @Struct.field(charter_ready_view, {array: true})
465
+ declare worlds: charter_ready_view[]
466
+ }
467
+ @Struct.type('citizenship_row')
468
+ export class citizenship_row extends Struct {
469
+ @Struct.field(UInt64)
470
+ declare location_id: UInt64
471
+ @Struct.field(UInt64)
472
+ declare lifetime: UInt64
473
+ @Struct.field(UInt64)
474
+ declare active: UInt64
475
+ @Struct.field(UInt32)
476
+ declare active_epoch: UInt32
477
+ }
478
+ @Struct.type('civicconfig_row')
479
+ export class civicconfig_row extends Struct {
480
+ @Struct.field(Name)
481
+ declare civic_owner: Name
482
+ }
483
+ @Struct.type('civicshuttle')
484
+ export class civicshuttle extends Struct {
485
+ @Struct.field(UInt64)
486
+ declare building: UInt64
487
+ @Struct.field(UInt64)
488
+ declare from_id: UInt64
489
+ @Struct.field(UInt64)
490
+ declare to_id: UInt64
491
+ @Struct.field(cargo_item, {array: true})
492
+ declare items: cargo_item[]
493
+ }
494
+ @Struct.type('claim_row')
495
+ export class claim_row extends Struct {
496
+ @Struct.field(Name)
497
+ declare owner: Name
498
+ }
499
+ @Struct.type('claimbuild')
500
+ export class claimbuild extends Struct {
501
+ @Struct.field(UInt64)
502
+ declare job_id: UInt64
503
+ }
504
+ @Struct.type('claimcraft')
505
+ export class claimcraft extends Struct {
506
+ @Struct.field(UInt64)
507
+ declare job_id: UInt64
508
+ @Struct.field(UInt64)
509
+ declare ship_id: UInt64
510
+ }
511
+ @Struct.type('cluster_slot')
512
+ export class cluster_slot extends Struct {
513
+ @Struct.field(UInt64)
514
+ declare hub: UInt64
515
+ @Struct.field(Int8)
516
+ declare gx: Int8
517
+ @Struct.field(Int8)
518
+ declare gy: Int8
519
+ }
520
+ @Struct.type('claimplot')
521
+ export class claimplot extends Struct {
522
+ @Struct.field(UInt64)
523
+ declare builder_id: UInt64
524
+ @Struct.field(UInt16)
525
+ declare target_item_id: UInt16
526
+ @Struct.field(cluster_slot)
527
+ declare slot: cluster_slot
528
+ }
529
+ @Struct.type('claimstarter')
530
+ export class claimstarter extends Struct {
531
+ @Struct.field(Name)
532
+ declare owner: Name
533
+ }
176
534
  @Struct.type('cleanrsvp')
177
535
  export class cleanrsvp extends Struct {
178
536
  @Struct.field(UInt64)
@@ -189,8 +547,66 @@ export namespace Types {
189
547
  @Struct.field(UInt64, {optional: true})
190
548
  declare max_rows?: UInt64
191
549
  }
550
+ @Struct.type('closeepoch')
551
+ export class closeepoch extends Struct {
552
+ @Struct.field(UInt64)
553
+ declare epoch: UInt64
554
+ }
555
+ @Struct.type('cluster_cell')
556
+ export class cluster_cell extends Struct {
557
+ @Struct.field(Int8)
558
+ declare gx: Int8
559
+ @Struct.field(Int8)
560
+ declare gy: Int8
561
+ @Struct.field(UInt64)
562
+ declare entity: UInt64
563
+ }
564
+ @Struct.type('cluster_row')
565
+ export class cluster_row extends Struct {
566
+ @Struct.field(UInt64)
567
+ declare root: UInt64
568
+ @Struct.field(cluster_cell, {array: true})
569
+ declare cells: cluster_cell[]
570
+ }
571
+ @Struct.type('cluster_source')
572
+ export class cluster_source extends Struct {
573
+ @Struct.field(UInt64)
574
+ declare source_id: UInt64
575
+ @Struct.field(cargo_item, {array: true})
576
+ declare items: cargo_item[]
577
+ }
578
+ @Struct.type('clustercraft')
579
+ export class clustercraft extends Struct {
580
+ @Struct.field(UInt64)
581
+ declare id: UInt64
582
+ @Struct.field(UInt16)
583
+ declare recipe_id: UInt16
584
+ @Struct.field(UInt32)
585
+ declare quantity: UInt32
586
+ @Struct.field(cluster_source, {array: true})
587
+ declare sources: cluster_source[]
588
+ @Struct.field(UInt64, {optional: true})
589
+ declare target?: UInt64
590
+ @Struct.field(UInt8, {optional: true})
591
+ declare slot?: UInt8
592
+ }
192
593
  @Struct.type('commit')
193
594
  export class commit extends Struct {
595
+ @Struct.field(Name)
596
+ declare oracle_id: Name
597
+ @Struct.field(UInt64)
598
+ declare epoch: UInt64
599
+ @Struct.field(Checksum256)
600
+ declare commit: Checksum256
601
+ }
602
+ @Struct.type('commit_row')
603
+ export class commit_row extends Struct {
604
+ @Struct.field(UInt64)
605
+ declare id: UInt64
606
+ @Struct.field(UInt64)
607
+ declare epoch: UInt64
608
+ @Struct.field(Name)
609
+ declare oracle_id: Name
194
610
  @Struct.field(Checksum256)
195
611
  declare commit: Checksum256
196
612
  }
@@ -228,112 +644,293 @@ export namespace Types {
228
644
  @Struct.field(game_config)
229
645
  declare config: game_config
230
646
  }
231
- @Struct.type('coordinates')
232
- export class coordinates extends Struct {
233
- @Struct.field(Int64)
234
- declare x: Int64
235
- @Struct.field(Int64)
236
- declare y: Int64
237
- @Struct.field(UInt16, {optional: true})
238
- declare z?: UInt16
239
- }
240
- @Struct.type('task')
241
- export class task extends Struct {
647
+ @Struct.type('coupling')
648
+ export class coupling extends Struct {
649
+ @Struct.field(entity_ref)
650
+ declare counterpart: entity_ref
651
+ @Struct.field(UInt64)
652
+ declare hold: UInt64
242
653
  @Struct.field(UInt8)
243
- declare type: UInt8
654
+ declare kind: UInt8
655
+ }
656
+ @Struct.type('craft')
657
+ export class craft extends Struct {
658
+ @Struct.field(UInt64)
659
+ declare id: UInt64
660
+ @Struct.field(UInt16)
661
+ declare recipe_id: UInt16
244
662
  @Struct.field(UInt32)
245
- declare duration: UInt32
246
- @Struct.field(UInt8)
247
- declare cancelable: UInt8
248
- @Struct.field(coordinates, {optional: true})
249
- declare coordinates?: coordinates
663
+ declare quantity: UInt32
250
664
  @Struct.field(cargo_item, {array: true})
251
- declare cargo: cargo_item[]
252
- @Struct.field(entity_ref, {optional: true})
253
- declare entitytarget?: entity_ref
665
+ declare inputs: cargo_item[]
254
666
  @Struct.field(UInt64, {optional: true})
255
- declare entitygroup?: UInt64
256
- @Struct.field(UInt16, {optional: true})
257
- declare energy_cost?: UInt16
667
+ declare target?: UInt64
668
+ @Struct.field(UInt8, {optional: true})
669
+ declare slot?: UInt8
258
670
  }
259
- @Struct.type('schedule')
260
- export class schedule extends Struct {
261
- @Struct.field(TimePoint)
262
- declare started: TimePoint
263
- @Struct.field(task, {array: true})
264
- declare tasks: task[]
671
+ @Struct.type('crafter_lane')
672
+ export class crafter_lane extends Struct {
673
+ @Struct.field(UInt8)
674
+ declare slot_index: UInt8
675
+ @Struct.field(UInt16)
676
+ declare speed: UInt16
677
+ @Struct.field(UInt32)
678
+ declare drain: UInt32
679
+ @Struct.field(UInt16)
680
+ declare output_pct: UInt16
681
+ }
682
+ @Struct.type('craftjob')
683
+ export class craftjob extends Struct {
684
+ @Struct.field(UInt64)
685
+ declare ship_id: UInt64
686
+ @Struct.field(UInt64)
687
+ declare workshop_id: UInt64
688
+ @Struct.field(UInt16)
689
+ declare recipe_id: UInt16
690
+ @Struct.field(UInt32)
691
+ declare quantity: UInt32
692
+ @Struct.field(cargo_item, {array: true})
693
+ declare inputs: cargo_item[]
265
694
  }
266
- @Struct.type('container_row')
267
- export class container_row extends Struct {
695
+ @Struct.type('craftjob_row')
696
+ export class craftjob_row extends Struct {
268
697
  @Struct.field(UInt64)
269
698
  declare id: UInt64
699
+ @Struct.field(UInt64)
700
+ declare building: UInt64
701
+ @Struct.field(UInt8)
702
+ declare socket: UInt8
270
703
  @Struct.field(Name)
271
704
  declare owner: Name
272
- @Struct.field('string')
273
- declare name: string
705
+ @Struct.field(UInt64)
706
+ declare ship_id: UInt64
274
707
  @Struct.field(coordinates)
275
- declare coordinates: coordinates
708
+ declare coords: coordinates
709
+ @Struct.field(TimePoint)
710
+ declare starts_at: TimePoint
711
+ @Struct.field(TimePoint)
712
+ declare completes_at: TimePoint
713
+ @Struct.field(UInt16)
714
+ declare recipe_id: UInt16
276
715
  @Struct.field(UInt32)
277
- declare hullmass: UInt32
716
+ declare quantity: UInt32
278
717
  @Struct.field(UInt32)
279
- declare capacity: UInt32
718
+ declare energy_paid: UInt32
719
+ @Struct.field(cargo_item, {array: true})
720
+ declare cargo: cargo_item[]
721
+ @Struct.field('bool')
722
+ declare deposited: boolean
723
+ @Struct.field(TimePoint)
724
+ declare arrives_at: TimePoint
725
+ }
726
+ @Struct.type('craftjobs_result')
727
+ export class craftjobs_result extends Struct {
728
+ @Struct.field(craftjob_row, {array: true})
729
+ declare jobs: craftjob_row[]
730
+ }
731
+ @Struct.type('dbgcredit')
732
+ export class dbgcredit extends Struct {
733
+ @Struct.field(Name)
734
+ declare owner: Name
735
+ @Struct.field(Int64)
736
+ declare x: Int64
737
+ @Struct.field(Int64)
738
+ declare y: Int64
739
+ @Struct.field(UInt64)
740
+ declare amount_atomic: UInt64
741
+ @Struct.field(UInt32, {optional: true})
742
+ declare node?: UInt32
743
+ }
744
+ @Struct.type('dbgjobs')
745
+ export class dbgjobs extends Struct {
746
+ @Struct.field(craftjob_row, {array: true})
747
+ declare crafts: craftjob_row[]
748
+ @Struct.field(buildjob_row, {array: true})
749
+ declare builds: buildjob_row[]
750
+ }
751
+ @Struct.type('dbgmandate')
752
+ export class dbgmandate extends Struct {
753
+ @Struct.field(Int64)
754
+ declare x: Int64
755
+ @Struct.field(Int64)
756
+ declare y: Int64
280
757
  @Struct.field(UInt32)
281
- declare cargomass: UInt32
282
- @Struct.field(schedule, {optional: true})
283
- declare schedule?: schedule
758
+ declare node_id: UInt32
759
+ }
760
+ @Struct.type('dbgoldjobs')
761
+ export class dbgoldjobs extends Struct {
762
+ @Struct.field(craftjob_row, {array: true})
763
+ declare crafts: craftjob_row[]
764
+ @Struct.field(buildjob_row, {array: true})
765
+ declare builds: buildjob_row[]
766
+ }
767
+ @Struct.type('dbgpagerows')
768
+ export class dbgpagerows extends Struct {
769
+ @Struct.field(UInt32)
770
+ declare rows: UInt32
771
+ }
772
+ @Struct.type('reserved_window')
773
+ export class reserved_window extends Struct {
284
774
  @Struct.field(UInt64)
285
- declare stats: UInt64
775
+ declare id: UInt64
776
+ @Struct.field(TimePoint)
777
+ declare arrival: TimePoint
778
+ @Struct.field(TimePoint)
779
+ declare starts_at: TimePoint
780
+ @Struct.field(TimePoint)
781
+ declare completes_at: TimePoint
782
+ }
783
+ @Struct.type('socket_candidate')
784
+ export class socket_candidate extends Struct {
785
+ @Struct.field(reserved_window, {array: true})
786
+ declare windows: reserved_window[]
787
+ @Struct.field(UInt32)
788
+ declare duration: UInt32
286
789
  @Struct.field(UInt16)
287
- declare item_id: UInt16
790
+ declare active: UInt16
288
791
  }
289
- @Struct.type('craft')
290
- export class craft extends Struct {
291
- @Struct.field(Name)
292
- declare entity_type: Name
792
+ @Struct.type('dbgpick')
793
+ export class dbgpick extends Struct {
794
+ @Struct.field(socket_candidate, {array: true})
795
+ declare sockets: socket_candidate[]
293
796
  @Struct.field(UInt64)
294
797
  declare id: UInt64
798
+ @Struct.field(TimePoint)
799
+ declare arrival: TimePoint
295
800
  @Struct.field(UInt16)
296
- declare recipe_id: UInt16
297
- @Struct.field(UInt32)
298
- declare quantity: UInt32
299
- @Struct.field(cargo_item, {array: true})
300
- declare inputs: cargo_item[]
801
+ declare cap: UInt16
301
802
  }
302
- @Struct.type('crafter_stats')
303
- export class crafter_stats extends Struct {
304
- @Struct.field(UInt16)
305
- declare speed: UInt16
306
- @Struct.field(UInt16)
307
- declare drain: UInt16
803
+ @Struct.type('dbgplace')
804
+ export class dbgplace extends Struct {
805
+ @Struct.field(reserved_window, {array: true})
806
+ declare windows: reserved_window[]
807
+ @Struct.field(UInt64)
808
+ declare id: UInt64
809
+ @Struct.field(TimePoint)
810
+ declare arrival: TimePoint
811
+ @Struct.field(UInt32)
812
+ declare duration: UInt32
308
813
  }
309
- @Struct.type('createentity')
310
- export class createentity extends Struct {
311
- @Struct.field(Name)
312
- declare owner: Name
814
+ @Struct.type('dbgpurge')
815
+ export class dbgpurge extends Struct {
313
816
  @Struct.field(Name)
314
- declare entity_type: Name
315
- @Struct.field('string')
316
- declare entity_name: string
817
+ declare table_name: Name
818
+ @Struct.field(Name, {optional: true})
819
+ declare scope?: Name
820
+ }
821
+ @Struct.type('dbgrepack')
822
+ export class dbgrepack extends Struct {
823
+ @Struct.field(reserved_window, {array: true})
824
+ declare windows: reserved_window[]
825
+ @Struct.field(UInt64)
826
+ declare cancelled_id: UInt64
827
+ @Struct.field(TimePoint)
828
+ declare now: TimePoint
829
+ }
830
+ @Struct.type('dbgseats')
831
+ export class dbgseats extends Struct {
317
832
  @Struct.field(Int64)
318
833
  declare x: Int64
319
834
  @Struct.field(Int64)
320
835
  declare y: Int64
836
+ @Struct.field(UInt32)
837
+ declare seats: UInt32
838
+ }
839
+ @Struct.type('decomp_bucket')
840
+ export class decomp_bucket extends Struct {
841
+ @Struct.field(UInt8)
842
+ declare category: UInt8
843
+ @Struct.field(UInt8)
844
+ declare tier: UInt8
845
+ @Struct.field(UInt32)
846
+ declare raw_mass: UInt32
847
+ }
848
+ @Struct.type('decomp_result')
849
+ export class decomp_result extends Struct {
850
+ @Struct.field(UInt16)
851
+ declare item_id: UInt16
852
+ @Struct.field(UInt64)
853
+ declare processed_mass: UInt64
854
+ @Struct.field(decomp_bucket, {array: true})
855
+ declare buckets: decomp_bucket[]
856
+ }
857
+ @Struct.type('delentity')
858
+ export class delentity extends Struct {
859
+ @Struct.field(UInt64)
860
+ declare entity_id: UInt64
861
+ }
862
+ @Struct.type('demand_result')
863
+ export class demand_result extends Struct {
864
+ @Struct.field(UInt8)
865
+ declare abundant_mask: UInt8
866
+ @Struct.field(UInt8)
867
+ declare lacking_mask: UInt8
868
+ @Struct.field(UInt8)
869
+ declare acute: UInt8
870
+ @Struct.field(UInt64, {array: true})
871
+ declare need_fp: UInt64[]
872
+ @Struct.field(UInt32)
873
+ declare epoch: UInt32
321
874
  }
322
875
  @Struct.type('demolish')
323
876
  export class demolish extends Struct {
324
- @Struct.field(Name)
325
- declare entity_type: Name
326
877
  @Struct.field(UInt64)
327
878
  declare entity_id: UInt64
328
879
  }
329
880
  @Struct.type('deploy')
330
881
  export class deploy extends Struct {
331
- @Struct.field(Name)
332
- declare entity_type: Name
333
882
  @Struct.field(UInt64)
334
883
  declare id: UInt64
335
884
  @Struct.field(cargo_ref)
336
885
  declare ref: cargo_ref
886
+ @Struct.field(cluster_slot, {optional: true})
887
+ declare slot?: cluster_slot
888
+ }
889
+ @Struct.type('storage_row')
890
+ export class storage_row extends Struct {
891
+ @Struct.field(UInt64)
892
+ declare id: UInt64
893
+ @Struct.field(Name)
894
+ declare owner: Name
895
+ @Struct.field(UInt64)
896
+ declare item_id: UInt64
897
+ @Struct.field(UInt64)
898
+ declare quantity: UInt64
899
+ @Struct.field(UInt64)
900
+ declare stats: UInt64
901
+ @Struct.field(module_entry, {array: true})
902
+ declare modules: module_entry[]
903
+ @Struct.field(UInt64, {optional: true})
904
+ declare sequence_id?: UInt64
905
+ }
906
+ @Struct.type('depot_view')
907
+ export class depot_view extends Struct {
908
+ @Struct.field(UInt64)
909
+ declare player_cap: UInt64
910
+ @Struct.field(UInt64)
911
+ declare stored_mass: UInt64
912
+ @Struct.field(UInt64)
913
+ declare reserved_mass: UInt64
914
+ @Struct.field(storage_row, {array: true})
915
+ declare rows: storage_row[]
916
+ }
917
+ @Struct.type('depotstore')
918
+ export class depotstore extends Struct {
919
+ @Struct.field(UInt64)
920
+ declare ship_id: UInt64
921
+ @Struct.field(UInt64)
922
+ declare depot_id: UInt64
923
+ @Struct.field(cargo_item, {array: true})
924
+ declare items: cargo_item[]
925
+ }
926
+ @Struct.type('depottake')
927
+ export class depottake extends Struct {
928
+ @Struct.field(UInt64)
929
+ declare ship_id: UInt64
930
+ @Struct.field(UInt64)
931
+ declare depot_id: UInt64
932
+ @Struct.field(cargo_item, {array: true})
933
+ declare items: cargo_item[]
337
934
  }
338
935
  @Struct.type('descentity')
339
936
  export class descentity extends Struct {
@@ -353,58 +950,141 @@ export namespace Types {
353
950
  }
354
951
  @Struct.type('energy_stats')
355
952
  export class energy_stats extends Struct {
356
- @Struct.field(UInt16)
357
- declare capacity: UInt16
358
- @Struct.field(UInt16)
359
- declare recharge: UInt16
953
+ @Struct.field(UInt32)
954
+ declare capacity: UInt32
955
+ @Struct.field(UInt32)
956
+ declare recharge: UInt32
360
957
  }
361
958
  @Struct.type('entity_current_state')
362
959
  export class entity_current_state extends Struct {
363
960
  @Struct.field(coordinates)
364
961
  declare coordinates: coordinates
365
- @Struct.field(UInt16)
366
- declare energy: UInt16
367
- }
368
- @Struct.type('loader_stats')
369
- export class loader_stats extends Struct {
370
962
  @Struct.field(UInt32)
371
- declare mass: UInt32
372
- @Struct.field(UInt16)
373
- declare thrust: UInt16
374
- @Struct.field(UInt8)
375
- declare quantity: UInt8
963
+ declare energy: UInt32
376
964
  }
377
965
  @Struct.type('movement_stats')
378
966
  export class movement_stats extends Struct {
379
967
  @Struct.field(UInt32)
380
968
  declare thrust: UInt32
969
+ @Struct.field(UInt32)
970
+ declare drain: UInt32
971
+ }
972
+ @Struct.type('warp_stats')
973
+ export class warp_stats extends Struct {
974
+ @Struct.field(UInt32)
975
+ declare range: UInt32
976
+ }
977
+ @Struct.type('hauler_tier_cap')
978
+ export class hauler_tier_cap extends Struct {
979
+ @Struct.field(UInt8)
980
+ declare tier: UInt8
981
+ @Struct.field(UInt8)
982
+ declare capacity: UInt8
983
+ }
984
+ @Struct.type('hauler_stats')
985
+ export class hauler_stats extends Struct {
986
+ @Struct.field(UInt8)
987
+ declare capacity: UInt8
381
988
  @Struct.field(UInt16)
382
- declare drain: UInt16
989
+ declare efficiency: UInt16
990
+ @Struct.field(UInt32)
991
+ declare drain: UInt32
992
+ @Struct.field(hauler_tier_cap, {array: true})
993
+ declare capacity_by_tier: hauler_tier_cap[]
383
994
  }
384
- @Struct.type('gatherer_stats')
385
- export class gatherer_stats extends Struct {
995
+ @Struct.type('gatherer_lane')
996
+ export class gatherer_lane extends Struct {
997
+ @Struct.field(UInt8)
998
+ declare slot_index: UInt8
386
999
  @Struct.field(UInt16)
387
1000
  declare yield: UInt16
388
- @Struct.field(UInt16)
389
- declare drain: UInt16
1001
+ @Struct.field(UInt32)
1002
+ declare drain: UInt32
390
1003
  @Struct.field(UInt16)
391
1004
  declare depth: UInt16
392
1005
  @Struct.field(UInt16)
393
- declare speed: UInt16
1006
+ declare output_pct: UInt16
394
1007
  }
395
- @Struct.type('hauler_stats')
396
- export class hauler_stats extends Struct {
1008
+ @Struct.type('loader_lane')
1009
+ export class loader_lane extends Struct {
397
1010
  @Struct.field(UInt8)
398
- declare capacity: UInt8
1011
+ declare slot_index: UInt8
1012
+ @Struct.field(UInt32)
1013
+ declare mass: UInt32
399
1014
  @Struct.field(UInt16)
400
- declare efficiency: UInt16
1015
+ declare thrust: UInt16
1016
+ @Struct.field(UInt16)
1017
+ declare output_pct: UInt16
1018
+ }
1019
+ @Struct.type('launcher_stats')
1020
+ export class launcher_stats extends Struct {
1021
+ @Struct.field(UInt16)
1022
+ declare charge_rate: UInt16
1023
+ @Struct.field(UInt16)
1024
+ declare velocity: UInt16
401
1025
  @Struct.field(UInt16)
402
1026
  declare drain: UInt16
403
1027
  }
404
- @Struct.type('warp_stats')
405
- export class warp_stats extends Struct {
1028
+ @Struct.type('refit_op')
1029
+ export class refit_op extends Struct {
1030
+ @Struct.field(UInt8)
1031
+ declare op: UInt8
1032
+ @Struct.field(UInt8)
1033
+ declare slot: UInt8
1034
+ }
1035
+ @Struct.type('task')
1036
+ export class task extends Struct {
1037
+ @Struct.field(UInt8)
1038
+ declare type: UInt8
406
1039
  @Struct.field(UInt32)
407
- declare range: UInt32
1040
+ declare duration: UInt32
1041
+ @Struct.field(UInt8)
1042
+ declare cancelable: UInt8
1043
+ @Struct.field(coordinates, {optional: true})
1044
+ declare coordinates?: coordinates
1045
+ @Struct.field(cargo_item, {array: true})
1046
+ declare cargo: cargo_item[]
1047
+ @Struct.field(coupling, {array: true})
1048
+ declare couplings: coupling[]
1049
+ @Struct.field(entity_ref, {optional: true})
1050
+ declare subject?: entity_ref
1051
+ @Struct.field(UInt64, {optional: true})
1052
+ declare entitygroup?: UInt64
1053
+ @Struct.field(UInt32, {optional: true})
1054
+ declare energy_cost?: UInt32
1055
+ @Struct.field(UInt16, {optional: true})
1056
+ declare target_item_id?: UInt16
1057
+ @Struct.field(refit_op, {optional: true})
1058
+ declare refit?: refit_op
1059
+ @Struct.field(UInt32, {optional: true})
1060
+ declare charter_node?: UInt32
1061
+ }
1062
+ @Struct.type('schedule')
1063
+ export class schedule extends Struct {
1064
+ @Struct.field(TimePoint)
1065
+ declare started: TimePoint
1066
+ @Struct.field(task, {array: true})
1067
+ declare tasks: task[]
1068
+ }
1069
+ @Struct.type('lane')
1070
+ export class lane extends Struct {
1071
+ @Struct.field(UInt8)
1072
+ declare lane_key: UInt8
1073
+ @Struct.field(schedule)
1074
+ declare schedule: schedule
1075
+ }
1076
+ @Struct.type('hold')
1077
+ export class hold extends Struct {
1078
+ @Struct.field(UInt64)
1079
+ declare id: UInt64
1080
+ @Struct.field(UInt8)
1081
+ declare kind: UInt8
1082
+ @Struct.field(entity_ref)
1083
+ declare counterpart: entity_ref
1084
+ @Struct.field(TimePoint)
1085
+ declare until: TimePoint
1086
+ @Struct.field(UInt32)
1087
+ declare incoming_mass: UInt32
408
1088
  }
409
1089
  @Struct.type('entity_info')
410
1090
  export class entity_info extends Struct {
@@ -418,51 +1098,53 @@ export namespace Types {
418
1098
  declare entity_name: string
419
1099
  @Struct.field(coordinates)
420
1100
  declare coordinates: coordinates
1101
+ @Struct.field(UInt16)
1102
+ declare item_id: UInt16
421
1103
  @Struct.field(UInt32)
422
1104
  declare cargomass: UInt32
423
1105
  @Struct.field(cargo_view, {array: true})
424
1106
  declare cargo: cargo_view[]
425
- @Struct.field(loader_stats, {optional: true})
426
- declare loaders?: loader_stats
427
1107
  @Struct.field(module_entry, {array: true})
428
1108
  declare modules: module_entry[]
429
- @Struct.field(UInt16, {optional: true})
430
- declare energy?: UInt16
1109
+ @Struct.field(UInt32, {optional: true})
1110
+ declare energy?: UInt32
431
1111
  @Struct.field(UInt32, {optional: true})
432
1112
  declare hullmass?: UInt32
1113
+ @Struct.field(UInt32, {optional: true})
1114
+ declare capacity?: UInt32
433
1115
  @Struct.field(movement_stats, {optional: true})
434
1116
  declare engines?: movement_stats
1117
+ @Struct.field(warp_stats, {optional: true})
1118
+ declare warp?: warp_stats
435
1119
  @Struct.field(energy_stats, {optional: true})
436
1120
  declare generator?: energy_stats
437
- @Struct.field(UInt32, {optional: true})
438
- declare capacity?: UInt32
439
- @Struct.field(gatherer_stats, {optional: true})
440
- declare gatherer?: gatherer_stats
441
1121
  @Struct.field(hauler_stats, {optional: true})
442
1122
  declare hauler?: hauler_stats
443
- @Struct.field(warp_stats, {optional: true})
444
- declare warp?: warp_stats
445
- @Struct.field(crafter_stats, {optional: true})
446
- declare crafter?: crafter_stats
447
- @Struct.field('bool')
448
- declare is_idle: boolean
449
- @Struct.field(task, {optional: true})
450
- declare current_task?: task
451
- @Struct.field(UInt32)
452
- declare current_task_elapsed: UInt32
453
- @Struct.field(UInt32)
454
- declare current_task_remaining: UInt32
455
- @Struct.field(task, {array: true})
456
- declare pending_tasks: task[]
457
- @Struct.field(TimePoint, {optional: true})
458
- declare idle_at?: TimePoint
459
- @Struct.field(schedule, {optional: true})
460
- declare schedule?: schedule
1123
+ @Struct.field(gatherer_lane, {array: true})
1124
+ declare gatherer_lanes: gatherer_lane[]
1125
+ @Struct.field(crafter_lane, {array: true})
1126
+ declare crafter_lanes: crafter_lane[]
1127
+ @Struct.field(builder_lane, {array: true})
1128
+ declare builder_lanes: builder_lane[]
1129
+ @Struct.field(loader_lane, {array: true})
1130
+ declare loader_lanes: loader_lane[]
1131
+ @Struct.field(launcher_stats, {optional: true})
1132
+ declare launcher?: launcher_stats
1133
+ @Struct.field(lane, {array: true})
1134
+ declare lanes: lane[]
1135
+ @Struct.field(hold, {array: true})
1136
+ declare holds: hold[]
1137
+ @Struct.field(TimePoint)
1138
+ declare projected_at: TimePoint
461
1139
  }
462
1140
  @Struct.type('slot_def')
463
1141
  export class slot_def extends Struct {
464
1142
  @Struct.field(UInt8)
465
1143
  declare type: UInt8
1144
+ @Struct.field(UInt16)
1145
+ declare output_pct: UInt16
1146
+ @Struct.field(UInt8)
1147
+ declare max_tier: UInt8
466
1148
  }
467
1149
  @Struct.type('entity_layout')
468
1150
  export class entity_layout extends Struct {
@@ -470,12 +1152,46 @@ export namespace Types {
470
1152
  declare entity_item_id: UInt16
471
1153
  @Struct.field(slot_def, {array: true})
472
1154
  declare slots: slot_def[]
1155
+ @Struct.field(UInt32)
1156
+ declare base_hullmass: UInt32
473
1157
  }
474
1158
  @Struct.type('entity_layouts_result')
475
1159
  export class entity_layouts_result extends Struct {
476
1160
  @Struct.field(entity_layout, {array: true})
477
1161
  declare entities: entity_layout[]
478
1162
  }
1163
+ @Struct.type('entity_row')
1164
+ export class entity_row extends Struct {
1165
+ @Struct.field(UInt64)
1166
+ declare id: UInt64
1167
+ @Struct.field(Name)
1168
+ declare owner: Name
1169
+ @Struct.field(Name)
1170
+ declare kind: Name
1171
+ @Struct.field(UInt16)
1172
+ declare item_id: UInt16
1173
+ @Struct.field('string')
1174
+ declare name: string
1175
+ @Struct.field(UInt64)
1176
+ declare stats: UInt64
1177
+ @Struct.field(coordinates)
1178
+ declare coordinates: coordinates
1179
+ @Struct.field(UInt32, {optional: true})
1180
+ declare energy?: UInt32
1181
+ @Struct.field(UInt32)
1182
+ declare cargomass: UInt32
1183
+ @Struct.field(module_entry, {array: true})
1184
+ declare modules: module_entry[]
1185
+ @Struct.field(lane, {array: true})
1186
+ declare lanes: lane[]
1187
+ @Struct.field(hold, {array: true})
1188
+ declare holds: hold[]
1189
+ }
1190
+ @Struct.type('entity_seq_row')
1191
+ export class entity_seq_row extends Struct {
1192
+ @Struct.field(UInt64)
1193
+ declare next_id: UInt64
1194
+ }
479
1195
  @Struct.type('entity_summary')
480
1196
  export class entity_summary extends Struct {
481
1197
  @Struct.field(Name)
@@ -501,8 +1217,8 @@ export namespace Types {
501
1217
  declare entity_id: UInt64
502
1218
  @Struct.field(Name)
503
1219
  declare entity_type: Name
504
- @Struct.field(UInt8)
505
- declare task_count: UInt8
1220
+ @Struct.field(UInt32)
1221
+ declare task_count: UInt32
506
1222
  @Struct.field(TimePoint)
507
1223
  declare schedule_started: TimePoint
508
1224
  }
@@ -525,19 +1241,161 @@ export namespace Types {
525
1241
  @Struct.field(enum_member, {array: true})
526
1242
  declare members: enum_member[]
527
1243
  }
1244
+ @Struct.type('epoch_row')
1245
+ export class epoch_row extends Struct {
1246
+ @Struct.field(UInt64)
1247
+ declare epoch: UInt64
1248
+ @Struct.field(Name, {array: true})
1249
+ declare oracle_ids: Name[]
1250
+ @Struct.field(UInt8)
1251
+ declare threshold: UInt8
1252
+ @Struct.field(Checksum256)
1253
+ declare seed: Checksum256
1254
+ }
1255
+ @Struct.type('fixcargomass')
1256
+ export class fixcargomass extends Struct {
1257
+ @Struct.field(UInt64)
1258
+ declare entity_id: UInt64
1259
+ }
1260
+ @Struct.type('fixitemids')
1261
+ export class fixitemids extends Struct {}
1262
+ @Struct.type('grid_cell')
1263
+ export class grid_cell extends Struct {
1264
+ @Struct.field(Int8)
1265
+ declare gx: Int8
1266
+ @Struct.field(Int8)
1267
+ declare gy: Int8
1268
+ }
1269
+ @Struct.type('footprint_result')
1270
+ export class footprint_result extends Struct {
1271
+ @Struct.field(grid_cell, {array: true})
1272
+ declare cells: grid_cell[]
1273
+ }
1274
+ @Struct.type('forcereveal')
1275
+ export class forcereveal extends Struct {
1276
+ @Struct.field(UInt64)
1277
+ declare epoch: UInt64
1278
+ }
1279
+ @Struct.type('found')
1280
+ export class found extends Struct {
1281
+ @Struct.field(Name)
1282
+ declare player: Name
1283
+ @Struct.field(UInt64)
1284
+ declare entity_id: UInt64
1285
+ @Struct.field(Int64)
1286
+ declare x: Int64
1287
+ @Struct.field(Int64)
1288
+ declare y: Int64
1289
+ }
528
1290
  @Struct.type('gather')
529
1291
  export class gather extends Struct {
530
- @Struct.field(entity_ref)
531
- declare source: entity_ref
532
- @Struct.field(entity_ref)
533
- declare destination: entity_ref
1292
+ @Struct.field(UInt64)
1293
+ declare source_id: UInt64
1294
+ @Struct.field(UInt64)
1295
+ declare destination_id: UInt64
1296
+ @Struct.field(UInt16)
1297
+ declare stratum: UInt16
1298
+ @Struct.field(UInt32)
1299
+ declare quantity: UInt32
1300
+ @Struct.field(UInt8, {optional: true})
1301
+ declare slot?: UInt8
1302
+ }
1303
+ @Struct.type('gatherplan')
1304
+ export class gatherplan extends Struct {
1305
+ @Struct.field(UInt64)
1306
+ declare source_id: UInt64
1307
+ @Struct.field(UInt64)
1308
+ declare destination_id: UInt64
534
1309
  @Struct.field(UInt16)
535
1310
  declare stratum: UInt16
536
1311
  @Struct.field(UInt32)
537
1312
  declare quantity: UInt32
1313
+ @Struct.field('bool')
1314
+ declare recharge: boolean
1315
+ @Struct.field(Bytes)
1316
+ declare slots: Bytes
1317
+ }
1318
+ @Struct.type('genesisfleet')
1319
+ export class genesisfleet extends Struct {
1320
+ @Struct.field(entity_row, {array: true})
1321
+ declare entities: entity_row[]
1322
+ }
1323
+ @Struct.type('genesisworld')
1324
+ export class genesisworld extends Struct {
1325
+ @Struct.field(Name)
1326
+ declare founder: Name
1327
+ @Struct.field(Int64)
1328
+ declare x: Int64
1329
+ @Struct.field(Int64)
1330
+ declare y: Int64
1331
+ @Struct.field(UInt32, {array: true})
1332
+ declare node_ids: UInt32[]
1333
+ }
1334
+ @Struct.type('getbuildjobs')
1335
+ export class getbuildjobs extends Struct {
1336
+ @Struct.field(UInt64)
1337
+ declare building_id: UInt64
1338
+ }
1339
+ @Struct.type('getcharter')
1340
+ export class getcharter extends Struct {
1341
+ @Struct.field(Int64)
1342
+ declare x: Int64
1343
+ @Struct.field(Int64)
1344
+ declare y: Int64
1345
+ }
1346
+ @Struct.type('getcharttree')
1347
+ export class getcharttree extends Struct {}
1348
+ @Struct.type('getchrtready')
1349
+ export class getchrtready extends Struct {}
1350
+ @Struct.type('getcluster')
1351
+ export class getcluster extends Struct {
1352
+ @Struct.field(UInt64)
1353
+ declare hub_id: UInt64
538
1354
  }
539
1355
  @Struct.type('getconfig')
540
1356
  export class getconfig extends Struct {}
1357
+ @Struct.type('getcraftjobs')
1358
+ export class getcraftjobs extends Struct {
1359
+ @Struct.field(UInt64)
1360
+ declare building_id: UInt64
1361
+ }
1362
+ @Struct.type('getdecomp')
1363
+ export class getdecomp extends Struct {
1364
+ @Struct.field(UInt16)
1365
+ declare item_id: UInt16
1366
+ }
1367
+ @Struct.type('getdemand')
1368
+ export class getdemand extends Struct {
1369
+ @Struct.field(Int64)
1370
+ declare x: Int64
1371
+ @Struct.field(Int64)
1372
+ declare y: Int64
1373
+ }
1374
+ @Struct.type('getdeposit')
1375
+ export class getdeposit extends Struct {
1376
+ @Struct.field(Name)
1377
+ declare owner: Name
1378
+ @Struct.field(UInt64)
1379
+ declare asset_id: UInt64
1380
+ }
1381
+ @Struct.type('getdepot')
1382
+ export class getdepot extends Struct {
1383
+ @Struct.field(UInt64)
1384
+ declare depot_id: UInt64
1385
+ @Struct.field(Name)
1386
+ declare owner: Name
1387
+ }
1388
+ @Struct.type('getdistance')
1389
+ export class getdistance extends Struct {
1390
+ @Struct.field(Int64)
1391
+ declare ax: Int64
1392
+ @Struct.field(Int64)
1393
+ declare ay: Int64
1394
+ @Struct.field(Int64)
1395
+ declare bx: Int64
1396
+ @Struct.field(Int64)
1397
+ declare by: Int64
1398
+ }
541
1399
  @Struct.type('geteligible')
542
1400
  export class geteligible extends Struct {
543
1401
  @Struct.field(coordinates)
@@ -545,6 +1403,8 @@ export namespace Types {
545
1403
  @Struct.field(UInt16)
546
1404
  declare stratum: UInt16
547
1405
  }
1406
+ @Struct.type('getentcls')
1407
+ export class getentcls extends Struct {}
548
1408
  @Struct.type('getentities')
549
1409
  export class getentities extends Struct {
550
1410
  @Struct.field(Name)
@@ -554,19 +1414,54 @@ export namespace Types {
554
1414
  }
555
1415
  @Struct.type('getentity')
556
1416
  export class getentity extends Struct {
557
- @Struct.field(Name)
558
- declare entity_type: Name
559
1417
  @Struct.field(UInt64)
560
1418
  declare entity_id: UInt64
561
1419
  }
1420
+ @Struct.type('getfootprint')
1421
+ export class getfootprint extends Struct {
1422
+ @Struct.field(UInt16)
1423
+ declare item_id: UInt16
1424
+ }
1425
+ @Struct.type('getinfdecay')
1426
+ export class getinfdecay extends Struct {
1427
+ @Struct.field(UInt64)
1428
+ declare active: UInt64
1429
+ @Struct.field(UInt32)
1430
+ declare epochs: UInt32
1431
+ }
1432
+ @Struct.type('getinfluence')
1433
+ export class getinfluence extends Struct {
1434
+ @Struct.field(Name)
1435
+ declare owner: Name
1436
+ @Struct.field(Int64)
1437
+ declare x: Int64
1438
+ @Struct.field(Int64)
1439
+ declare y: Int64
1440
+ }
1441
+ @Struct.type('getinfvalue')
1442
+ export class getinfvalue extends Struct {
1443
+ @Struct.field(cargo_item, {array: true})
1444
+ declare items: cargo_item[]
1445
+ @Struct.field(Int64)
1446
+ declare x: Int64
1447
+ @Struct.field(Int64)
1448
+ declare y: Int64
1449
+ }
562
1450
  @Struct.type('getitemdata')
563
1451
  export class getitemdata extends Struct {}
564
1452
  @Struct.type('getitemids')
565
1453
  export class getitemids extends Struct {}
566
1454
  @Struct.type('getitems')
567
1455
  export class getitems extends Struct {}
1456
+ @Struct.type('getitemtype')
1457
+ export class getitemtype extends Struct {
1458
+ @Struct.field(UInt16)
1459
+ declare item_id: UInt16
1460
+ }
568
1461
  @Struct.type('getitemtypes')
569
1462
  export class getitemtypes extends Struct {}
1463
+ @Struct.type('getkindmeta')
1464
+ export class getkindmeta extends Struct {}
570
1465
  @Struct.type('getlocation')
571
1466
  export class getlocation extends Struct {
572
1467
  @Struct.field(Int64)
@@ -581,19 +1476,23 @@ export namespace Types {
581
1476
  @Struct.field(Int64)
582
1477
  declare y: Int64
583
1478
  }
1479
+ @Struct.type('getmintcfg')
1480
+ export class getmintcfg extends Struct {}
1481
+ @Struct.type('getmintready')
1482
+ export class getmintready extends Struct {}
584
1483
  @Struct.type('getmodtypes')
585
1484
  export class getmodtypes extends Struct {}
586
1485
  @Struct.type('getmodules')
587
1486
  export class getmodules extends Struct {}
588
1487
  @Struct.type('getnearby')
589
1488
  export class getnearby extends Struct {
590
- @Struct.field(Name)
591
- declare entity_type: Name
592
1489
  @Struct.field(UInt64)
593
1490
  declare entity_id: UInt64
594
1491
  @Struct.field('bool')
595
1492
  declare recharge: boolean
596
1493
  }
1494
+ @Struct.type('getnftbase')
1495
+ export class getnftbase extends Struct {}
597
1496
  @Struct.type('getnftinfo')
598
1497
  export class getnftinfo extends Struct {}
599
1498
  @Struct.type('getplayer')
@@ -601,6 +1500,22 @@ export namespace Types {
601
1500
  @Struct.field(Name)
602
1501
  declare account: Name
603
1502
  }
1503
+ @Struct.type('getpool')
1504
+ export class getpool extends Struct {
1505
+ @Struct.field(UInt8)
1506
+ declare category: UInt8
1507
+ @Struct.field(UInt8)
1508
+ declare tier: UInt8
1509
+ }
1510
+ @Struct.type('getpools')
1511
+ export class getpools extends Struct {}
1512
+ @Struct.type('getprojstate')
1513
+ export class getprojstate extends Struct {
1514
+ @Struct.field(UInt64)
1515
+ declare entity_id: UInt64
1516
+ @Struct.field(UInt8, {optional: true})
1517
+ declare task_count?: UInt8
1518
+ }
604
1519
  @Struct.type('getrecipe')
605
1520
  export class getrecipe extends Struct {
606
1521
  @Struct.field(UInt16)
@@ -642,6 +1557,37 @@ export namespace Types {
642
1557
  @Struct.field(Name, {optional: true})
643
1558
  declare entity_type?: Name
644
1559
  }
1560
+ @Struct.type('getvoteready')
1561
+ export class getvoteready extends Struct {}
1562
+ @Struct.type('getvotes')
1563
+ export class getvotes extends Struct {
1564
+ @Struct.field(Int64)
1565
+ declare x: Int64
1566
+ @Struct.field(Int64)
1567
+ declare y: Int64
1568
+ @Struct.field(Name)
1569
+ declare player: Name
1570
+ }
1571
+ @Struct.type('getwormhole')
1572
+ export class getwormhole extends Struct {
1573
+ @Struct.field(Int64)
1574
+ declare x: Int64
1575
+ @Struct.field(Int64)
1576
+ declare y: Int64
1577
+ }
1578
+ @Struct.type('grouptransit')
1579
+ export class grouptransit extends Struct {
1580
+ @Struct.field(entity_ref, {array: true})
1581
+ declare entities: entity_ref[]
1582
+ @Struct.field(Int64)
1583
+ declare ax: Int64
1584
+ @Struct.field(Int64)
1585
+ declare ay: Int64
1586
+ @Struct.field(Int64)
1587
+ declare bx: Int64
1588
+ @Struct.field(Int64)
1589
+ declare by: Int64
1590
+ }
645
1591
  @Struct.type('grouptravel')
646
1592
  export class grouptravel extends Struct {
647
1593
  @Struct.field(entity_ref, {array: true})
@@ -653,20 +1599,183 @@ export namespace Types {
653
1599
  @Struct.field('bool')
654
1600
  declare recharge: boolean
655
1601
  }
656
- @Struct.type('hash')
657
- export class hash extends Struct {
658
- @Struct.field('string')
659
- declare value: string
1602
+ @Struct.type('hash')
1603
+ export class hash extends Struct {
1604
+ @Struct.field('string')
1605
+ declare value: string
1606
+ }
1607
+ @Struct.type('hash512')
1608
+ export class hash512 extends Struct {
1609
+ @Struct.field('string')
1610
+ declare value: string
1611
+ }
1612
+ @Struct.type('importcargo')
1613
+ export class importcargo extends Struct {
1614
+ @Struct.field(cargo_row)
1615
+ declare row: cargo_row
1616
+ }
1617
+ @Struct.type('importcell')
1618
+ export class importcell extends Struct {
1619
+ @Struct.field(UInt64)
1620
+ declare root: UInt64
1621
+ @Struct.field(Int8)
1622
+ declare gx: Int8
1623
+ @Struct.field(Int8)
1624
+ declare gy: Int8
1625
+ @Struct.field(UInt64)
1626
+ declare entity_id: UInt64
1627
+ }
1628
+ @Struct.type('importentity')
1629
+ export class importentity extends Struct {
1630
+ @Struct.field(entity_row)
1631
+ declare row: entity_row
1632
+ }
1633
+ @Struct.type('importepoch')
1634
+ export class importepoch extends Struct {
1635
+ @Struct.field(epoch_row)
1636
+ declare row: epoch_row
1637
+ }
1638
+ @Struct.type('importgroup')
1639
+ export class importgroup extends Struct {
1640
+ @Struct.field(entitygroup_row)
1641
+ declare row: entitygroup_row
1642
+ }
1643
+ @Struct.type('nftconfig_row')
1644
+ export class nftconfig_row extends Struct {
1645
+ @Struct.field(UInt16)
1646
+ declare item_id: UInt16
1647
+ @Struct.field(Int32)
1648
+ declare template_id: Int32
1649
+ @Struct.field(Name)
1650
+ declare schema_name: Name
1651
+ }
1652
+ @Struct.type('importnftcfg')
1653
+ export class importnftcfg extends Struct {
1654
+ @Struct.field(nftconfig_row)
1655
+ declare row: nftconfig_row
1656
+ }
1657
+ @Struct.type('importplayer')
1658
+ export class importplayer extends Struct {
1659
+ @Struct.field(Name)
1660
+ declare owner: Name
1661
+ }
1662
+ @Struct.type('reserve_row')
1663
+ export class reserve_row extends Struct {
1664
+ @Struct.field(UInt64)
1665
+ declare id: UInt64
1666
+ @Struct.field(UInt64)
1667
+ declare coord_id: UInt64
1668
+ @Struct.field(UInt16)
1669
+ declare stratum: UInt16
1670
+ @Struct.field(UInt32)
1671
+ declare remaining: UInt32
1672
+ @Struct.field(BlockTimestamp)
1673
+ declare last_block: BlockTimestamp
1674
+ }
1675
+ @Struct.type('importreserve')
1676
+ export class importreserve extends Struct {
1677
+ @Struct.field(UInt32)
1678
+ declare epoch_scope: UInt32
1679
+ @Struct.field(reserve_row)
1680
+ declare row: reserve_row
1681
+ }
1682
+ @Struct.type('state_row')
1683
+ export class state_row extends Struct {
1684
+ @Struct.field('bool')
1685
+ declare enabled: boolean
1686
+ @Struct.field(UInt32)
1687
+ declare epoch: UInt32
1688
+ @Struct.field(Checksum256)
1689
+ declare seed: Checksum256
1690
+ }
1691
+ @Struct.type('importstate')
1692
+ export class importstate extends Struct {
1693
+ @Struct.field(state_row)
1694
+ declare row: state_row
1695
+ }
1696
+ @Struct.type('infburn_row')
1697
+ export class infburn_row extends Struct {
1698
+ @Struct.field(UInt16)
1699
+ declare bps: UInt16
1700
+ }
1701
+ @Struct.type('infdemand_row')
1702
+ export class infdemand_row extends Struct {
1703
+ @Struct.field(UInt64)
1704
+ declare peak: UInt64
1705
+ @Struct.field(UInt64)
1706
+ declare base: UInt64
1707
+ @Struct.field(UInt64)
1708
+ declare floor: UInt64
1709
+ }
1710
+ @Struct.type('influence_totals')
1711
+ export class influence_totals extends Struct {
1712
+ @Struct.field(UInt64)
1713
+ declare standing_lifetime: UInt64
1714
+ @Struct.field(UInt64)
1715
+ declare standing_active: UInt64
1716
+ @Struct.field(UInt64)
1717
+ declare citizenship_lifetime: UInt64
1718
+ @Struct.field(UInt64)
1719
+ declare citizenship_active: UInt64
1720
+ @Struct.field(UInt64)
1721
+ declare location_lifetime: UInt64
1722
+ @Struct.field(UInt64)
1723
+ declare location_active: UInt64
1724
+ @Struct.field(UInt64)
1725
+ declare spent: UInt64
1726
+ @Struct.field(UInt32)
1727
+ declare mandate: UInt32
1728
+ @Struct.field(Name)
1729
+ declare founder: Name
1730
+ @Struct.field(UInt32)
1731
+ declare founded: UInt32
1732
+ @Struct.field(UInt32)
1733
+ declare epoch: UInt32
1734
+ }
1735
+ @Struct.type('infmint_row')
1736
+ export class infmint_row extends Struct {
1737
+ @Struct.field(UInt8)
1738
+ declare category: UInt8
1739
+ @Struct.field(UInt8)
1740
+ declare tier: UInt8
1741
+ @Struct.field(UInt64)
1742
+ declare threshold: UInt64
1743
+ }
1744
+ @Struct.type('infpool_row')
1745
+ export class infpool_row extends Struct {
1746
+ @Struct.field(UInt8)
1747
+ declare category: UInt8
1748
+ @Struct.field(UInt8)
1749
+ declare tier: UInt8
1750
+ @Struct.field(UInt8)
1751
+ declare grade: UInt8
1752
+ @Struct.field(UInt64)
1753
+ declare quantity: UInt64
1754
+ @Struct.field(UInt64)
1755
+ declare stats: UInt64
1756
+ @Struct.field(UInt64)
1757
+ declare bar: UInt64
660
1758
  }
661
- @Struct.type('hash512')
662
- export class hash512 extends Struct {
663
- @Struct.field('string')
664
- declare value: string
1759
+ @Struct.type('infquality_row')
1760
+ export class infquality_row extends Struct {
1761
+ @Struct.field(UInt32)
1762
+ declare d1: UInt32
665
1763
  }
666
- @Struct.type('init')
667
- export class init extends Struct {
668
- @Struct.field(Checksum256)
669
- declare seed: Checksum256
1764
+ @Struct.type('infvalue_result')
1765
+ export class infvalue_result extends Struct {
1766
+ @Struct.field(UInt64)
1767
+ declare total_atomic: UInt64
1768
+ @Struct.field(UInt64, {array: true})
1769
+ declare per_item_atomic: UInt64[]
1770
+ }
1771
+ @Struct.type('infweight_row')
1772
+ export class infweight_row extends Struct {
1773
+ @Struct.field(UInt8)
1774
+ declare category: UInt8
1775
+ @Struct.field(UInt8)
1776
+ declare tier: UInt8
1777
+ @Struct.field(UInt64)
1778
+ declare weight_fp: UInt64
670
1779
  }
671
1780
  @Struct.type('item_id_pair')
672
1781
  export class item_id_pair extends Struct {
@@ -684,10 +1793,6 @@ export namespace Types {
684
1793
  export class recipe_input extends Struct {
685
1794
  @Struct.field(UInt16)
686
1795
  declare item_id: UInt16
687
- @Struct.field(UInt8)
688
- declare category: UInt8
689
- @Struct.field(UInt8)
690
- declare tier: UInt8
691
1796
  @Struct.field(UInt32)
692
1797
  declare quantity: UInt32
693
1798
  }
@@ -726,6 +1831,8 @@ export namespace Types {
726
1831
  declare output_item: recipe_item_info
727
1832
  @Struct.field(recipe_item_info, {array: true})
728
1833
  declare input_items: recipe_item_info[]
1834
+ @Struct.field(UInt16, {optional: true})
1835
+ declare source_subclass?: UInt16
729
1836
  }
730
1837
  @Struct.type('recipes_result')
731
1838
  export class recipes_result extends Struct {
@@ -749,6 +1856,53 @@ export namespace Types {
749
1856
  @Struct.field(Name)
750
1857
  declare account: Name
751
1858
  }
1859
+ @Struct.type('kind_meta_row')
1860
+ export class kind_meta_row extends Struct {
1861
+ @Struct.field(Name)
1862
+ declare kind: Name
1863
+ @Struct.field(UInt8)
1864
+ declare classification: UInt8
1865
+ @Struct.field(UInt8)
1866
+ declare capability_flags: UInt8
1867
+ @Struct.field(UInt32)
1868
+ declare z_coord: UInt32
1869
+ @Struct.field('string')
1870
+ declare default_label: string
1871
+ }
1872
+ @Struct.type('template_meta_row')
1873
+ export class template_meta_row extends Struct {
1874
+ @Struct.field(UInt16)
1875
+ declare item_id: UInt16
1876
+ @Struct.field(Name)
1877
+ declare kind: Name
1878
+ @Struct.field('string')
1879
+ declare display_label: string
1880
+ }
1881
+ @Struct.type('kind_meta_result')
1882
+ export class kind_meta_result extends Struct {
1883
+ @Struct.field(kind_meta_row, {array: true})
1884
+ declare kinds: kind_meta_row[]
1885
+ @Struct.field(template_meta_row, {array: true})
1886
+ declare templates: template_meta_row[]
1887
+ }
1888
+ @Struct.type('launch')
1889
+ export class launch extends Struct {
1890
+ @Struct.field(UInt64)
1891
+ declare launcher_id: UInt64
1892
+ @Struct.field(UInt64)
1893
+ declare catcher_id: UInt64
1894
+ @Struct.field(cargo_item, {array: true})
1895
+ declare items: cargo_item[]
1896
+ }
1897
+ @Struct.type('load')
1898
+ export class load extends Struct {
1899
+ @Struct.field(UInt64)
1900
+ declare id: UInt64
1901
+ @Struct.field(UInt64)
1902
+ declare from_id: UInt64
1903
+ @Struct.field(cargo_item, {array: true})
1904
+ declare items: cargo_item[]
1905
+ }
752
1906
  @Struct.type('location_static')
753
1907
  export class location_static extends Struct {
754
1908
  @Struct.field(coordinates)
@@ -775,21 +1929,54 @@ export namespace Types {
775
1929
  declare coords: coordinates
776
1930
  @Struct.field('bool')
777
1931
  declare is_system: boolean
1932
+ @Struct.field('bool')
1933
+ declare is_wormhole: boolean
778
1934
  }
779
- @Struct.type('location_row')
780
- export class location_row extends Struct {
1935
+ @Struct.type('locker_row')
1936
+ export class locker_row extends Struct {
781
1937
  @Struct.field(UInt64)
782
- declare id: UInt64
783
- @Struct.field(Name)
784
- declare owner: Name
785
- @Struct.field(coordinates)
786
- declare coordinates: coordinates
1938
+ declare depot_id: UInt64
1939
+ @Struct.field(UInt64)
1940
+ declare stored_mass: UInt64
1941
+ @Struct.field(UInt64)
1942
+ declare reserved_mass: UInt64
1943
+ }
1944
+ @Struct.type('mandates_row')
1945
+ export class mandates_row extends Struct {
787
1946
  @Struct.field(UInt32)
788
- declare cargomass: UInt32
789
- @Struct.field(cargo_item, {array: true})
790
- declare cargo: cargo_item[]
791
- @Struct.field(schedule, {optional: true})
792
- declare schedule?: schedule
1947
+ declare node_id: UInt32
1948
+ @Struct.field(UInt16)
1949
+ declare repeats: UInt16
1950
+ }
1951
+ @Struct.type('migratejobs')
1952
+ export class migratejobs extends Struct {}
1953
+ @Struct.type('mint_threshold_view')
1954
+ export class mint_threshold_view extends Struct {
1955
+ @Struct.field(UInt8)
1956
+ declare category: UInt8
1957
+ @Struct.field(UInt8)
1958
+ declare tier: UInt8
1959
+ @Struct.field(UInt64)
1960
+ declare threshold: UInt64
1961
+ }
1962
+ @Struct.type('mintcfg_result')
1963
+ export class mintcfg_result extends Struct {
1964
+ @Struct.field(mint_threshold_view, {array: true})
1965
+ declare thresholds: mint_threshold_view[]
1966
+ @Struct.field(UInt16)
1967
+ declare burn_bps: UInt16
1968
+ }
1969
+ @Struct.type('mintq_row')
1970
+ export class mintq_row extends Struct {
1971
+ @Struct.field(UInt64)
1972
+ declare id: UInt64
1973
+ @Struct.field(UInt8)
1974
+ declare grade: UInt8
1975
+ }
1976
+ @Struct.type('mintready')
1977
+ export class mintready extends Struct {
1978
+ @Struct.field(UInt32, {optional: true})
1979
+ declare max_mints?: UInt32
793
1980
  }
794
1981
  @Struct.type('module_info')
795
1982
  export class module_info extends Struct {
@@ -807,6 +1994,28 @@ export namespace Types {
807
1994
  @Struct.field(module_info, {array: true})
808
1995
  declare modules: module_info[]
809
1996
  }
1997
+ @Struct.type('movetile')
1998
+ export class movetile extends Struct {
1999
+ @Struct.field(UInt64)
2000
+ declare hub_id: UInt64
2001
+ @Struct.field(Int8)
2002
+ declare from_gx: Int8
2003
+ @Struct.field(Int8)
2004
+ declare from_gy: Int8
2005
+ @Struct.field(Int8)
2006
+ declare to_gx: Int8
2007
+ @Struct.field(Int8)
2008
+ declare to_gy: Int8
2009
+ }
2010
+ @Struct.type('naturalize')
2011
+ export class naturalize extends Struct {
2012
+ @Struct.field(Name)
2013
+ declare player: Name
2014
+ @Struct.field(Int64)
2015
+ declare x: Int64
2016
+ @Struct.field(Int64)
2017
+ declare y: Int64
2018
+ }
810
2019
  @Struct.type('nearby_system')
811
2020
  export class nearby_system extends Struct {
812
2021
  @Struct.field(UInt64)
@@ -826,21 +2035,28 @@ export namespace Types {
826
2035
  declare current: entity_current_state
827
2036
  @Struct.field(entity_current_state)
828
2037
  declare projected: entity_current_state
829
- @Struct.field(UInt16)
830
- declare max_energy: UInt16
2038
+ @Struct.field(UInt32)
2039
+ declare max_energy: UInt32
831
2040
  @Struct.field(nearby_system, {array: true})
832
2041
  declare systems: nearby_system[]
833
2042
  }
834
- @Struct.type('nexus_row')
835
- export class nexus_row extends Struct {
2043
+ @Struct.type('nft_cargo_item')
2044
+ export class nft_cargo_item extends Struct {
2045
+ @Struct.field(UInt16)
2046
+ declare item_id: UInt16
836
2047
  @Struct.field(UInt64)
837
- declare id: UInt64
838
- @Struct.field(Name)
839
- declare owner: Name
840
- @Struct.field('string')
841
- declare name: string
842
- @Struct.field(coordinates)
843
- declare coordinates: coordinates
2048
+ declare stats: UInt64
2049
+ @Struct.field(module_entry, {array: true})
2050
+ declare modules: module_entry[]
2051
+ @Struct.field(UInt32)
2052
+ declare quantity: UInt32
2053
+ }
2054
+ @Struct.type('nft_item_payload')
2055
+ export class nft_item_payload extends Struct {
2056
+ @Struct.field(nft_cargo_item)
2057
+ declare item: nft_cargo_item
2058
+ @Struct.field(coordinates, {optional: true})
2059
+ declare location?: coordinates
844
2060
  }
845
2061
  @Struct.type('schema_field')
846
2062
  export class schema_field extends Struct {
@@ -862,15 +2078,15 @@ export namespace Types {
862
2078
  declare item_id: UInt16
863
2079
  @Struct.field(Name)
864
2080
  declare schema_name: Name
865
- }
866
- @Struct.type('nftconfig_row')
867
- export class nftconfig_row extends Struct {
868
- @Struct.field(UInt16)
869
- declare item_id: UInt16
870
2081
  @Struct.field(Int32)
871
2082
  declare template_id: Int32
872
- @Struct.field(Name)
873
- declare schema_name: Name
2083
+ }
2084
+ @Struct.type('nftimgurl')
2085
+ export class nftimgurl extends Struct {
2086
+ @Struct.field(cargo_item)
2087
+ declare item: cargo_item
2088
+ @Struct.field(coordinates, {optional: true})
2089
+ declare location?: coordinates
874
2090
  }
875
2091
  @Struct.type('nftinfo_result')
876
2092
  export class nftinfo_result extends Struct {
@@ -889,22 +2105,54 @@ export namespace Types {
889
2105
  declare entity_type: Name
890
2106
  @Struct.field(UInt64)
891
2107
  declare entity_id: UInt64
892
- @Struct.field(UInt8)
893
- declare task_index: UInt8
2108
+ @Struct.field(UInt32)
2109
+ declare task_index: UInt32
894
2110
  @Struct.field(task)
895
2111
  declare task: task
896
2112
  @Struct.field(TimePoint)
897
2113
  declare starts_at: TimePoint
898
2114
  @Struct.field(TimePoint)
899
2115
  declare completes_at: TimePoint
900
- @Struct.field(UInt16, {optional: true})
901
- declare new_energy?: UInt16
2116
+ @Struct.field(UInt32, {optional: true})
2117
+ declare new_energy?: UInt32
2118
+ @Struct.field(UInt8)
2119
+ declare lane_key: UInt8
902
2120
  }
903
2121
  @Struct.type('notify')
904
2122
  export class notify extends Struct {
905
2123
  @Struct.field(task_event)
906
2124
  declare event: task_event
907
2125
  }
2126
+ @Struct.type('oracle_config_row')
2127
+ export class oracle_config_row extends Struct {
2128
+ @Struct.field(UInt8)
2129
+ declare threshold: UInt8
2130
+ @Struct.field(UInt32)
2131
+ declare deadline: UInt32
2132
+ }
2133
+ @Struct.type('oracle_row')
2134
+ export class oracle_row extends Struct {
2135
+ @Struct.field(Name)
2136
+ declare id: Name
2137
+ }
2138
+ @Struct.type('placecargo')
2139
+ export class placecargo extends Struct {
2140
+ @Struct.field(Name)
2141
+ declare owner: Name
2142
+ @Struct.field(UInt64)
2143
+ declare host_id: UInt64
2144
+ @Struct.field(UInt64)
2145
+ declare asset_id: UInt64
2146
+ }
2147
+ @Struct.type('placeentity')
2148
+ export class placeentity extends Struct {
2149
+ @Struct.field(Name)
2150
+ declare owner: Name
2151
+ @Struct.field(UInt64)
2152
+ declare asset_id: UInt64
2153
+ @Struct.field(UInt64)
2154
+ declare target_nexus_id: UInt64
2155
+ }
908
2156
  @Struct.type('player_info')
909
2157
  export class player_info extends Struct {
910
2158
  @Struct.field(Name)
@@ -913,40 +2161,128 @@ export namespace Types {
913
2161
  declare is_player: boolean
914
2162
  @Struct.field('string')
915
2163
  declare company_name: string
2164
+ }
2165
+ @Struct.type('player_row')
2166
+ export class player_row extends Struct {
2167
+ @Struct.field(Name)
2168
+ declare owner: Name
2169
+ }
2170
+ @Struct.type('pool_pair_result')
2171
+ export class pool_pair_result extends Struct {
2172
+ @Struct.field(UInt8)
2173
+ declare category: UInt8
2174
+ @Struct.field(UInt8)
2175
+ declare tier: UInt8
2176
+ @Struct.field(UInt16)
2177
+ declare item_id: UInt16
2178
+ @Struct.field(UInt64)
2179
+ declare standard_quantity: UInt64
2180
+ @Struct.field(UInt64)
2181
+ declare standard_stats: UInt64
916
2182
  @Struct.field(UInt64)
917
- declare ship_count: UInt64
2183
+ declare premium_quantity: UInt64
918
2184
  @Struct.field(UInt64)
919
- declare warehouse_count: UInt64
2185
+ declare premium_stats: UInt64
920
2186
  @Struct.field(UInt64)
921
- declare container_count: UInt64
2187
+ declare bar: UInt64
2188
+ @Struct.field(UInt64)
2189
+ declare threshold: UInt64
922
2190
  }
923
- @Struct.type('player_row')
924
- export class player_row extends Struct {
2191
+ @Struct.type('pool_view')
2192
+ export class pool_view extends Struct {
2193
+ @Struct.field(UInt8)
2194
+ declare category: UInt8
2195
+ @Struct.field(UInt8)
2196
+ declare tier: UInt8
2197
+ @Struct.field(UInt8)
2198
+ declare grade: UInt8
2199
+ @Struct.field(UInt16)
2200
+ declare item_id: UInt16
2201
+ @Struct.field(UInt64)
2202
+ declare quantity: UInt64
2203
+ @Struct.field(UInt64)
2204
+ declare stats: UInt64
2205
+ @Struct.field(UInt64)
2206
+ declare bar: UInt64
2207
+ }
2208
+ @Struct.type('pools_result')
2209
+ export class pools_result extends Struct {
2210
+ @Struct.field(pool_view, {array: true})
2211
+ declare pools: pool_view[]
2212
+ }
2213
+ @Struct.type('progress_row')
2214
+ export class progress_row extends Struct {
2215
+ @Struct.field(UInt32)
2216
+ declare node_id: UInt32
2217
+ @Struct.field(UInt64)
2218
+ declare amount: UInt64
2219
+ }
2220
+ @Struct.type('projected_state')
2221
+ export class projected_state extends Struct {
925
2222
  @Struct.field(Name)
926
2223
  declare owner: Name
2224
+ @Struct.field(coordinates)
2225
+ declare coordinates: coordinates
2226
+ @Struct.field(UInt32, {optional: true})
2227
+ declare energy?: UInt32
2228
+ @Struct.field(UInt32)
2229
+ declare cargomass: UInt32
2230
+ @Struct.field(cargo_view, {array: true})
2231
+ declare cargo: cargo_view[]
2232
+ @Struct.field(UInt32, {optional: true})
2233
+ declare hullmass?: UInt32
2234
+ @Struct.field(UInt32, {optional: true})
2235
+ declare capacity?: UInt32
2236
+ @Struct.field(movement_stats, {optional: true})
2237
+ declare engines?: movement_stats
2238
+ @Struct.field(warp_stats, {optional: true})
2239
+ declare warp?: warp_stats
2240
+ @Struct.field(energy_stats, {optional: true})
2241
+ declare generator?: energy_stats
2242
+ @Struct.field(hauler_stats, {optional: true})
2243
+ declare hauler?: hauler_stats
2244
+ @Struct.field(gatherer_lane, {array: true})
2245
+ declare gatherer_lanes: gatherer_lane[]
2246
+ @Struct.field(crafter_lane, {array: true})
2247
+ declare crafter_lanes: crafter_lane[]
2248
+ @Struct.field(builder_lane, {array: true})
2249
+ declare builder_lanes: builder_lane[]
2250
+ @Struct.field(loader_lane, {array: true})
2251
+ declare loader_lanes: loader_lane[]
2252
+ @Struct.field(launcher_stats, {optional: true})
2253
+ declare launcher?: launcher_stats
2254
+ @Struct.field(UInt8)
2255
+ declare tier: UInt8
927
2256
  }
928
2257
  @Struct.type('recharge')
929
2258
  export class recharge extends Struct {
930
- @Struct.field(Name)
931
- declare entity_type: Name
932
2259
  @Struct.field(UInt64)
933
2260
  declare id: UInt64
934
2261
  }
935
- @Struct.type('reserve_row')
936
- export class reserve_row extends Struct {
2262
+ @Struct.type('refrshentity')
2263
+ export class refrshentity extends Struct {
937
2264
  @Struct.field(UInt64)
938
- declare id: UInt64
2265
+ declare entity_id: UInt64
2266
+ }
2267
+ @Struct.type('removeoracle')
2268
+ export class removeoracle extends Struct {
2269
+ @Struct.field(Name)
2270
+ declare oracle_id: Name
2271
+ }
2272
+ @Struct.type('rename')
2273
+ export class rename extends Struct {
939
2274
  @Struct.field(UInt64)
940
- declare coord_id: UInt64
941
- @Struct.field(UInt16)
942
- declare stratum: UInt16
943
- @Struct.field(UInt32)
944
- declare remaining: UInt32
2275
+ declare id: UInt64
2276
+ @Struct.field('string')
2277
+ declare name: string
2278
+ }
2279
+ @Struct.type('repack_result')
2280
+ export class repack_result extends Struct {
2281
+ @Struct.field(reserved_window, {array: true})
2282
+ declare windows: reserved_window[]
945
2283
  }
946
2284
  @Struct.type('resolve')
947
2285
  export class resolve extends Struct {
948
- @Struct.field(Name)
949
- declare entity_type: Name
950
2286
  @Struct.field(UInt64)
951
2287
  declare id: UInt64
952
2288
  @Struct.field(UInt64, {optional: true})
@@ -958,8 +2294,8 @@ export namespace Types {
958
2294
  declare entity_id: UInt64
959
2295
  @Struct.field(Name)
960
2296
  declare entity_type: Name
961
- @Struct.field(UInt8)
962
- declare resolved_count: UInt8
2297
+ @Struct.field(UInt32)
2298
+ declare resolved_count: UInt32
963
2299
  @Struct.field(TimePoint, {optional: true})
964
2300
  declare new_schedule_started?: TimePoint
965
2301
  @Struct.field(UInt64, {optional: true})
@@ -967,6 +2303,25 @@ export namespace Types {
967
2303
  @Struct.field(entity_ref, {array: true, optional: true})
968
2304
  declare group_members?: entity_ref[]
969
2305
  }
2306
+ @Struct.type('resolveall')
2307
+ export class resolveall extends Struct {
2308
+ @Struct.field(Name)
2309
+ declare owner: Name
2310
+ }
2311
+ @Struct.type('resolveall_results')
2312
+ export class resolveall_results extends Struct {
2313
+ @Struct.field(UInt32)
2314
+ declare scanned: UInt32
2315
+ @Struct.field(UInt32)
2316
+ declare resolved: UInt32
2317
+ }
2318
+ @Struct.type('resolveearly')
2319
+ export class resolveearly extends Struct {
2320
+ @Struct.field(UInt64)
2321
+ declare id: UInt64
2322
+ @Struct.field(UInt64, {optional: true})
2323
+ declare count?: UInt64
2324
+ }
970
2325
  @Struct.type('resource_info')
971
2326
  export class resource_info extends Struct {
972
2327
  @Struct.field(UInt16)
@@ -992,33 +2347,112 @@ export namespace Types {
992
2347
  @Struct.field(resource_info, {array: true})
993
2348
  declare resources: resource_info[]
994
2349
  }
2350
+ @Struct.type('reveal')
2351
+ export class reveal extends Struct {
2352
+ @Struct.field(Name)
2353
+ declare oracle_id: Name
2354
+ @Struct.field(UInt64)
2355
+ declare epoch: UInt64
2356
+ @Struct.field(Checksum256)
2357
+ declare reveal: Checksum256
2358
+ }
2359
+ @Struct.type('reveal_row')
2360
+ export class reveal_row extends Struct {
2361
+ @Struct.field(UInt64)
2362
+ declare id: UInt64
2363
+ @Struct.field(UInt64)
2364
+ declare epoch: UInt64
2365
+ @Struct.field(Name)
2366
+ declare oracle_id: Name
2367
+ @Struct.field(Checksum256)
2368
+ declare reveal: Checksum256
2369
+ }
995
2370
  @Struct.type('rmmodule')
996
2371
  export class rmmodule extends Struct {
2372
+ @Struct.field(UInt64)
2373
+ declare entity_id: UInt64
2374
+ @Struct.field(UInt8)
2375
+ declare module_index: UInt8
2376
+ @Struct.field(cargo_ref, {optional: true})
2377
+ declare target_ref?: cargo_ref
2378
+ }
2379
+ @Struct.type('rmnftcfg')
2380
+ export class rmnftcfg extends Struct {
2381
+ @Struct.field(UInt16)
2382
+ declare item_id: UInt16
2383
+ }
2384
+ @Struct.type('route_waypoint')
2385
+ export class route_waypoint extends Struct {
2386
+ @Struct.field(Int64)
2387
+ declare x: Int64
2388
+ @Struct.field(Int64)
2389
+ declare y: Int64
2390
+ }
2391
+ @Struct.type('setcivic')
2392
+ export class setcivic extends Struct {
997
2393
  @Struct.field(Name)
998
- declare entity_type: Name
2394
+ declare account: Name
2395
+ }
2396
+ @Struct.type('setcluster')
2397
+ export class setcluster extends Struct {
2398
+ @Struct.field(cluster_row)
2399
+ declare row: cluster_row
2400
+ }
2401
+ @Struct.type('setcoords')
2402
+ export class setcoords extends Struct {
999
2403
  @Struct.field(UInt64)
1000
2404
  declare entity_id: UInt64
1001
- @Struct.field(UInt8)
1002
- declare module_index: UInt8
1003
- @Struct.field(cargo_ref, {optional: true})
1004
- declare target_ref?: cargo_ref
2405
+ @Struct.field(Int64)
2406
+ declare x: Int64
2407
+ @Struct.field(Int64)
2408
+ declare y: Int64
1005
2409
  }
1006
- @Struct.type('rmnftcfg')
1007
- export class rmnftcfg extends Struct {
2410
+ @Struct.type('setdeadline')
2411
+ export class setdeadline extends Struct {
2412
+ @Struct.field(UInt32)
2413
+ declare deadline: UInt32
2414
+ }
2415
+ @Struct.type('setinfburn')
2416
+ export class setinfburn extends Struct {
1008
2417
  @Struct.field(UInt16)
1009
- declare item_id: UInt16
2418
+ declare bps: UInt16
2419
+ }
2420
+ @Struct.type('setinfd1')
2421
+ export class setinfd1 extends Struct {
2422
+ @Struct.field(UInt32)
2423
+ declare d1: UInt32
1010
2424
  }
1011
- @Struct.type('salt')
1012
- export class salt extends Struct {
2425
+ @Struct.type('setinfdemand')
2426
+ export class setinfdemand extends Struct {
2427
+ @Struct.field(UInt64)
2428
+ declare peak: UInt64
1013
2429
  @Struct.field(UInt64)
1014
- declare salt: UInt64
2430
+ declare base: UInt64
2431
+ @Struct.field(UInt64)
2432
+ declare floor: UInt64
1015
2433
  }
1016
- @Struct.type('sequence_row')
1017
- export class sequence_row extends Struct {
1018
- @Struct.field(Name)
1019
- declare key: Name
2434
+ @Struct.type('setinfmint')
2435
+ export class setinfmint extends Struct {
2436
+ @Struct.field(UInt8)
2437
+ declare category: UInt8
2438
+ @Struct.field(UInt8)
2439
+ declare tier: UInt8
2440
+ @Struct.field(UInt64)
2441
+ declare threshold: UInt64
2442
+ }
2443
+ @Struct.type('setinfweight')
2444
+ export class setinfweight extends Struct {
2445
+ @Struct.field(UInt8)
2446
+ declare category: UInt8
2447
+ @Struct.field(UInt8)
2448
+ declare tier: UInt8
1020
2449
  @Struct.field(UInt64)
1021
- declare value: UInt64
2450
+ declare weight_fp: UInt64
2451
+ }
2452
+ @Struct.type('setnextid')
2453
+ export class setnextid extends Struct {
2454
+ @Struct.field(UInt64)
2455
+ declare next_id: UInt64
1022
2456
  }
1023
2457
  @Struct.type('setnftcfg')
1024
2458
  export class setnftcfg extends Struct {
@@ -1029,92 +2463,91 @@ export namespace Types {
1029
2463
  @Struct.field(Name)
1030
2464
  declare schema_name: Name
1031
2465
  }
1032
- @Struct.type('ship_row')
1033
- export class ship_row extends Struct {
1034
- @Struct.field(UInt64)
1035
- declare id: UInt64
1036
- @Struct.field(Name)
1037
- declare owner: Name
1038
- @Struct.field('string')
1039
- declare name: string
2466
+ @Struct.type('setthreshold')
2467
+ export class setthreshold extends Struct {
2468
+ @Struct.field(UInt8)
2469
+ declare threshold: UInt8
2470
+ }
2471
+ @Struct.type('settleballot')
2472
+ export class settleballot extends Struct {
1040
2473
  @Struct.field(UInt64)
1041
- declare stats: UInt64
1042
- @Struct.field(coordinates)
1043
- declare coordinates: coordinates
1044
- @Struct.field(UInt32, {optional: true})
1045
- declare hullmass?: UInt32
1046
- @Struct.field(UInt32, {optional: true})
1047
- declare capacity?: UInt32
1048
- @Struct.field(UInt16, {optional: true})
1049
- declare energy?: UInt16
2474
+ declare ballot_id: UInt64
1050
2475
  @Struct.field(UInt32)
1051
- declare cargomass: UInt32
1052
- @Struct.field(movement_stats, {optional: true})
1053
- declare engines?: movement_stats
1054
- @Struct.field(energy_stats, {optional: true})
1055
- declare generator?: energy_stats
1056
- @Struct.field(loader_stats, {optional: true})
1057
- declare loaders?: loader_stats
1058
- @Struct.field(gatherer_stats, {optional: true})
1059
- declare gatherer?: gatherer_stats
1060
- @Struct.field(warp_stats, {optional: true})
1061
- declare warp?: warp_stats
1062
- @Struct.field(crafter_stats, {optional: true})
1063
- declare crafter?: crafter_stats
1064
- @Struct.field(hauler_stats, {optional: true})
1065
- declare hauler?: hauler_stats
1066
- @Struct.field(module_entry, {array: true})
1067
- declare modules: module_entry[]
1068
- @Struct.field(schedule, {optional: true})
1069
- declare schedule?: schedule
2476
+ declare max_pages: UInt32
2477
+ }
2478
+ @Struct.type('setunwrapmin')
2479
+ export class setunwrapmin extends Struct {
2480
+ @Struct.field(UInt64)
2481
+ declare asset_id: UInt64
2482
+ }
2483
+ @Struct.type('setwrapcost')
2484
+ export class setwrapcost extends Struct {
2485
+ @Struct.field(UInt8)
2486
+ declare item_type: UInt8
2487
+ @Struct.field(UInt8)
2488
+ declare tier: UInt8
2489
+ @Struct.field(UInt64)
2490
+ declare amount: UInt64
2491
+ }
2492
+ @Struct.type('setwrapfee')
2493
+ export class setwrapfee extends Struct {
1070
2494
  @Struct.field(UInt16)
1071
- declare item_id: UInt16
2495
+ declare fee_pct: UInt16
2496
+ @Struct.field(Name)
2497
+ declare fee_account: Name
1072
2498
  }
1073
- @Struct.type('spawncargo')
1074
- export class spawncargo extends Struct {
2499
+ @Struct.type('shuttle')
2500
+ export class shuttle extends Struct {
1075
2501
  @Struct.field(UInt64)
1076
- declare entity_id: UInt64
2502
+ declare carrier: UInt64
1077
2503
  @Struct.field(UInt64)
1078
- declare item_id: UInt64
2504
+ declare from_id: UInt64
1079
2505
  @Struct.field(UInt64)
1080
- declare quantity: UInt64
2506
+ declare to_id: UInt64
2507
+ @Struct.field(cargo_item, {array: true})
2508
+ declare items: cargo_item[]
1081
2509
  }
1082
- @Struct.type('spawnpacked')
1083
- export class spawnpacked extends Struct {
2510
+ @Struct.type('socket_pick')
2511
+ export class socket_pick extends Struct {
2512
+ @Struct.field('bool')
2513
+ declare found: boolean
2514
+ @Struct.field(UInt8)
2515
+ declare socket: UInt8
2516
+ @Struct.field(reserved_window)
2517
+ declare window: reserved_window
2518
+ }
2519
+ @Struct.type('standing_row')
2520
+ export class standing_row extends Struct {
2521
+ @Struct.field(Name)
2522
+ declare account: Name
1084
2523
  @Struct.field(UInt64)
1085
- declare entity_id: UInt64
1086
- @Struct.field(UInt16)
1087
- declare item_id: UInt16
2524
+ declare lifetime: UInt64
1088
2525
  @Struct.field(UInt64)
1089
- declare hull_stats: UInt64
1090
- @Struct.field(packed_module, {array: true})
1091
- declare installed: packed_module[]
2526
+ declare active: UInt64
2527
+ @Struct.field(UInt32)
2528
+ declare active_epoch: UInt32
1092
2529
  }
1093
- @Struct.type('spawnseeded')
1094
- export class spawnseeded extends Struct {
2530
+ @Struct.type('stowcargo')
2531
+ export class stowcargo extends Struct {
2532
+ @Struct.field(Name)
2533
+ declare owner: Name
1095
2534
  @Struct.field(UInt64)
1096
2535
  declare entity_id: UInt64
1097
2536
  @Struct.field(UInt64)
1098
- declare item_id: UInt64
2537
+ declare nexus_id: UInt64
1099
2538
  @Struct.field(UInt64)
1100
- declare quantity: UInt64
2539
+ declare cargo_id: UInt64
1101
2540
  @Struct.field(UInt64)
1102
- declare stats: UInt64
2541
+ declare quantity: UInt64
1103
2542
  }
1104
- @Struct.type('state_row')
1105
- export class state_row extends Struct {
1106
- @Struct.field('bool')
1107
- declare enabled: boolean
1108
- @Struct.field(UInt32)
1109
- declare epoch: UInt32
2543
+ @Struct.type('stowentity')
2544
+ export class stowentity extends Struct {
2545
+ @Struct.field(Name)
2546
+ declare owner: Name
1110
2547
  @Struct.field(UInt64)
1111
- declare salt: UInt64
1112
- @Struct.field(UInt32)
1113
- declare ships: UInt32
1114
- @Struct.field(Checksum256)
1115
- declare seed: Checksum256
1116
- @Struct.field(Checksum256)
1117
- declare commit: Checksum256
2548
+ declare entity_id: UInt64
2549
+ @Struct.field(UInt64)
2550
+ declare nexus_id: UInt64
1118
2551
  }
1119
2552
  @Struct.type('stratum_info')
1120
2553
  export class stratum_info extends Struct {
@@ -1142,29 +2575,51 @@ export namespace Types {
1142
2575
  declare stratum: UInt16
1143
2576
  @Struct.field(UInt32)
1144
2577
  declare remaining: UInt32
2578
+ @Struct.field(BlockTimestamp)
2579
+ declare last_block: BlockTimestamp
2580
+ }
2581
+ @Struct.type('swapmodule')
2582
+ export class swapmodule extends Struct {
2583
+ @Struct.field(UInt64)
2584
+ declare entity_id: UInt64
2585
+ @Struct.field(UInt8)
2586
+ declare module_index: UInt8
2587
+ @Struct.field(cargo_ref)
2588
+ declare module_ref: cargo_ref
2589
+ }
2590
+ @Struct.type('swaptile')
2591
+ export class swaptile extends Struct {
2592
+ @Struct.field(UInt64)
2593
+ declare hub_id: UInt64
2594
+ @Struct.field(Int8)
2595
+ declare a_gx: Int8
2596
+ @Struct.field(Int8)
2597
+ declare a_gy: Int8
2598
+ @Struct.field(Int8)
2599
+ declare b_gx: Int8
2600
+ @Struct.field(Int8)
2601
+ declare b_gy: Int8
1145
2602
  }
1146
2603
  @Struct.type('task_results')
1147
2604
  export class task_results extends Struct {
1148
2605
  @Struct.field(entity_task_info, {array: true})
1149
2606
  declare entities: entity_task_info[]
1150
2607
  }
1151
- @Struct.type('transfer')
1152
- export class transfer extends Struct {
1153
- @Struct.field(Name)
1154
- declare source_type: Name
1155
- @Struct.field(UInt64)
1156
- declare source_id: UInt64
1157
- @Struct.field(Name)
1158
- declare dest_type: Name
2608
+ @Struct.type('transit')
2609
+ export class transit extends Struct {
1159
2610
  @Struct.field(UInt64)
1160
- declare dest_id: UInt64
1161
- @Struct.field(cargo_item, {array: true})
1162
- declare items: cargo_item[]
2611
+ declare id: UInt64
2612
+ @Struct.field(Int64)
2613
+ declare ax: Int64
2614
+ @Struct.field(Int64)
2615
+ declare ay: Int64
2616
+ @Struct.field(Int64)
2617
+ declare bx: Int64
2618
+ @Struct.field(Int64)
2619
+ declare by: Int64
1163
2620
  }
1164
2621
  @Struct.type('travel')
1165
2622
  export class travel extends Struct {
1166
- @Struct.field(Name)
1167
- declare entity_type: Name
1168
2623
  @Struct.field(UInt64)
1169
2624
  declare id: UInt64
1170
2625
  @Struct.field(Int64)
@@ -1174,6 +2629,49 @@ export namespace Types {
1174
2629
  @Struct.field('bool')
1175
2630
  declare recharge: boolean
1176
2631
  }
2632
+ @Struct.type('travelplan')
2633
+ export class travelplan extends Struct {
2634
+ @Struct.field(entity_ref, {array: true})
2635
+ declare entities: entity_ref[]
2636
+ @Struct.field(route_waypoint, {array: true})
2637
+ declare waypoints: route_waypoint[]
2638
+ @Struct.field('bool')
2639
+ declare recharge: boolean
2640
+ }
2641
+ @Struct.type('vote_option')
2642
+ export class vote_option extends Struct {
2643
+ @Struct.field(UInt32)
2644
+ declare node_id: UInt32
2645
+ @Struct.field(UInt64)
2646
+ declare cost: UInt64
2647
+ @Struct.field(UInt32)
2648
+ declare seat: UInt32
2649
+ @Struct.field(UInt64)
2650
+ declare weight: UInt64
2651
+ @Struct.field(UInt32)
2652
+ declare rank: UInt32
2653
+ }
2654
+ @Struct.type('vote_result')
2655
+ export class vote_result extends Struct {
2656
+ @Struct.field(UInt64)
2657
+ declare location_id: UInt64
2658
+ @Struct.field(UInt64)
2659
+ declare ballot_id: UInt64
2660
+ @Struct.field(UInt32)
2661
+ declare epoch: UInt32
2662
+ @Struct.field(UInt32)
2663
+ declare settled_epoch: UInt32
2664
+ @Struct.field(UInt32)
2665
+ declare seats: UInt32
2666
+ @Struct.field('bool')
2667
+ declare settling: boolean
2668
+ @Struct.field(UInt32, {array: true})
2669
+ declare queue: UInt32[]
2670
+ @Struct.field(vote_option, {array: true})
2671
+ declare options: vote_option[]
2672
+ @Struct.field(UInt32, {array: true})
2673
+ declare picks: UInt32[]
2674
+ }
1177
2675
  @Struct.type('types_row')
1178
2676
  export class types_row extends Struct {
1179
2677
  @Struct.field(UInt64)
@@ -1184,49 +2682,67 @@ export namespace Types {
1184
2682
  declare game_config_type: game_config
1185
2683
  @Struct.field(stratum_remaining)
1186
2684
  declare stratum_remaining_type: stratum_remaining
2685
+ @Struct.field(nft_item_payload)
2686
+ declare nft_item_payload_type: nft_item_payload
2687
+ @Struct.field(decomp_result)
2688
+ declare decomp_result_type: decomp_result
2689
+ @Struct.field(demand_result)
2690
+ declare demand_result_type: demand_result
2691
+ @Struct.field(infvalue_result)
2692
+ declare infvalue_result_type: infvalue_result
2693
+ @Struct.field(influence_totals)
2694
+ declare influence_totals_type: influence_totals
2695
+ @Struct.field(pools_result)
2696
+ declare pools_result_type: pools_result
2697
+ @Struct.field(pool_pair_result)
2698
+ declare pool_pair_result_type: pool_pair_result
2699
+ @Struct.field(mintcfg_result)
2700
+ declare mintcfg_result_type: mintcfg_result
2701
+ @Struct.field(charter_result)
2702
+ declare charter_result_type: charter_result
2703
+ @Struct.field(charterready_result)
2704
+ declare charterready_result_type: charterready_result
2705
+ @Struct.field(vote_result)
2706
+ declare vote_result_type: vote_result
2707
+ @Struct.field(depot_view)
2708
+ declare depot_view_type: depot_view
1187
2709
  }
1188
2710
  @Struct.type('undeploy')
1189
2711
  export class undeploy extends Struct {
1190
- @Struct.field(Name)
1191
- declare host_type: Name
1192
2712
  @Struct.field(UInt64)
1193
2713
  declare host_id: UInt64
1194
- @Struct.field(Name)
1195
- declare target_type: Name
1196
2714
  @Struct.field(UInt64)
1197
2715
  declare target_id: UInt64
1198
2716
  }
1199
- @Struct.type('warehouse_row')
1200
- export class warehouse_row extends Struct {
2717
+ @Struct.type('unload')
2718
+ export class unload extends Struct {
1201
2719
  @Struct.field(UInt64)
1202
2720
  declare id: UInt64
1203
- @Struct.field(Name)
1204
- declare owner: Name
1205
- @Struct.field('string')
1206
- declare name: string
1207
2721
  @Struct.field(UInt64)
1208
- declare stats: UInt64
1209
- @Struct.field(coordinates)
1210
- declare coordinates: coordinates
1211
- @Struct.field(UInt32, {optional: true})
1212
- declare hullmass?: UInt32
1213
- @Struct.field(UInt32, {optional: true})
1214
- declare capacity?: UInt32
1215
- @Struct.field(UInt32)
1216
- declare cargomass: UInt32
1217
- @Struct.field(loader_stats, {optional: true})
1218
- declare loaders?: loader_stats
1219
- @Struct.field(module_entry, {array: true})
1220
- declare modules: module_entry[]
1221
- @Struct.field(schedule, {optional: true})
1222
- declare schedule?: schedule
2722
+ declare to_id: UInt64
2723
+ @Struct.field(cargo_item, {array: true})
2724
+ declare items: cargo_item[]
2725
+ }
2726
+ @Struct.type('upgrade')
2727
+ export class upgrade extends Struct {
2728
+ @Struct.field(UInt64)
2729
+ declare builder_id: UInt64
2730
+ @Struct.field(UInt64)
2731
+ declare target_id: UInt64
1223
2732
  @Struct.field(UInt16)
1224
- declare item_id: UInt16
2733
+ declare target_item_id: UInt16
2734
+ @Struct.field(cargo_item, {array: true})
2735
+ declare inputs: cargo_item[]
2736
+ @Struct.field(UInt8, {optional: true})
2737
+ declare slot?: UInt8
2738
+ }
2739
+ @Struct.type('voteready')
2740
+ export class voteready extends Struct {
2741
+ @Struct.field(UInt32)
2742
+ declare max_pages: UInt32
1225
2743
  }
1226
2744
  @Struct.type('warp')
1227
2745
  export class warp extends Struct {
1228
- @Struct.field(Name)
1229
- declare entity_type: Name
1230
2746
  @Struct.field(UInt64)
1231
2747
  declare id: UInt64
1232
2748
  @Struct.field(Int64)
@@ -1234,131 +2750,375 @@ export namespace Types {
1234
2750
  @Struct.field(Int64)
1235
2751
  declare y: Int64
1236
2752
  }
2753
+ @Struct.type('window_receipt')
2754
+ export class window_receipt extends Struct {
2755
+ @Struct.field(UInt64)
2756
+ declare job_id: UInt64
2757
+ @Struct.field(TimePoint)
2758
+ declare starts_at: TimePoint
2759
+ @Struct.field(TimePoint)
2760
+ declare completes_at: TimePoint
2761
+ }
1237
2762
  @Struct.type('wipe')
1238
2763
  export class wipe extends Struct {}
1239
- @Struct.type('wipesequence')
1240
- export class wipesequence extends Struct {}
1241
- @Struct.type('wrap')
1242
- export class wrap extends Struct {
2764
+ @Struct.type('worlds_row')
2765
+ export class worlds_row extends Struct {
2766
+ @Struct.field(UInt64)
2767
+ declare location_id: UInt64
2768
+ @Struct.field(UInt64)
2769
+ declare lifetime: UInt64
2770
+ @Struct.field(UInt64)
2771
+ declare active: UInt64
2772
+ @Struct.field(UInt32)
2773
+ declare active_epoch: UInt32
2774
+ @Struct.field(UInt64)
2775
+ declare spent: UInt64
2776
+ @Struct.field(UInt64)
2777
+ declare unassigned: UInt64
2778
+ @Struct.field(UInt64)
2779
+ declare ballot_id: UInt64
1243
2780
  @Struct.field(Name)
1244
- declare owner: Name
2781
+ declare founder: Name
2782
+ @Struct.field(UInt32)
2783
+ declare founded: UInt32
2784
+ }
2785
+ @Struct.type('wormhole_info')
2786
+ export class wormhole_info extends Struct {
2787
+ @Struct.field(coordinates)
2788
+ declare coords: coordinates
2789
+ @Struct.field('bool')
2790
+ declare is_wormhole: boolean
2791
+ @Struct.field(coordinates)
2792
+ declare destination: coordinates
2793
+ }
2794
+ @Struct.type('wrapconfig_row')
2795
+ export class wrapconfig_row extends Struct {
2796
+ @Struct.field(UInt16)
2797
+ declare fee_pct: UInt16
1245
2798
  @Struct.field(Name)
1246
- declare entity_type: Name
2799
+ declare fee_account: Name
1247
2800
  @Struct.field(UInt64)
1248
- declare entity_id: UInt64
1249
- @Struct.field(cargo_item, {array: true})
1250
- declare items: cargo_item[]
2801
+ declare min_asset_id: UInt64
1251
2802
  }
1252
- @Struct.type('wrapentity')
1253
- export class wrapentity extends Struct {
1254
- @Struct.field(Name)
1255
- declare entity_type: Name
2803
+ @Struct.type('wrapcost_row')
2804
+ export class wrapcost_row extends Struct {
2805
+ @Struct.field(UInt8)
2806
+ declare item_type: UInt8
2807
+ @Struct.field(UInt8)
2808
+ declare tier: UInt8
1256
2809
  @Struct.field(UInt64)
1257
- declare entity_id: UInt64
2810
+ declare amount: UInt64
1258
2811
  }
1259
2812
  }
1260
2813
  export const TableMap = {
2814
+ ballot: Types.ballot_row,
2815
+ ballotpicks: Types.ballotpicks_row,
2816
+ ballotseq: Types.ballot_seq_row,
2817
+ ballotsettle: Types.ballotsettle_row,
2818
+ buildings: Types.buildings_row,
2819
+ buildjobs: Types.buildjob_row,
1261
2820
  cargo: Types.cargo_row,
1262
- container: Types.container_row,
2821
+ citizenship: Types.citizenship_row,
2822
+ civicconfig: Types.civicconfig_row,
2823
+ claims: Types.claim_row,
2824
+ cluster: Types.cluster_row,
2825
+ commit: Types.commit_row,
2826
+ craftjobs: Types.craftjob_row,
2827
+ entity: Types.entity_row,
1263
2828
  entitygroup: Types.entitygroup_row,
1264
- location: Types.location_row,
1265
- nexus: Types.nexus_row,
2829
+ entityseq: Types.entity_seq_row,
2830
+ epoch: Types.epoch_row,
2831
+ infburn: Types.infburn_row,
2832
+ infdemand: Types.infdemand_row,
2833
+ infmint: Types.infmint_row,
2834
+ infpool: Types.infpool_row,
2835
+ infquality: Types.infquality_row,
2836
+ infweight: Types.infweight_row,
2837
+ lockers: Types.locker_row,
2838
+ mandates: Types.mandates_row,
2839
+ mintq: Types.mintq_row,
1266
2840
  nftconfig: Types.nftconfig_row,
2841
+ oraclecfg: Types.oracle_config_row,
2842
+ oracles: Types.oracle_row,
1267
2843
  player: Types.player_row,
2844
+ progress: Types.progress_row,
1268
2845
  reserve: Types.reserve_row,
1269
- sequence: Types.sequence_row,
1270
- ship: Types.ship_row,
2846
+ reveal: Types.reveal_row,
2847
+ standing: Types.standing_row,
1271
2848
  state: Types.state_row,
2849
+ storage: Types.storage_row,
1272
2850
  types: Types.types_row,
1273
- warehouse: Types.warehouse_row,
2851
+ worlds: Types.worlds_row,
2852
+ wrapconfig: Types.wrapconfig_row,
2853
+ wrapcost: Types.wrapcost_row,
1274
2854
  }
1275
2855
  export interface TableTypes {
2856
+ ballot: Types.ballot_row
2857
+ ballotpicks: Types.ballotpicks_row
2858
+ ballotseq: Types.ballot_seq_row
2859
+ ballotsettle: Types.ballotsettle_row
2860
+ buildings: Types.buildings_row
2861
+ buildjobs: Types.buildjob_row
1276
2862
  cargo: Types.cargo_row
1277
- container: Types.container_row
2863
+ citizenship: Types.citizenship_row
2864
+ civicconfig: Types.civicconfig_row
2865
+ claims: Types.claim_row
2866
+ cluster: Types.cluster_row
2867
+ commit: Types.commit_row
2868
+ craftjobs: Types.craftjob_row
2869
+ entity: Types.entity_row
1278
2870
  entitygroup: Types.entitygroup_row
1279
- location: Types.location_row
1280
- nexus: Types.nexus_row
2871
+ entityseq: Types.entity_seq_row
2872
+ epoch: Types.epoch_row
2873
+ infburn: Types.infburn_row
2874
+ infdemand: Types.infdemand_row
2875
+ infmint: Types.infmint_row
2876
+ infpool: Types.infpool_row
2877
+ infquality: Types.infquality_row
2878
+ infweight: Types.infweight_row
2879
+ lockers: Types.locker_row
2880
+ mandates: Types.mandates_row
2881
+ mintq: Types.mintq_row
1281
2882
  nftconfig: Types.nftconfig_row
2883
+ oraclecfg: Types.oracle_config_row
2884
+ oracles: Types.oracle_row
1282
2885
  player: Types.player_row
2886
+ progress: Types.progress_row
1283
2887
  reserve: Types.reserve_row
1284
- sequence: Types.sequence_row
1285
- ship: Types.ship_row
2888
+ reveal: Types.reveal_row
2889
+ standing: Types.standing_row
1286
2890
  state: Types.state_row
2891
+ storage: Types.storage_row
1287
2892
  types: Types.types_row
1288
- warehouse: Types.warehouse_row
2893
+ worlds: Types.worlds_row
2894
+ wrapconfig: Types.wrapconfig_row
2895
+ wrapcost: Types.wrapcost_row
1289
2896
  }
1290
2897
  export type RowType<T> = T extends keyof TableTypes ? TableTypes[T] : any
1291
2898
  export type TableNames = keyof TableTypes
1292
2899
  export namespace ActionParams {
1293
2900
  export namespace Type {
1294
- export interface cargo_ref {
2901
+ export interface cargo_item {
1295
2902
  item_id: UInt16Type
1296
2903
  stats: UInt64Type
1297
2904
  modules: Type.module_entry[]
2905
+ quantity: UInt32Type
2906
+ entity_id?: UInt64Type
1298
2907
  }
1299
2908
  export interface module_entry {
1300
2909
  type: UInt8Type
1301
2910
  installed?: Type.packed_module
1302
2911
  }
1303
- export interface packed_module {
1304
- item_id: UInt16Type
1305
- stats: UInt64Type
2912
+ export interface packed_module {
2913
+ item_id: UInt16Type
2914
+ stats: UInt64Type
2915
+ }
2916
+ export interface cargo_ref {
2917
+ item_id: UInt16Type
2918
+ stats: UInt64Type
2919
+ modules: Type.module_entry[]
2920
+ entity_id?: UInt64Type
2921
+ }
2922
+ export interface cluster_slot {
2923
+ hub: UInt64Type
2924
+ gx: Int8Type
2925
+ gy: Int8Type
2926
+ }
2927
+ export interface cluster_source {
2928
+ source_id: UInt64Type
2929
+ items: Type.cargo_item[]
2930
+ }
2931
+ export interface game_config {
2932
+ version: UInt32Type
2933
+ defaults: Type.entity_defaults
2934
+ items: Type.item_def[]
2935
+ }
2936
+ export interface entity_defaults {
2937
+ warehouse_z: UInt16Type
2938
+ container_z: UInt16Type
2939
+ }
2940
+ export interface item_def {
2941
+ id: UInt16Type
2942
+ mass: UInt32Type
2943
+ type: UInt8Type
2944
+ subtype: UInt8Type
2945
+ tier: UInt8Type
2946
+ }
2947
+ export interface craftjob_row {
2948
+ id: UInt64Type
2949
+ building: UInt64Type
2950
+ socket: UInt8Type
2951
+ owner: NameType
2952
+ ship_id: UInt64Type
2953
+ coords: Type.coordinates
2954
+ starts_at: TimePointType
2955
+ completes_at: TimePointType
2956
+ recipe_id: UInt16Type
2957
+ quantity: UInt32Type
2958
+ energy_paid: UInt32Type
2959
+ cargo: Type.cargo_item[]
2960
+ deposited: boolean
2961
+ arrives_at: TimePointType
2962
+ }
2963
+ export interface coordinates {
2964
+ x: Int64Type
2965
+ y: Int64Type
2966
+ z?: UInt16Type
2967
+ }
2968
+ export interface buildjob_row {
2969
+ id: UInt64Type
2970
+ building: UInt64Type
2971
+ socket: UInt8Type
2972
+ target: UInt64Type
2973
+ owner: NameType
2974
+ coords: Type.coordinates
2975
+ starts_at: TimePointType
2976
+ completes_at: TimePointType
2977
+ target_item_id: UInt16Type
2978
+ cargo: Type.cargo_item[]
2979
+ deposited: boolean
2980
+ arrives_at: TimePointType
2981
+ }
2982
+ export interface socket_candidate {
2983
+ windows: Type.reserved_window[]
2984
+ duration: UInt32Type
2985
+ active: UInt16Type
1306
2986
  }
1307
- export interface cargo_item {
2987
+ export interface reserved_window {
2988
+ id: UInt64Type
2989
+ arrival: TimePointType
2990
+ starts_at: TimePointType
2991
+ completes_at: TimePointType
2992
+ }
2993
+ export interface entity_row {
2994
+ id: UInt64Type
2995
+ owner: NameType
2996
+ kind: NameType
1308
2997
  item_id: UInt16Type
2998
+ name: string
1309
2999
  stats: UInt64Type
3000
+ coordinates: Type.coordinates
3001
+ energy?: UInt32Type
3002
+ cargomass: UInt32Type
1310
3003
  modules: Type.module_entry[]
1311
- quantity: UInt32Type
3004
+ lanes: Type.lane[]
3005
+ holds: Type.hold[]
1312
3006
  }
1313
- export interface game_config {
1314
- version: UInt32Type
1315
- defaults: Type.entity_defaults
1316
- items: Type.item_def[]
3007
+ export interface lane {
3008
+ lane_key: UInt8Type
3009
+ schedule: Type.schedule
1317
3010
  }
1318
- export interface entity_defaults {
1319
- warehouse_z: UInt16Type
1320
- container_z: UInt16Type
3011
+ export interface schedule {
3012
+ started: TimePointType
3013
+ tasks: Type.task[]
1321
3014
  }
1322
- export interface item_def {
1323
- id: UInt16Type
1324
- mass: UInt32Type
3015
+ export interface task {
1325
3016
  type: UInt8Type
1326
- subtype: UInt8Type
1327
- tier: UInt8Type
3017
+ duration: UInt32Type
3018
+ cancelable: UInt8Type
3019
+ coordinates?: Type.coordinates
3020
+ cargo: Type.cargo_item[]
3021
+ couplings: Type.coupling[]
3022
+ subject?: Type.entity_ref
3023
+ entitygroup?: UInt64Type
3024
+ energy_cost?: UInt32Type
3025
+ target_item_id?: UInt16Type
3026
+ refit?: Type.refit_op
3027
+ charter_node?: UInt32Type
3028
+ }
3029
+ export interface coupling {
3030
+ counterpart: Type.entity_ref
3031
+ hold: UInt64Type
3032
+ kind: UInt8Type
1328
3033
  }
1329
3034
  export interface entity_ref {
1330
3035
  entity_type: NameType
1331
3036
  entity_id: UInt64Type
1332
3037
  }
1333
- export interface coordinates {
1334
- x: Int64Type
1335
- y: Int64Type
1336
- z?: UInt16Type
3038
+ export interface refit_op {
3039
+ op: UInt8Type
3040
+ slot: UInt8Type
3041
+ }
3042
+ export interface hold {
3043
+ id: UInt64Type
3044
+ kind: UInt8Type
3045
+ counterpart: Type.entity_ref
3046
+ until: TimePointType
3047
+ incoming_mass: UInt32Type
3048
+ }
3049
+ export interface cargo_row {
3050
+ id: UInt64Type
3051
+ entity_id: UInt64Type
3052
+ item_id: UInt64Type
3053
+ quantity: UInt64Type
3054
+ stats: UInt64Type
3055
+ modules: Type.module_entry[]
3056
+ sequence_id?: UInt64Type
3057
+ }
3058
+ export interface epoch_row {
3059
+ epoch: UInt64Type
3060
+ oracle_ids: NameType[]
3061
+ threshold: UInt8Type
3062
+ seed: Checksum256Type
3063
+ }
3064
+ export interface entitygroup_row {
3065
+ id: UInt64Type
3066
+ participants: Type.entity_ref[]
3067
+ }
3068
+ export interface nftconfig_row {
3069
+ item_id: UInt16Type
3070
+ template_id: Int32Type
3071
+ schema_name: NameType
3072
+ }
3073
+ export interface reserve_row {
3074
+ id: UInt64Type
3075
+ coord_id: UInt64Type
3076
+ stratum: UInt16Type
3077
+ remaining: UInt32Type
3078
+ last_block: BlockTimestamp
3079
+ }
3080
+ export interface state_row {
3081
+ enabled: boolean
3082
+ epoch: UInt32Type
3083
+ seed: Checksum256Type
1337
3084
  }
1338
3085
  export interface task_event {
1339
3086
  event_type: UInt8Type
1340
3087
  owner: NameType
1341
3088
  entity_type: NameType
1342
3089
  entity_id: UInt64Type
1343
- task_index: UInt8Type
3090
+ task_index: UInt32Type
1344
3091
  task: Type.task
1345
3092
  starts_at: TimePointType
1346
3093
  completes_at: TimePointType
1347
- new_energy?: UInt16Type
3094
+ new_energy?: UInt32Type
3095
+ lane_key: UInt8Type
1348
3096
  }
1349
- export interface task {
1350
- type: UInt8Type
1351
- duration: UInt32Type
1352
- cancelable: UInt8Type
1353
- coordinates?: Type.coordinates
1354
- cargo: Type.cargo_item[]
1355
- entitytarget?: Type.entity_ref
1356
- entitygroup?: UInt64Type
1357
- energy_cost?: UInt16Type
3097
+ export interface cluster_row {
3098
+ root: UInt64Type
3099
+ cells: Type.cluster_cell[]
3100
+ }
3101
+ export interface cluster_cell {
3102
+ gx: Int8Type
3103
+ gy: Int8Type
3104
+ entity: UInt64Type
1358
3105
  }
3106
+ export interface route_waypoint {
3107
+ x: Int64Type
3108
+ y: Int64Type
3109
+ }
3110
+ }
3111
+ export interface abandonplot {
3112
+ plot_id: UInt64Type
3113
+ }
3114
+ export interface addcontrib {
3115
+ player: NameType
3116
+ entity_id: UInt64Type
3117
+ x: Int64Type
3118
+ y: Int64Type
3119
+ bundle: Type.cargo_item[]
1359
3120
  }
1360
3121
  export interface addmodule {
1361
- entity_type: NameType
1362
3122
  entity_id: UInt64Type
1363
3123
  module_index: UInt8Type
1364
3124
  module_ref: Type.cargo_ref
@@ -1369,25 +3129,69 @@ export namespace ActionParams {
1369
3129
  x: Int64Type
1370
3130
  y: Int64Type
1371
3131
  }
1372
- export interface advance {
1373
- reveal: string
1374
- commit: Checksum256Type
3132
+ export interface addoracle {
3133
+ oracle_id: NameType
1375
3134
  }
1376
3135
  export interface blend {
1377
- entity_type: NameType
1378
3136
  id: UInt64Type
1379
3137
  inputs: Type.cargo_item[]
1380
3138
  }
3139
+ export interface buildjob {
3140
+ target_id: UInt64Type
3141
+ dock_id: UInt64Type
3142
+ target_item_id: UInt16Type
3143
+ inputs: Type.cargo_item[]
3144
+ }
3145
+ export interface buildplot {
3146
+ builder_id: UInt64Type
3147
+ plot_id: UInt64Type
3148
+ }
1381
3149
  export interface cancel {
1382
- entity_type: NameType
1383
3150
  id: UInt64Type
3151
+ lane_key: UInt8Type
1384
3152
  count: UInt64Type
1385
3153
  }
1386
- export interface claimstarter {
1387
- account: NameType
3154
+ export interface cancelbuild {
3155
+ job_id: UInt64Type
3156
+ }
3157
+ export interface cancelcivic {
3158
+ building: UInt64Type
3159
+ lane_key: UInt8Type
3160
+ from_id: UInt64Type
3161
+ }
3162
+ export interface cancelcraft {
3163
+ job_id: UInt64Type
3164
+ }
3165
+ export interface castballot {
3166
+ player: NameType
3167
+ ballot_id: UInt64Type
3168
+ picks: UInt32Type[]
3169
+ }
3170
+ export interface charterready {
1388
3171
  x: Int64Type
1389
3172
  y: Int64Type
1390
3173
  }
3174
+ export interface civicshuttle {
3175
+ building: UInt64Type
3176
+ from_id: UInt64Type
3177
+ to_id: UInt64Type
3178
+ items: Type.cargo_item[]
3179
+ }
3180
+ export interface claimbuild {
3181
+ job_id: UInt64Type
3182
+ }
3183
+ export interface claimcraft {
3184
+ job_id: UInt64Type
3185
+ ship_id: UInt64Type
3186
+ }
3187
+ export interface claimplot {
3188
+ builder_id: UInt64Type
3189
+ target_item_id: UInt16Type
3190
+ slot: Type.cluster_slot
3191
+ }
3192
+ export interface claimstarter {
3193
+ owner: NameType
3194
+ }
1391
3195
  export interface cleanrsvp {
1392
3196
  epoch: UInt64Type
1393
3197
  max_rows: UInt64Type
@@ -1397,34 +3201,109 @@ export namespace ActionParams {
1397
3201
  scope?: NameType
1398
3202
  max_rows?: UInt64Type
1399
3203
  }
3204
+ export interface closeepoch {
3205
+ epoch: UInt64Type
3206
+ }
3207
+ export interface clustercraft {
3208
+ id: UInt64Type
3209
+ recipe_id: UInt16Type
3210
+ quantity: UInt32Type
3211
+ sources: Type.cluster_source[]
3212
+ target?: UInt64Type
3213
+ slot?: UInt8Type
3214
+ }
1400
3215
  export interface commit {
3216
+ oracle_id: NameType
3217
+ epoch: UInt64Type
1401
3218
  commit: Checksum256Type
1402
3219
  }
1403
3220
  export interface configlog {
1404
3221
  config: Type.game_config
1405
3222
  }
1406
3223
  export interface craft {
1407
- entity_type: NameType
1408
3224
  id: UInt64Type
1409
3225
  recipe_id: UInt16Type
1410
3226
  quantity: UInt32Type
1411
3227
  inputs: Type.cargo_item[]
3228
+ target?: UInt64Type
3229
+ slot?: UInt8Type
3230
+ }
3231
+ export interface craftjob {
3232
+ ship_id: UInt64Type
3233
+ workshop_id: UInt64Type
3234
+ recipe_id: UInt16Type
3235
+ quantity: UInt32Type
3236
+ inputs: Type.cargo_item[]
1412
3237
  }
1413
- export interface createentity {
3238
+ export interface dbgcredit {
1414
3239
  owner: NameType
1415
- entity_type: NameType
1416
- entity_name: string
1417
3240
  x: Int64Type
1418
3241
  y: Int64Type
3242
+ amount_atomic: UInt64Type
3243
+ node?: UInt32Type
3244
+ }
3245
+ export interface dbgjobs {
3246
+ crafts: Type.craftjob_row[]
3247
+ builds: Type.buildjob_row[]
3248
+ }
3249
+ export interface dbgmandate {
3250
+ x: Int64Type
3251
+ y: Int64Type
3252
+ node_id: UInt32Type
3253
+ }
3254
+ export interface dbgoldjobs {
3255
+ crafts: Type.craftjob_row[]
3256
+ builds: Type.buildjob_row[]
3257
+ }
3258
+ export interface dbgpagerows {
3259
+ rows: UInt32Type
3260
+ }
3261
+ export interface dbgpick {
3262
+ sockets: Type.socket_candidate[]
3263
+ id: UInt64Type
3264
+ arrival: TimePointType
3265
+ cap: UInt16Type
3266
+ }
3267
+ export interface dbgplace {
3268
+ windows: Type.reserved_window[]
3269
+ id: UInt64Type
3270
+ arrival: TimePointType
3271
+ duration: UInt32Type
3272
+ }
3273
+ export interface dbgpurge {
3274
+ table_name: NameType
3275
+ scope?: NameType
3276
+ }
3277
+ export interface dbgrepack {
3278
+ windows: Type.reserved_window[]
3279
+ cancelled_id: UInt64Type
3280
+ now: TimePointType
3281
+ }
3282
+ export interface dbgseats {
3283
+ x: Int64Type
3284
+ y: Int64Type
3285
+ seats: UInt32Type
3286
+ }
3287
+ export interface delentity {
3288
+ entity_id: UInt64Type
1419
3289
  }
1420
3290
  export interface demolish {
1421
- entity_type: NameType
1422
3291
  entity_id: UInt64Type
1423
3292
  }
1424
3293
  export interface deploy {
1425
- entity_type: NameType
1426
3294
  id: UInt64Type
1427
3295
  ref: Type.cargo_ref
3296
+ slot?: Type.cluster_slot
3297
+ }
3298
+ export interface depotstore {
3299
+ ship_id: UInt64Type
3300
+ depot_id: UInt64Type
3301
+ items: Type.cargo_item[]
3302
+ }
3303
+ export interface depottake {
3304
+ ship_id: UInt64Type
3305
+ depot_id: UInt64Type
3306
+ items: Type.cargo_item[]
1428
3307
  }
1429
3308
  export interface descentity {
1430
3309
  item_id: UInt16Type
@@ -1435,29 +3314,117 @@ export namespace ActionParams {
1435
3314
  export interface enable {
1436
3315
  enabled: boolean
1437
3316
  }
3317
+ export interface fixcargomass {
3318
+ entity_id: UInt64Type
3319
+ }
3320
+ export interface fixitemids {}
3321
+ export interface forcereveal {
3322
+ epoch: UInt64Type
3323
+ }
3324
+ export interface found {
3325
+ player: NameType
3326
+ entity_id: UInt64Type
3327
+ x: Int64Type
3328
+ y: Int64Type
3329
+ }
1438
3330
  export interface gather {
1439
- source: Type.entity_ref
1440
- destination: Type.entity_ref
3331
+ source_id: UInt64Type
3332
+ destination_id: UInt64Type
3333
+ stratum: UInt16Type
3334
+ quantity: UInt32Type
3335
+ slot?: UInt8Type
3336
+ }
3337
+ export interface gatherplan {
3338
+ source_id: UInt64Type
3339
+ destination_id: UInt64Type
1441
3340
  stratum: UInt16Type
1442
3341
  quantity: UInt32Type
3342
+ recharge: boolean
3343
+ slots: BytesType
3344
+ }
3345
+ export interface genesisfleet {
3346
+ entities: Type.entity_row[]
3347
+ }
3348
+ export interface genesisworld {
3349
+ founder: NameType
3350
+ x: Int64Type
3351
+ y: Int64Type
3352
+ node_ids: UInt32Type[]
3353
+ }
3354
+ export interface getbuildjobs {
3355
+ building_id: UInt64Type
3356
+ }
3357
+ export interface getcharter {
3358
+ x: Int64Type
3359
+ y: Int64Type
3360
+ }
3361
+ export interface getcharttree {}
3362
+ export interface getchrtready {}
3363
+ export interface getcluster {
3364
+ hub_id: UInt64Type
1443
3365
  }
1444
3366
  export interface getconfig {}
3367
+ export interface getcraftjobs {
3368
+ building_id: UInt64Type
3369
+ }
3370
+ export interface getdecomp {
3371
+ item_id: UInt16Type
3372
+ }
3373
+ export interface getdemand {
3374
+ x: Int64Type
3375
+ y: Int64Type
3376
+ }
3377
+ export interface getdeposit {
3378
+ owner: NameType
3379
+ asset_id: UInt64Type
3380
+ }
3381
+ export interface getdepot {
3382
+ depot_id: UInt64Type
3383
+ owner: NameType
3384
+ }
3385
+ export interface getdistance {
3386
+ ax: Int64Type
3387
+ ay: Int64Type
3388
+ bx: Int64Type
3389
+ by: Int64Type
3390
+ }
1445
3391
  export interface geteligible {
1446
3392
  coords: Type.coordinates
1447
3393
  stratum: UInt16Type
1448
3394
  }
3395
+ export interface getentcls {}
1449
3396
  export interface getentities {
1450
3397
  owner: NameType
1451
3398
  entity_type?: NameType
1452
3399
  }
1453
3400
  export interface getentity {
1454
- entity_type: NameType
1455
3401
  entity_id: UInt64Type
1456
3402
  }
3403
+ export interface getfootprint {
3404
+ item_id: UInt16Type
3405
+ }
3406
+ export interface getinfdecay {
3407
+ active: UInt64Type
3408
+ epochs: UInt32Type
3409
+ }
3410
+ export interface getinfluence {
3411
+ owner: NameType
3412
+ x: Int64Type
3413
+ y: Int64Type
3414
+ }
3415
+ export interface getinfvalue {
3416
+ items: Type.cargo_item[]
3417
+ x: Int64Type
3418
+ y: Int64Type
3419
+ }
1457
3420
  export interface getitemdata {}
1458
3421
  export interface getitemids {}
1459
3422
  export interface getitems {}
3423
+ export interface getitemtype {
3424
+ item_id: UInt16Type
3425
+ }
1460
3426
  export interface getitemtypes {}
3427
+ export interface getkindmeta {}
1461
3428
  export interface getlocation {
1462
3429
  x: Int64Type
1463
3430
  y: Int64Type
@@ -1466,17 +3433,28 @@ export namespace ActionParams {
1466
3433
  x: Int64Type
1467
3434
  y: Int64Type
1468
3435
  }
3436
+ export interface getmintcfg {}
3437
+ export interface getmintready {}
1469
3438
  export interface getmodtypes {}
1470
3439
  export interface getmodules {}
1471
3440
  export interface getnearby {
1472
- entity_type: NameType
1473
3441
  entity_id: UInt64Type
1474
3442
  recharge: boolean
1475
3443
  }
3444
+ export interface getnftbase {}
1476
3445
  export interface getnftinfo {}
1477
3446
  export interface getplayer {
1478
3447
  account: NameType
1479
3448
  }
3449
+ export interface getpool {
3450
+ category: UInt8Type
3451
+ tier: UInt8Type
3452
+ }
3453
+ export interface getpools {}
3454
+ export interface getprojstate {
3455
+ entity_id: UInt64Type
3456
+ task_count?: UInt8Type
3457
+ }
1480
3458
  export interface getrecipe {
1481
3459
  output_item_id: UInt16Type
1482
3460
  }
@@ -1500,6 +3478,23 @@ export namespace ActionParams {
1500
3478
  owner: NameType
1501
3479
  entity_type?: NameType
1502
3480
  }
3481
+ export interface getvoteready {}
3482
+ export interface getvotes {
3483
+ x: Int64Type
3484
+ y: Int64Type
3485
+ player: NameType
3486
+ }
3487
+ export interface getwormhole {
3488
+ x: Int64Type
3489
+ y: Int64Type
3490
+ }
3491
+ export interface grouptransit {
3492
+ entities: Type.entity_ref[]
3493
+ ax: Int64Type
3494
+ ay: Int64Type
3495
+ bx: Int64Type
3496
+ by: Int64Type
3497
+ }
1503
3498
  export interface grouptravel {
1504
3499
  entities: Type.entity_ref[]
1505
3500
  x: Int64Type
@@ -1512,26 +3507,113 @@ export namespace ActionParams {
1512
3507
  export interface hash512 {
1513
3508
  value: string
1514
3509
  }
1515
- export interface init {
1516
- seed: Checksum256Type
3510
+ export interface importcargo {
3511
+ row: Type.cargo_row
3512
+ }
3513
+ export interface importcell {
3514
+ root: UInt64Type
3515
+ gx: Int8Type
3516
+ gy: Int8Type
3517
+ entity_id: UInt64Type
3518
+ }
3519
+ export interface importentity {
3520
+ row: Type.entity_row
3521
+ }
3522
+ export interface importepoch {
3523
+ row: Type.epoch_row
3524
+ }
3525
+ export interface importgroup {
3526
+ row: Type.entitygroup_row
3527
+ }
3528
+ export interface importnftcfg {
3529
+ row: Type.nftconfig_row
3530
+ }
3531
+ export interface importplayer {
3532
+ owner: NameType
3533
+ }
3534
+ export interface importreserve {
3535
+ epoch_scope: UInt32Type
3536
+ row: Type.reserve_row
3537
+ }
3538
+ export interface importstate {
3539
+ row: Type.state_row
1517
3540
  }
1518
3541
  export interface join {
1519
3542
  account: NameType
1520
3543
  }
3544
+ export interface launch {
3545
+ launcher_id: UInt64Type
3546
+ catcher_id: UInt64Type
3547
+ items: Type.cargo_item[]
3548
+ }
3549
+ export interface load {
3550
+ id: UInt64Type
3551
+ from_id: UInt64Type
3552
+ items: Type.cargo_item[]
3553
+ }
3554
+ export interface migratejobs {}
3555
+ export interface mintready {
3556
+ max_mints?: UInt32Type
3557
+ }
3558
+ export interface movetile {
3559
+ hub_id: UInt64Type
3560
+ from_gx: Int8Type
3561
+ from_gy: Int8Type
3562
+ to_gx: Int8Type
3563
+ to_gy: Int8Type
3564
+ }
3565
+ export interface naturalize {
3566
+ player: NameType
3567
+ x: Int64Type
3568
+ y: Int64Type
3569
+ }
3570
+ export interface nftimgurl {
3571
+ item: Type.cargo_item
3572
+ location?: Type.coordinates
3573
+ }
1521
3574
  export interface notify {
1522
3575
  event: Type.task_event
1523
3576
  }
3577
+ export interface placecargo {
3578
+ owner: NameType
3579
+ host_id: UInt64Type
3580
+ asset_id: UInt64Type
3581
+ }
3582
+ export interface placeentity {
3583
+ owner: NameType
3584
+ asset_id: UInt64Type
3585
+ target_nexus_id: UInt64Type
3586
+ }
1524
3587
  export interface recharge {
1525
- entity_type: NameType
1526
3588
  id: UInt64Type
1527
3589
  }
3590
+ export interface refrshentity {
3591
+ entity_id: UInt64Type
3592
+ }
3593
+ export interface removeoracle {
3594
+ oracle_id: NameType
3595
+ }
3596
+ export interface rename {
3597
+ id: UInt64Type
3598
+ name: string
3599
+ }
1528
3600
  export interface resolve {
1529
- entity_type: NameType
1530
3601
  id: UInt64Type
1531
3602
  count?: UInt64Type
1532
3603
  }
3604
+ export interface resolveall {
3605
+ owner: NameType
3606
+ }
3607
+ export interface resolveearly {
3608
+ id: UInt64Type
3609
+ count?: UInt64Type
3610
+ }
3611
+ export interface reveal {
3612
+ oracle_id: NameType
3613
+ epoch: UInt64Type
3614
+ reveal: Checksum256Type
3615
+ }
1533
3616
  export interface rmmodule {
1534
- entity_type: NameType
1535
3617
  entity_id: UInt64Type
1536
3618
  module_index: UInt8Type
1537
3619
  target_ref?: Type.cargo_ref
@@ -1539,103 +3621,234 @@ export namespace ActionParams {
1539
3621
  export interface rmnftcfg {
1540
3622
  item_id: UInt16Type
1541
3623
  }
1542
- export interface salt {
1543
- salt: UInt64Type
3624
+ export interface setcivic {
3625
+ account: NameType
3626
+ }
3627
+ export interface setcluster {
3628
+ row: Type.cluster_row
3629
+ }
3630
+ export interface setcoords {
3631
+ entity_id: UInt64Type
3632
+ x: Int64Type
3633
+ y: Int64Type
3634
+ }
3635
+ export interface setdeadline {
3636
+ deadline: UInt32Type
3637
+ }
3638
+ export interface setinfburn {
3639
+ bps: UInt16Type
3640
+ }
3641
+ export interface setinfd1 {
3642
+ d1: UInt32Type
3643
+ }
3644
+ export interface setinfdemand {
3645
+ peak: UInt64Type
3646
+ base: UInt64Type
3647
+ floor: UInt64Type
3648
+ }
3649
+ export interface setinfmint {
3650
+ category: UInt8Type
3651
+ tier: UInt8Type
3652
+ threshold: UInt64Type
3653
+ }
3654
+ export interface setinfweight {
3655
+ category: UInt8Type
3656
+ tier: UInt8Type
3657
+ weight_fp: UInt64Type
3658
+ }
3659
+ export interface setnextid {
3660
+ next_id: UInt64Type
1544
3661
  }
1545
3662
  export interface setnftcfg {
1546
3663
  item_id: UInt16Type
1547
3664
  template_id: Int32Type
1548
3665
  schema_name: NameType
1549
3666
  }
1550
- export interface spawncargo {
3667
+ export interface setthreshold {
3668
+ threshold: UInt8Type
3669
+ }
3670
+ export interface settleballot {
3671
+ ballot_id: UInt64Type
3672
+ max_pages: UInt32Type
3673
+ }
3674
+ export interface setunwrapmin {
3675
+ asset_id: UInt64Type
3676
+ }
3677
+ export interface setwrapcost {
3678
+ item_type: UInt8Type
3679
+ tier: UInt8Type
3680
+ amount: UInt64Type
3681
+ }
3682
+ export interface setwrapfee {
3683
+ fee_pct: UInt16Type
3684
+ fee_account: NameType
3685
+ }
3686
+ export interface shuttle {
3687
+ carrier: UInt64Type
3688
+ from_id: UInt64Type
3689
+ to_id: UInt64Type
3690
+ items: Type.cargo_item[]
3691
+ }
3692
+ export interface stowcargo {
3693
+ owner: NameType
1551
3694
  entity_id: UInt64Type
1552
- item_id: UInt64Type
3695
+ nexus_id: UInt64Type
3696
+ cargo_id: UInt64Type
1553
3697
  quantity: UInt64Type
1554
3698
  }
1555
- export interface spawnpacked {
3699
+ export interface stowentity {
3700
+ owner: NameType
1556
3701
  entity_id: UInt64Type
1557
- item_id: UInt16Type
1558
- hull_stats: UInt64Type
1559
- installed: Type.packed_module[]
3702
+ nexus_id: UInt64Type
1560
3703
  }
1561
- export interface spawnseeded {
3704
+ export interface swapmodule {
1562
3705
  entity_id: UInt64Type
1563
- item_id: UInt64Type
1564
- quantity: UInt64Type
1565
- stats: UInt64Type
3706
+ module_index: UInt8Type
3707
+ module_ref: Type.cargo_ref
1566
3708
  }
1567
- export interface transfer {
1568
- source_type: NameType
1569
- source_id: UInt64Type
1570
- dest_type: NameType
1571
- dest_id: UInt64Type
1572
- items: Type.cargo_item[]
3709
+ export interface swaptile {
3710
+ hub_id: UInt64Type
3711
+ a_gx: Int8Type
3712
+ a_gy: Int8Type
3713
+ b_gx: Int8Type
3714
+ b_gy: Int8Type
3715
+ }
3716
+ export interface transit {
3717
+ id: UInt64Type
3718
+ ax: Int64Type
3719
+ ay: Int64Type
3720
+ bx: Int64Type
3721
+ by: Int64Type
1573
3722
  }
1574
3723
  export interface travel {
1575
- entity_type: NameType
1576
3724
  id: UInt64Type
1577
3725
  x: Int64Type
1578
3726
  y: Int64Type
1579
3727
  recharge: boolean
1580
3728
  }
3729
+ export interface travelplan {
3730
+ entities: Type.entity_ref[]
3731
+ waypoints: Type.route_waypoint[]
3732
+ recharge: boolean
3733
+ }
1581
3734
  export interface undeploy {
1582
- host_type: NameType
1583
3735
  host_id: UInt64Type
1584
- target_type: NameType
1585
3736
  target_id: UInt64Type
1586
3737
  }
3738
+ export interface unload {
3739
+ id: UInt64Type
3740
+ to_id: UInt64Type
3741
+ items: Type.cargo_item[]
3742
+ }
3743
+ export interface upgrade {
3744
+ builder_id: UInt64Type
3745
+ target_id: UInt64Type
3746
+ target_item_id: UInt16Type
3747
+ inputs: Type.cargo_item[]
3748
+ slot?: UInt8Type
3749
+ }
3750
+ export interface voteready {
3751
+ max_pages: UInt32Type
3752
+ }
1587
3753
  export interface warp {
1588
- entity_type: NameType
1589
3754
  id: UInt64Type
1590
3755
  x: Int64Type
1591
3756
  y: Int64Type
1592
3757
  }
1593
3758
  export interface wipe {}
1594
- export interface wipesequence {}
1595
- export interface wrap {
1596
- owner: NameType
1597
- entity_type: NameType
1598
- entity_id: UInt64Type
1599
- items: Type.cargo_item[]
1600
- }
1601
- export interface wrapentity {
1602
- entity_type: NameType
1603
- entity_id: UInt64Type
1604
- }
1605
3759
  }
1606
3760
  export interface ActionNameParams {
3761
+ abandonplot: ActionParams.abandonplot
3762
+ addcontrib: ActionParams.addcontrib
1607
3763
  addmodule: ActionParams.addmodule
1608
3764
  addnexus: ActionParams.addnexus
1609
- advance: ActionParams.advance
3765
+ addoracle: ActionParams.addoracle
1610
3766
  blend: ActionParams.blend
3767
+ buildjob: ActionParams.buildjob
3768
+ buildplot: ActionParams.buildplot
1611
3769
  cancel: ActionParams.cancel
3770
+ cancelbuild: ActionParams.cancelbuild
3771
+ cancelcivic: ActionParams.cancelcivic
3772
+ cancelcraft: ActionParams.cancelcraft
3773
+ castballot: ActionParams.castballot
3774
+ charterready: ActionParams.charterready
3775
+ civicshuttle: ActionParams.civicshuttle
3776
+ claimbuild: ActionParams.claimbuild
3777
+ claimcraft: ActionParams.claimcraft
3778
+ claimplot: ActionParams.claimplot
1612
3779
  claimstarter: ActionParams.claimstarter
1613
3780
  cleanrsvp: ActionParams.cleanrsvp
1614
3781
  cleartable: ActionParams.cleartable
3782
+ closeepoch: ActionParams.closeepoch
3783
+ clustercraft: ActionParams.clustercraft
1615
3784
  commit: ActionParams.commit
1616
3785
  configlog: ActionParams.configlog
1617
3786
  craft: ActionParams.craft
1618
- createentity: ActionParams.createentity
3787
+ craftjob: ActionParams.craftjob
3788
+ dbgcredit: ActionParams.dbgcredit
3789
+ dbgjobs: ActionParams.dbgjobs
3790
+ dbgmandate: ActionParams.dbgmandate
3791
+ dbgoldjobs: ActionParams.dbgoldjobs
3792
+ dbgpagerows: ActionParams.dbgpagerows
3793
+ dbgpick: ActionParams.dbgpick
3794
+ dbgplace: ActionParams.dbgplace
3795
+ dbgpurge: ActionParams.dbgpurge
3796
+ dbgrepack: ActionParams.dbgrepack
3797
+ dbgseats: ActionParams.dbgseats
3798
+ delentity: ActionParams.delentity
1619
3799
  demolish: ActionParams.demolish
1620
3800
  deploy: ActionParams.deploy
3801
+ depotstore: ActionParams.depotstore
3802
+ depottake: ActionParams.depottake
1621
3803
  descentity: ActionParams.descentity
1622
3804
  enable: ActionParams.enable
3805
+ fixcargomass: ActionParams.fixcargomass
3806
+ fixitemids: ActionParams.fixitemids
3807
+ forcereveal: ActionParams.forcereveal
3808
+ found: ActionParams.found
1623
3809
  gather: ActionParams.gather
3810
+ gatherplan: ActionParams.gatherplan
3811
+ genesisfleet: ActionParams.genesisfleet
3812
+ genesisworld: ActionParams.genesisworld
3813
+ getbuildjobs: ActionParams.getbuildjobs
3814
+ getcharter: ActionParams.getcharter
3815
+ getcharttree: ActionParams.getcharttree
3816
+ getchrtready: ActionParams.getchrtready
3817
+ getcluster: ActionParams.getcluster
1624
3818
  getconfig: ActionParams.getconfig
3819
+ getcraftjobs: ActionParams.getcraftjobs
3820
+ getdecomp: ActionParams.getdecomp
3821
+ getdemand: ActionParams.getdemand
3822
+ getdeposit: ActionParams.getdeposit
3823
+ getdepot: ActionParams.getdepot
3824
+ getdistance: ActionParams.getdistance
1625
3825
  geteligible: ActionParams.geteligible
3826
+ getentcls: ActionParams.getentcls
1626
3827
  getentities: ActionParams.getentities
1627
3828
  getentity: ActionParams.getentity
3829
+ getfootprint: ActionParams.getfootprint
3830
+ getinfdecay: ActionParams.getinfdecay
3831
+ getinfluence: ActionParams.getinfluence
3832
+ getinfvalue: ActionParams.getinfvalue
1628
3833
  getitemdata: ActionParams.getitemdata
1629
3834
  getitemids: ActionParams.getitemids
1630
3835
  getitems: ActionParams.getitems
3836
+ getitemtype: ActionParams.getitemtype
1631
3837
  getitemtypes: ActionParams.getitemtypes
3838
+ getkindmeta: ActionParams.getkindmeta
1632
3839
  getlocation: ActionParams.getlocation
1633
3840
  getlocdata: ActionParams.getlocdata
3841
+ getmintcfg: ActionParams.getmintcfg
3842
+ getmintready: ActionParams.getmintready
1634
3843
  getmodtypes: ActionParams.getmodtypes
1635
3844
  getmodules: ActionParams.getmodules
1636
3845
  getnearby: ActionParams.getnearby
3846
+ getnftbase: ActionParams.getnftbase
1637
3847
  getnftinfo: ActionParams.getnftinfo
1638
3848
  getplayer: ActionParams.getplayer
3849
+ getpool: ActionParams.getpool
3850
+ getpools: ActionParams.getpools
3851
+ getprojstate: ActionParams.getprojstate
1639
3852
  getrecipe: ActionParams.getrecipe
1640
3853
  getrecipes: ActionParams.getrecipes
1641
3854
  getrescats: ActionParams.getrescats
@@ -1644,53 +3857,138 @@ export interface ActionNameParams {
1644
3857
  getslots: ActionParams.getslots
1645
3858
  getstratum: ActionParams.getstratum
1646
3859
  getsummaries: ActionParams.getsummaries
3860
+ getvoteready: ActionParams.getvoteready
3861
+ getvotes: ActionParams.getvotes
3862
+ getwormhole: ActionParams.getwormhole
3863
+ grouptransit: ActionParams.grouptransit
1647
3864
  grouptravel: ActionParams.grouptravel
1648
3865
  hash: ActionParams.hash
1649
3866
  hash512: ActionParams.hash512
1650
- init: ActionParams.init
3867
+ importcargo: ActionParams.importcargo
3868
+ importcell: ActionParams.importcell
3869
+ importentity: ActionParams.importentity
3870
+ importepoch: ActionParams.importepoch
3871
+ importgroup: ActionParams.importgroup
3872
+ importnftcfg: ActionParams.importnftcfg
3873
+ importplayer: ActionParams.importplayer
3874
+ importreserve: ActionParams.importreserve
3875
+ importstate: ActionParams.importstate
1651
3876
  join: ActionParams.join
3877
+ launch: ActionParams.launch
3878
+ load: ActionParams.load
3879
+ migratejobs: ActionParams.migratejobs
3880
+ mintready: ActionParams.mintready
3881
+ movetile: ActionParams.movetile
3882
+ naturalize: ActionParams.naturalize
3883
+ nftimgurl: ActionParams.nftimgurl
1652
3884
  notify: ActionParams.notify
3885
+ placecargo: ActionParams.placecargo
3886
+ placeentity: ActionParams.placeentity
1653
3887
  recharge: ActionParams.recharge
3888
+ refrshentity: ActionParams.refrshentity
3889
+ removeoracle: ActionParams.removeoracle
3890
+ rename: ActionParams.rename
1654
3891
  resolve: ActionParams.resolve
3892
+ resolveall: ActionParams.resolveall
3893
+ resolveearly: ActionParams.resolveearly
3894
+ reveal: ActionParams.reveal
1655
3895
  rmmodule: ActionParams.rmmodule
1656
3896
  rmnftcfg: ActionParams.rmnftcfg
1657
- salt: ActionParams.salt
3897
+ setcivic: ActionParams.setcivic
3898
+ setcluster: ActionParams.setcluster
3899
+ setcoords: ActionParams.setcoords
3900
+ setdeadline: ActionParams.setdeadline
3901
+ setinfburn: ActionParams.setinfburn
3902
+ setinfd1: ActionParams.setinfd1
3903
+ setinfdemand: ActionParams.setinfdemand
3904
+ setinfmint: ActionParams.setinfmint
3905
+ setinfweight: ActionParams.setinfweight
3906
+ setnextid: ActionParams.setnextid
1658
3907
  setnftcfg: ActionParams.setnftcfg
1659
- spawncargo: ActionParams.spawncargo
1660
- spawnpacked: ActionParams.spawnpacked
1661
- spawnseeded: ActionParams.spawnseeded
1662
- transfer: ActionParams.transfer
3908
+ setthreshold: ActionParams.setthreshold
3909
+ settleballot: ActionParams.settleballot
3910
+ setunwrapmin: ActionParams.setunwrapmin
3911
+ setwrapcost: ActionParams.setwrapcost
3912
+ setwrapfee: ActionParams.setwrapfee
3913
+ shuttle: ActionParams.shuttle
3914
+ stowcargo: ActionParams.stowcargo
3915
+ stowentity: ActionParams.stowentity
3916
+ swapmodule: ActionParams.swapmodule
3917
+ swaptile: ActionParams.swaptile
3918
+ transit: ActionParams.transit
1663
3919
  travel: ActionParams.travel
3920
+ travelplan: ActionParams.travelplan
1664
3921
  undeploy: ActionParams.undeploy
3922
+ unload: ActionParams.unload
3923
+ upgrade: ActionParams.upgrade
3924
+ voteready: ActionParams.voteready
1665
3925
  warp: ActionParams.warp
1666
3926
  wipe: ActionParams.wipe
1667
- wipesequence: ActionParams.wipesequence
1668
- wrap: ActionParams.wrap
1669
- wrapentity: ActionParams.wrapentity
1670
3927
  }
1671
3928
  export type ActionNames = keyof ActionNameParams
1672
3929
  export interface ActionReturnValues {
3930
+ abandonplot: Types.task_results
3931
+ addcontrib: Types.task_results
3932
+ buildjob: Types.window_receipt
3933
+ buildplot: Types.task_results
1673
3934
  cancel: Types.cancel_results
3935
+ cancelbuild: Types.task_results
3936
+ cancelcivic: Types.cancel_results
3937
+ civicshuttle: Types.task_results
3938
+ claimcraft: Types.task_results
3939
+ claimplot: Types.task_results
3940
+ clustercraft: Types.task_results
1674
3941
  craft: Types.task_results
3942
+ craftjob: Types.window_receipt
3943
+ dbgpick: Types.socket_pick
3944
+ dbgplace: Types.reserved_window
3945
+ dbgrepack: Types.repack_result
1675
3946
  demolish: Types.task_results
1676
3947
  deploy: Types.task_results
3948
+ depotstore: Types.task_results
3949
+ depottake: Types.task_results
1677
3950
  descentity: string
1678
3951
  gather: Types.task_results
3952
+ gatherplan: Types.task_results
3953
+ getbuildjobs: Types.buildjobs_result
3954
+ getcharter: Types.charter_result
3955
+ getcharttree: Types.charter_tree_result
3956
+ getchrtready: Types.charterready_result
3957
+ getcluster: Types.cluster_row
1679
3958
  getconfig: Types.game_config
3959
+ getcraftjobs: Types.craftjobs_result
3960
+ getdecomp: Types.decomp_result
3961
+ getdemand: Types.demand_result
3962
+ getdeposit: ExtendedAsset
3963
+ getdepot: Types.depot_view
3964
+ getdistance: UInt64
1680
3965
  geteligible: UInt16[]
3966
+ getentcls: Types.enum_result
1681
3967
  getentities: Types.entity_info[]
1682
3968
  getentity: Types.entity_info
3969
+ getfootprint: Types.footprint_result
3970
+ getinfdecay: UInt64
3971
+ getinfluence: Types.influence_totals
3972
+ getinfvalue: Types.infvalue_result
1683
3973
  getitemdata: Types.itemdata_result
1684
3974
  getitemids: Types.item_ids_result
1685
3975
  getitems: Types.items_info
3976
+ getitemtype: UInt8
1686
3977
  getitemtypes: Types.enum_result
3978
+ getkindmeta: Types.kind_meta_result
1687
3979
  getlocation: Types.location_info
1688
3980
  getlocdata: Types.location_derived
3981
+ getmintcfg: Types.mintcfg_result
3982
+ getmintready: UInt32
1689
3983
  getmodtypes: Types.enum_result
1690
3984
  getmodules: Types.modules_result
1691
3985
  getnearby: Types.nearby_info
3986
+ getnftbase: string[]
1692
3987
  getnftinfo: Types.nftinfo_result
1693
3988
  getplayer: Types.player_info
3989
+ getpool: Types.pool_pair_result
3990
+ getpools: Types.pools_result
3991
+ getprojstate: Types.projected_state
1694
3992
  getrecipe: Types.recipes_result
1695
3993
  getrecipes: Types.recipes_result
1696
3994
  getrescats: Types.enum_result
@@ -1699,17 +3997,34 @@ export interface ActionReturnValues {
1699
3997
  getslots: Types.entity_layouts_result
1700
3998
  getstratum: Types.stratum_data
1701
3999
  getsummaries: Types.entity_summary[]
4000
+ getvoteready: UInt32
4001
+ getvotes: Types.vote_result
4002
+ getwormhole: Types.wormhole_info
4003
+ grouptransit: Types.task_results
1702
4004
  grouptravel: Types.task_results
1703
4005
  hash: Checksum256
1704
4006
  hash512: Checksum512
4007
+ launch: Types.task_results
4008
+ load: Types.task_results
4009
+ movetile: Types.task_results
4010
+ nftimgurl: string
4011
+ placecargo: Types.task_results
4012
+ placeentity: Types.task_results
1705
4013
  recharge: Types.task_results
1706
4014
  resolve: Types.resolve_results
1707
- transfer: Types.task_results
4015
+ resolveall: Types.resolveall_results
4016
+ resolveearly: Types.resolve_results
4017
+ shuttle: Types.task_results
4018
+ stowcargo: Types.task_results
4019
+ stowentity: Types.task_results
4020
+ swaptile: Types.task_results
4021
+ transit: Types.task_results
1708
4022
  travel: Types.task_results
4023
+ travelplan: Types.task_results
1709
4024
  undeploy: Types.task_results
4025
+ unload: Types.task_results
4026
+ upgrade: Types.task_results
1710
4027
  warp: Types.task_results
1711
- wrap: Types.task_results
1712
- wrapentity: Types.task_results
1713
4028
  }
1714
4029
  export type ActionReturnNames = keyof ActionReturnValues
1715
4030
  export class Contract extends BaseContract {
@@ -1717,7 +4032,7 @@ export class Contract extends BaseContract {
1717
4032
  super({
1718
4033
  client: args.client,
1719
4034
  abi: abi,
1720
- account: args.account || Name.from('shipload.gm'),
4035
+ account: args.account || Name.from('eon.shipload'),
1721
4036
  })
1722
4037
  }
1723
4038
  action<T extends ActionNames>(