@shipload/sdk 1.0.0-next.6 → 1.0.0-next.61
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.
- package/lib/scan.d.ts +52 -0
- package/lib/scan.js +162 -0
- package/lib/scan.js.map +1 -0
- package/lib/scan.m.js +152 -0
- package/lib/scan.m.js.map +1 -0
- package/lib/shipload.d.ts +3601 -1364
- package/lib/shipload.js +15671 -5261
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +15392 -5209
- package/lib/shipload.m.js.map +1 -1
- package/lib/testing.d.ts +1173 -0
- package/lib/testing.js +4971 -0
- package/lib/testing.js.map +1 -0
- package/lib/testing.m.js +4965 -0
- package/lib/testing.m.js.map +1 -0
- package/package.json +20 -2
- package/src/capabilities/craftable.test.ts +82 -0
- package/src/capabilities/craftable.ts +82 -0
- package/src/capabilities/crafting.test.ts +35 -0
- package/src/capabilities/crafting.ts +34 -7
- package/src/capabilities/gathering.test.ts +29 -0
- package/src/capabilities/gathering.ts +37 -19
- package/src/capabilities/hauling.ts +0 -5
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/modules.ts +27 -30
- package/src/capabilities/movement.ts +1 -1
- package/src/capabilities/storage.ts +16 -1
- package/src/contracts/platform.ts +231 -3
- package/src/contracts/server.ts +1518 -501
- package/src/coordinates/address.ts +88 -0
- package/src/coordinates/constants.test.ts +15 -0
- package/src/coordinates/constants.ts +23 -0
- package/src/coordinates/index.ts +15 -0
- package/src/coordinates/memo.test.ts +47 -0
- package/src/coordinates/memo.ts +20 -0
- package/src/coordinates/permutation.ts +77 -0
- package/src/coordinates/regions.ts +48 -0
- package/src/coordinates/sectors.ts +115 -0
- package/src/data/capabilities.ts +49 -18
- package/src/data/capability-formulas.ts +26 -14
- package/src/data/catalog.ts +7 -8
- package/src/data/colors.ts +14 -48
- package/src/data/entities.json +380 -15
- package/src/data/item-ids.ts +51 -13
- package/src/data/items.json +318 -77
- package/src/data/kind-registry.json +195 -0
- package/src/data/kind-registry.ts +182 -0
- package/src/data/metadata.ts +291 -51
- package/src/data/recipes-runtime.ts +6 -23
- package/src/data/recipes.json +2260 -173
- package/src/data/tiers.ts +9 -6
- package/src/derivation/build-methods.test.ts +13 -0
- package/src/derivation/build-methods.ts +48 -0
- package/src/derivation/capabilities.test.ts +348 -0
- package/src/derivation/capabilities.ts +693 -0
- package/src/derivation/capability-mappings.ts +60 -16
- package/src/derivation/crafting.test.ts +17 -0
- package/src/derivation/crafting.ts +57 -34
- package/src/derivation/index.ts +27 -2
- package/src/derivation/recipe-usage.test.ts +90 -0
- package/src/derivation/recipe-usage.ts +141 -0
- package/src/derivation/reserve-regen.ts +34 -0
- package/src/derivation/resources.ts +9 -1
- package/src/derivation/rollups.test.ts +55 -0
- package/src/derivation/rollups.ts +72 -0
- package/src/derivation/stars.test.ts +67 -0
- package/src/derivation/stars.ts +25 -0
- package/src/derivation/stat-scaling.ts +12 -0
- package/src/derivation/stats.ts +6 -6
- package/src/derivation/stratum.ts +26 -22
- package/src/derivation/tiers.ts +40 -7
- package/src/derivation/upgrades.ts +14 -0
- package/src/derivation/wormhole.ts +154 -0
- package/src/entities/entity.ts +102 -0
- package/src/entities/gamestate.ts +3 -28
- package/src/entities/makers.ts +141 -135
- package/src/entities/slot-multiplier.ts +43 -0
- package/src/errors.ts +12 -16
- package/src/format.ts +26 -4
- package/src/index-module.ts +333 -35
- package/src/managers/actions.ts +668 -103
- package/src/managers/base.ts +6 -2
- package/src/managers/cluster.test.ts +39 -0
- package/src/managers/cluster.ts +53 -0
- package/src/managers/construction-types.ts +80 -0
- package/src/managers/construction.ts +443 -0
- package/src/managers/context.ts +29 -1
- package/src/managers/coordinates.ts +14 -0
- package/src/managers/entities.ts +27 -66
- package/src/managers/epochs.ts +40 -0
- package/src/managers/index.ts +20 -1
- package/src/managers/locations.ts +25 -29
- package/src/managers/nft.test.ts +14 -0
- package/src/managers/nft.ts +70 -0
- package/src/managers/players.ts +25 -0
- package/src/managers/plot.ts +122 -0
- package/src/nft/atomicassets.abi.json +1342 -0
- package/src/nft/atomicassets.ts +237 -0
- package/src/nft/atomicdata.ts +130 -0
- package/src/nft/buildImmutableData.ts +388 -0
- package/src/nft/description.ts +215 -99
- package/src/nft/index.ts +3 -0
- package/src/planner/index.ts +242 -0
- package/src/planner/planner.test.ts +334 -0
- package/src/resolution/describe-module.ts +43 -25
- package/src/resolution/display-name.ts +38 -10
- package/src/resolution/resolve-item.test.ts +48 -0
- package/src/resolution/resolve-item.ts +112 -58
- package/src/scan/index.ts +244 -0
- package/src/scan/scan-wasm.base64.ts +2 -0
- package/src/scheduling/accessor.ts +65 -23
- package/src/scheduling/availability.test.ts +204 -0
- package/src/scheduling/availability.ts +211 -0
- package/src/scheduling/cancel.test.ts +542 -0
- package/src/scheduling/cancel.ts +254 -0
- package/src/scheduling/cluster-stock.test.ts +31 -0
- package/src/scheduling/cluster-stock.ts +15 -0
- package/src/scheduling/energy.ts +47 -0
- package/src/scheduling/idle-resolve.ts +45 -0
- package/src/scheduling/jobs.ts +71 -0
- package/src/scheduling/lane-core.ts +128 -0
- package/src/scheduling/lanes.test.ts +250 -0
- package/src/scheduling/lanes.ts +227 -0
- package/src/scheduling/projection.ts +257 -133
- package/src/scheduling/schedule.test.ts +119 -0
- package/src/scheduling/schedule.ts +257 -117
- package/src/scheduling/task-cargo.test.ts +44 -0
- package/src/scheduling/task-cargo.ts +46 -0
- package/src/scheduling/unwrap.test.ts +86 -0
- package/src/scheduling/unwrap.ts +190 -0
- package/src/shipload.ts +26 -1
- package/src/subscriptions/manager.cluster.test.ts +51 -0
- package/src/subscriptions/manager.ts +245 -172
- package/src/subscriptions/mappers.ts +5 -8
- package/src/subscriptions/types.ts +28 -3
- package/src/testing/catalog-hash.ts +19 -0
- package/src/testing/index.ts +2 -0
- package/src/testing/projection-parity.ts +167 -0
- package/src/travel/reach.ts +21 -0
- package/src/travel/route-planner.ts +288 -0
- package/src/travel/route-simulator.ts +170 -0
- package/src/travel/travel.ts +188 -122
- package/src/types/capabilities.ts +37 -8
- package/src/types/entity.ts +3 -3
- package/src/types/index.ts +0 -1
- package/src/types.ts +51 -16
- package/src/utils/cargo.test.ts +14 -0
- package/src/utils/cargo.ts +29 -0
- package/src/utils/display-name.ts +70 -0
- package/src/utils/system.ts +15 -16
- package/src/capabilities/loading.ts +0 -8
- package/src/entities/container.ts +0 -123
- package/src/entities/ship-deploy.ts +0 -295
- package/src/entities/ship.ts +0 -221
- package/src/entities/warehouse.ts +0 -127
- package/src/types/entity-traits.ts +0 -69
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// GENERATED by make sync-scan — do not edit
|
|
2
|
+
export const SCAN_WASM_B64 = "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A0AgAiAHRgRAIARBEEcEQCADIAggCSAEQQN0QQhrQQAgBEEBSxsQUiAAIANBCGopAwA3AwggACADKQMANwMACyADQRBqJAAMAgsCQAJ/IARBAk8EQCAJQgiGIAhCOIiEIQkgCCACMQAAhEIIhiEIIARBAWsMAQsgBEEBRw0BIAIxAAAhCiAAIAk3AwggACAIIAqENwMAIABBEGohAEIAIQhCACEJQRALIQQgAkEBaiECDAELCwALIAFBgAFqJAAFIAEgAmogAUFAayACai0AADoAACACQQFqIQIMAQsLIAUQMiAGQSBqJAALCgAgACABQQIQUwsKACAAIAFBBBBTC3cBAn9BhK8BKAIAIQNBgK8BKAIAIQIDQAJAIAIgA0YEQCADIQIMAQsgAi8BACABRg0AIAJBDGohAgwBCwsgAiADRgRAQeilASgCABpB86UBLQAAGkHspQEoAgAACyAAQQhqIAJBCGooAgA2AgAgACACKQIANwIAC5ADAgN/An4jAEHQAWsiAyQAIAAgAikDACIGNwMAIABBEGogAkEQaigCADYCACAAQQhqIAJBCGopAwAiBzcDAAJAIAdCgICAgAh8QoCAgIAQVCAGQoCAgIAIfEL/////D1hxRQRAIABBADoAGAwBCyADQYABaiIEIAFBEGopAwA3AwAgA0GIAWoiBSABQRhqKQMANwMAIAMgASkDADcDcCADIAFBCGopAwA3A3ggA0EkaiIBIAIQEiADQeQAaiICQckrIAEQNSADQRhqIAUpAwA3AwAgA0EQaiAEKQMANwMAIAMgAykDeDcDCCADIAMpA3A3AwAgA0GQAWoiBCADIAIQDSACEDIgARAyIAEgBBAPIAMtACRBEE8EQCAAQQA6ABgMAQsgAAJ/IAMtACUiAUHgAE8EQAJAIAFBlAFNBEAgAEECOgAYDAELIAFByQFNBEAgAEEDOgAYDAELIABBBDoAGAsgAy0AJgwBCyAAQQE6ABggAy0AJkEGcAs6ABkgACADLwAnOwEaCyADQdABaiQACwsAIAAgAUHYKxBUC9QBAQR/AkAgASgCCEH/////B3FBAWtBCiABLQALIgPAIgZBAEgiBBsiBSABKAIEIAMgBBsiA2sgAhBRIgRPBEAgBEUNASABKAIAIAEgBkEASBsiBSADaiACIAQQTxogAyAEaiECAkAgASwAC0EASARAIAEgAjYCBAwBCyABIAJB/wBxOgALCyACIAVqQQA6AAAMAQsgASAFIAMgBGogBWsgAyADIAQgAhAxCyAAIAEpAgA3AgAgAUIANwIAIABBCGogAUEIaiIAKAIANgIAIABBADYCAAumCAMJfAJ+An8gAC0AGAR/An8CfAJAIAAtABsgAC0AGkEIdHK4RAAAAADg/+9AoyIBvSIKQjSIpyIAQf8Pa0GCcE8NACAKQgGGQgF9Qv////////9vWgRAIAEgAaIiAZogASAKQgBTGwwCCyAKQgBTBH9BgIAQIQwgAb1C////////////AIMhCiAAQf8PcQUgAAsNACABRAAAAAAAADBDor1C////////////AINCgICAgICAgKADfSEKCwJAIAogCkKAgICA0Kql8z99IgpCgICAgICAgHiDfSILQoCAgIAIfEKAgICAcIO/IgIgCkItiKdB/wBxQQV0IgBBiPMAaisDACIDokQAAAAAAADwv6AiASABQdDyACsDACIEoiIFoiIGIApCNIentyIHQcDyACsDAKIgAEGY8wBqKwMAoCIIIAEgAyALvyACoaIiCaAiAaAiAqAiAyAGIAIgA6GgIAkgBSAEIAGiIgSgoiAHQcjyACsDAKIgAEGg8wBqKwMAoCABIAggAqGgoKCgIAEgASAEoiICoiACIAIgAUGA8wArAwCiQfjyACsDAKCiIAFB8PIAKwMAokHo8gArAwCgoKIgAUHg8gArAwCiQdjyACsDAKCgoqAiBaAiAb1CgICAQIO/IgJEAAAAAAAACECiIgS9IgpCNIinQf8PcSIAQckHa0E/SQ0ARAAAAAAAAPC/RAAAAAAAAPA/IAwbIABByAdNDQEaIABBiQhJQQAhAA0AIApCAFMEQCAMRAAAAAAAAAAQEEAMAgsgDEQAAAAAAAAAcBBADAELIAJEAAAAAAAAAACiIAUgAyABoaAgASACoaBEAAAAAAAACECioCAEQdDhACsDAKJB2OEAKwMAIgGgIgMgAaEiAUHo4QArAwCiIAFB4OEAKwMAoiAEoKCgIgEgAaIiAiACoiABQYjiACsDAKJBgOIAKwMAoKIgAiABQfjhACsDAKJB8OEAKwMAoKIgA70iC6dBBHRB8A9xIg1BwOIAaisDACABoKCgIQEgDUHI4gBqKQMAIAsgDK18Qi2GfCEKIABFBEAC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IgQgAEHQwQBqKwMAIAggCUKAgICAgICAeIN9vyAAQdDRAGorAwChIABB2NEAaisDAKGiIgGgIgUgASABIAGiIgKiIAIgAUHwwAArAwCiQejAACsDAKCiIAFB4MAAKwMAokHYwAArAwCgoKIgAkHQwAArAwCiIANByMAAKwMAoiABIAQgBaGgoKCgoCEBCyABC5qfRLgehetRuM4/oiIBIAFEAAAAAAAA8D9kG0QAAAAAADiPQKIiAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAtBAWpB//8DcSIAIABB5wdPGwuZAQEFfyMAQeAAayIEJAAgBEEkaiIFQdErIAMQNSAEQTBqIgMgBUHYKxATIARBGGoiBiACEDggBEE8aiICIAMgBhAMIARByABqIgcgAkHYKxATIARBDGoiCCABEDggBEHUAGoiASAHIAgQDCAAIAEQHiABEDIgCBAyIAcQMiACEDIgBhAyIAMQMiAFEDIgBEHgAGokAEH//wBxCwsAIAAgAUHcChBUC+MBAQZ/IwBBEGsiBSQAAn8gASgCBCABLQALIgIgAsBBAEgbIgNBgAgQUSIEaiICQfj///8HSQRAIAJBCk0EQCAAQQhqQQA2AgAgAEIANwIAIAAgAjoACyAADAILIAJBB3JBAWoiBhA6IQcgACACNgIEIAAgBzYCACAAIAZBgICAgHhyNgIIIAAMAQsQKAALIgAoAgAgACAALAALQQBIGyEAIAMEQCAAIAEoAgAgASABLAALQQBIGyADEE8aCyAAIANqIQAgBARAIABBgAggBBBPGgsgACAEakEAOgAAIAVBEGokAAu/AQEDfyMAQdABayICJAAgAkFAayIDIABBEGopAwA3AwAgAkHIAGoiBCAAQRhqKQMANwMAIAIgACkDADcDMCACIABBCGopAwA3AzggAkEkaiABEAkhACACQRhqIAQpAwA3AwAgAkEQaiADKQMANwMAIAIgAikDODcDCCACIAIpAzA3AwAgAkHQAGoiASACIAAQDSACQZABaiABEA8gABAyIAIvAJABIQAgAkHQAWokACAAQQh0IABBCHZyQf//A3EL5QIBBX8jAEHwAWsiBCQAIARB4ABqIgUgAUEQaikDADcDACAEQegAaiIIIAFBGGopAwA3AwAgBCABKQMANwNQIAQgAUEIaikDADcD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3AoQEyAJIBdCgIABfyAXQv//AINCAFIgF0IAU3GtfSIXEDcgCUEkaiACIAkQDCAJEDIgAhAyIAEQMiAMKQMAIBhCDoYiGH0gDCkDCCAXQg6GIhd9Qg6GfKciAUH//wBxIQIgAUEOdkH//wBxIQMDQCACIQEgCEEERwRAIA0gASAIIAlBJGoQGyADcyECIAhBAWohCCABIQMMAQsLIAFB//8AcUEBcyECIANBDnQgAXJBDnZB//8AcSEBQQMhCANAIAhBAE4EQCANIAEgCCAJQSRqEBsgAnMgCEEBayEIIAEhAiEBDAELCyALQQA6ABAgC0ESakEAOgAAIAsgFyABQQ50IAJyrSIbQg6IhDcDCCALIBtC//8AgyAYhDcDACAJQSRqEDIgCUEwaiQAAkAgBCkDMCAMKQMAUQRAIAQpAzggDCkDCFENAQsgBEEIaiICIAwQHCAEQdQAaiIDIARBMGoQHCMAQRBrIgEkACABIAMoAgQgAy0ACyIIIAjAQQBIIggbNgIMIAEgAygCACADIAgbNgIIIAIoAgAgAiACLQALIhDAQQBIIhEbIQkgAUEIaiISKAIAIQhBACELAkAgEigCBCISIAIoAgQgECARGyIQIBAgEksiFBsiEUUNAANAIAktAAAiFSAILQAAIhZGBEAgCEEBaiEIIAlBAWohCSARQQFrIhENAQwCCwsgFSAWayELCyABQRBqJAACQCALQX8gFCAQIBJJGyALG0EfdkUEQCAEQcgAaiIBIAMQHSAEQSRqIAEgAhAMDAELIARByABqIgEgBEEIahAdIARBJGogASAEQdQAahAMCyABEDIgBEHUAGoQMiAEQQhqIgEQMiABQbUrIARBJGoiAhA1IA0gARAeIQMgARAyAkAgA0H/P0sNACABIA0gDCACEB8gD0EQaiAEQRhqIgMoAgA2AgAgD0EIaiIIIARBEGoiCSkDADcDACAPIAQpAwg3AwAgASANIARBMGogAhAfIA5BEGogAygCADYCACAOQQhqIAkpAwA3AwAgDiAEKQMINwMAIA8pAwAiF0KAgICACHxC/////w9WDQAgCCkDACIYQoCAgIAIfEL/////D1YNACAOKQMAIhtCgICAgAh8Qv////8PVg0AIA4pAwgiH0KAgICACHxC/////w9WDQACfiAXIBt9uSIgICCiIBggH325IiAgIKKgnyIgRAAAAAAAAPBDYyAgRAAAAAAAAAAAZnEEQCAgsQwBC0IAC0LPhgNWIRMLIARBJGoQMgsgBEHgAGokAAJAIBNFDQAgAEEBaiEAIAYgCk0NACAFIApBBHRqIgEgBykDED4ADCABIAcpAwg+AAggASAHKQMoPgAEIAEgBykDID4AACAKQQFqIQoLIBpCAXwhGgwBCwALAAsACwUgB0HwAGogCmogACAKai0AADoAACAKQQFqIQoMAQsLIAdBkAFqJABBACAAayAKIAAgBksbC4QCAQN/IwBBgAFrIgckAANAIAhBIEYEQCAHQUBrIAdB4ABqECEhAEEAIQggB0E6akEAOgAAIAdBADoAOCAHIAI3AzAgByABNwMoIAdBCGogACAHQShqIANB//8DcSAEQf8BcSAFQf8BcRAWIAcoAhwhAyAHLwEYIQQgBy8BCCEJQQAhAEEAIQUgBykDECIBUEUEQCAHQQJqIAEQGCAHLwEGIQUgBy8BAiEIIAcvAQQhAAsgBiAFNgAYIAYgADYAFCAGIAg2ABAgBiAENgAEIAYgCTYAACAGIAO4OQAIIAdBgAFqJAAFIAdB4ABqIAhqIAAgCGotAAA6AAAgCEEBaiEIDAELCwu1BAMOfwJ+AXwjAEHgAWsiByQAA38gCEEgRgR/QQAhCANAIAhBIEYEQAJAIAdBgAFqIAdBwAFqECEhDyAHQeAAaiAHQaABahAhIRBBACEAA0AgAyAJRg0BIAIgCUEDdCIBaiIINAIAIRUgCEEEajQCACEWQQAhCiAHQQA6AFogB0EAOgBYIAcgFjcDUCAHIBU3A0ggB0EoaiIIIA8gB0HIAGoQESAHLQBBIhFBACAHLQBAIgsbIQwgCwRAIAgQFCEKCyABIARqIgEgCjYABCABQQA7AAIgASAMOgABIAEgCzoAAAJAIAtFIApFcg0AQQAhCANAIAggCkYNASAHQQhqIBAgB0HIAGogCEH//wNxIAsgERAWAkAgBygCHCIBRQ0AIA1BAWohDSAAIAZPDQAgAbghFyAHLwEYIRIgBy8BCCETAn8gBykDECIVUARAQQAhDEEAIQ5BAAwBCyAHQQJqIBUQGCAHLwEGIQ4gBy8BBCEMIAcvAQILIRQgBSAAQShsaiIBIBc5ACAgAUEANgAcIAEgDjYAGCABIAw2ABQgASAUNgAQIAEgEjYADCABIBM2AAggASAINgAEIAEgCTYAACAAQQFqIQALIAhBAWohCAwACwALIAlBAWohCQwACwALBSAHQaABaiAIaiABIAhqLQAAOgAAIAhBAWohCAwBCwsgB0HgAWokAEEAIA1rIAAgBiANSRsFIAdBwAFqIAhqIAAgCGotAAA6AAAgCEEBaiEIDAELCwsIAEGmCRApAAscAQF/IwBBEGsiASQAIAEgADYCAEHhKyABEDkACwoAQcgJQQAQOQALCABBmwkQKQALFAAgAEEASARAECoACyAAQQF0EDoLywUCBX8BfiMAQSBrIgYkACMAQfAAayIDJAAgA0EgakKrs4/8kaOz8NsANwMAIANBGGpC/6S5iMWR2oKbfzcDACADQRBqQvLmu+Ojp/2npX83AwAgA0LnzKfQ1tDrs7t/NwMIIANCADcDACADQQA2AigCQCADKAIoQT9LDQAgA0EsaiEEA0AgAUUNASADKAIoIgUgAUHAAElyRQRAIAMgABAwIAMgAykDAEKABHw3AwAgAUFAaiEBIABBQGshAAwBCyAEIAVqIAAgAUHAACAFayIFIAEgBUkbIgcQThogAyADKAIoIAdqIgU2AiggASAHayEBIAAgB2ohACAFQcAARw0AIAMgBBAwIANBADYCKCADIAMpAwBCgAR8NwMADAALAAsCQCADKAIoIgFBP0sNACADIAFBAWo2AiggAyADKQMAIAFBA3StfDcDACABIANBLGoiAGpBgAE6AAAgAygCKCIEQTlPBEADQCAEQT9NBEAgAyAEQQFqNgIoIAMgBGpBLGpBADoAACADKAIoIQQMAQsLIAMgABAwIANBADYCKEEAIQQLA0AgBEE3TQRAIAMgBEEBajYCKCADIARqQSxqQQA6AAAgAygCKCEEDAELCyADQeQAaiADKQMAIghCOIYgCEKA/gODQiiGhCAIQoCA/AeDQhiGIAhCgICA+A+DQgiGhIQgCEIIiEKAgID4D4MgCEIYiEKAgPwHg4QgCEIoiEKA/gODIAhCOIiEhIQ3AAAgAyAAEDAgA0EIaiEAQQAhBANAIARBIEYNASAEIAZqIgUgACAEaiIBLQADOgAAIAVBAWogAS8BAjoAACAFQQJqIAEoAgBBCHY6AAAgBUEDaiABKAIAOgAAIARBBGohBAwACwALIANB8ABqJABBACEBA0AgAUEgRgRAIAZB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cSAEQRh2cnI2AgAgAkEEaiECDAELCwUgA0GAAmogAmogAiAEaigCADYCACACQQRqIQIMAQsLC+MBAQJ/IAJB9v///wcgAWtNBEBB9////wchByAAKAIAIAAgACwAC0EASBshCCABQfL///8DTQRAQQsgASACaiICIAFBAXQiByACIAdLGyICQQdyQQFqIAJBC0kbIQcLIAcQOiECIAQEQCACIAggBBBPGgsgBQRAIAIgBGogBiAFEE4aCyADIARrIQYgAyAERwRAIAIgBGogBWogBCAIaiAGEE8aCyABQQpHBEAgCBA9CyAAIAI2AgAgACAHQYCAgIB4cjYCCCAAIAQgBWogBmoiADYCBCAAIAJqQQA6AAAPCxAoAAsUACAALAALQQBIBEAgACgCABA9CwupAQEEfwJAIAIgACgCCEH/////B3FBAWtBCiAALQALIgPAIgVBAEgiBhsiBCAAKAIEIAMgBhsiA2tNBEAgAkUNASAAKAIAIAAgBUEASBsiBCADaiABIAIQTxogAiADaiEBAkAgACwAC0EASARAIAAgATYCBAwBCyAAIAFB/wBxOgALCyABIARqQQA6AAAgAA8LIAAgBCACIANqIARrIAMgAyACIAEQMQsgAAuYAgEFfwJAAkACfwJAAkACfyAALQALIgPAIgJBAE4EQCAAIQRBCiACQQpGDQEaIAAgAkEBakH/AHE6AAsgACECDAYLIAAoAgQiAyAAKAIIQf////8HcSIEQQFrIgJHBEAgACgCACECDAULIARB+P///wdGDQEgACgCACEEIAJB8v///wNLDQIgAgsiA0EKRiEGQQsgA0EBaiIFIANBAXQiAiACIAVJGyICQQdyQQFqIAJBC0kbDAILECgACyACIQNB9////wcLIgUQOiECIAMEQCACIAQgAxBPGgsgBkUEQCAEED0LIAAgAjYCACAAIAVBgICAgHhyNgIICyAAIANBAWo2AgQLIAIgA2oiAEEAOgABIAAgAToAAAu9AQEGfyACKAIEIAItAAsiAyADwCIHQQBIGyIFIAEQUSIGaiIEQfj///8HSQRAAkAgBEEKTQRAIABBCGpBADYCACAAQgA3AgAgACAEOgALDAELIARBB3JBAWoiCBA6IQMgACAENgIEIAAgAzYCACAAIAhBgICAgHhyNgIIIAMhAAsgBgRAIAAgASAGEE4a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QCAEQSYgBEEIdmciAGt2QQFxIABBAXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEHAsQFqIQACQEGUrwEoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEGUrwEgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtBsK8BQbCvASgCAEEBayIAQX8gABs2AgALC0EAIABFBEA/AEEQdA8LIABB//8DcSAAQQBIckUEQCAAQRB2QAAiAEF/RgRAQYCzAUEwNgIAQX8PCyAAQRB0DwsAC58BAQJ/QYSzASgCACIBRQRAQYSzAUGMswE2AgBBjLMBIQELQYizASgCACICQSBGBEACQEGEAhA8IgFFDQAgAUEEay0AAEEDcUUNACABQQBBhAIQUBoLIAFFBEAPCyABQYSzASgCADYCAEGEswEgATYCAEEAIQILQYizASACQQFqNgIAIAEgAkECdGoiAUGEAWpBADYCACABQQRqIAA2AgALDQAgAZogASAAGyABogtZAQF/IAAgACgCPCIBQQFrIAFyNgI8IAAoAgAiAUEIcQRAIAAgAUEgcjYCAEF/DwsgAEIANwIEIAAgACgCKCIBNgIYIAAgATYCFCAAIAEgACgCLGo2AhBBAAvAAQEDfwJAIAEgAigCECIDBH8gAwUgAhBBDQEgAigCEAsgAigCFCIEa0sEQCACIAAgASACKAIgEQIAGg8LAkAgAUUgAigCQEEASHINACAAIAFqIQVBACEDAkADQCADIAVqQQFrLQAAQQpGDQEgASADQQFrIgNqDQALDAELIAIgACABIANqIgEgAigCIBECACABSQ0BIAAgAWohAEEAIANrIQEgAigCFCEECyAEIAAgARBOGiACIAIoAhQgAWo2AhQLC+4BAQN/IAEgAmwhAgJAIAIgAygCECIEBH8gBAUgAxBBDQEgAygCEAsgAygCFCIFa0sEQCADIAAgAiADKAIgEQIAIQUMAQsCfyAC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NwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwtBryxBAUGvLBBRQaCkARBDAAsgAiACKAIAIgFBBGo2AgAgACABKAIANgIACw8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAt5AQJ/IwBBgAJrIgMkAAJAIAEgAkwNACADQTAgASACayICQYACIAJBgAJJIgQbEFAhASAERQRAA0AgAC0AAEEgcUUEQCABQYACIAAQQgsgAkGAAmsiAkH/AUsNAAsLIAAtAABBIHENACABIAIgABBCCyADQYACaiQAC74HAQR/AkACfwJAIAJBIE0EQCABQQNxRSACRXINASAAIAEtAAA6AAAgAEEBaiABQQFqIgNBA3FFIAJBAWsiBUVyDQIaIAAgAS0AAToAASAAQQJqIAFBAmoiA0EDcUUgAkECayIFRXINAhogACABLQACOgACIABBA2ogAUEDaiIDQQNxRSACQQNrIgVFcg0CGiAAIAEtAAM6AAMgAkEEayEFIAFBBGohAyAAQQRqDAILIAAgASAC/AoAACAADwsgAiEFIAEhAyAACyIEQQNxIgJFBEACQCAFQRBJBEAgBSECDAELIAVBEGsiAkEQcUUEQCAEIAMpAgA3AgAgBCADKQIINwIIIARBEGohBCADQRBqIQMgAiEFCyACQRBJDQAgBSECA0AgBCADKQIANwIAIAQgAykCCDcCCCAEIAMpAhA3AhAgBCADKQIYNwIYIARBIGohBCADQSBqIQMgAkEgayICQQ9LDQALCyACQQhPBEAgBCADKQIANwIAIARBCGohBCADQQhqIQMLIAJBBHEEQCAEIAMoAgA2AgAgBEEEaiEEIANBBGohAwsgAkECcQRAIAQgAy8AADsAACAEQQJqIQQgA0ECaiEDCyACQQFxRQ0BIAQgAy0AADoAACAADwsCQAJAAn8CQCAFQSBPBEAgBCADKAIAIgE6AAACQAJAIAJBAmsOAgABAwsgBCABQQh2OgABIAQgA0EGaikBADcCBiAEIAMoAgRBEHQgAUEQdnI2AgIgA0ESaiEBQQ4hBiADQQ5qKAEAIQNBDiEFIARBEmoMAwsgBCADQQVqKQAANwIFIAQgAygCBEEYdCABQQh2cjYCASADQRFqIQFBDSEGIANBDWooAAAhA0EPIQUgBEERagwCCwJ/IAVBEEkEQCAEIQIgAwwBCyAEIAMtAAA6AAAgBCADKAABNgABIAQgAykABTcABSAEIAMvAA07AA0gBCADLQAPOgAPIARBEGohAiADQRBqCyEBIAVBCHENAgwDCyAEIAFBEHY6AAIgBCABQQh2OgABIAQgA0EHaikAADcCByAEIAMoAgRBCHQgAUEYdnI2AgMgA0ETaiEBQQ8hBiADQQ9qKAAAIQNBDSEFIARBE2oLIQIgBCAGaiADNgIACyACIAEpAAA3AAAgAkEIaiECIAFBCGohAQsgBUEEcQRAIAIgASgAADYAACACQQRqIQIgAUEEaiEBCyAFQQJxBEAgAiABLwAAOwAAIAJBAmohAiABQQJqIQELIAVBAXFFDQAgAiABLQAAOgAACyAAC6EJAQR/AkACQCACQSFJBEAgACABRg0CIAEgACACaiIEa0EAIAJBAXRrSw0BCyAAIAEgAvwKAAAMAQsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAIhBCAAIQMMAwsgAEEDcUUEQCACIQQgACEDDAILIAJFDQMgACABLQAAOgAAIAJBAWshBCAAQQFqIgNBA3FFBEAgAUEBaiEBDAILIARFDQMgACABLQABOgABIAJBAmshBCAAQQJqIgNBA3FFBEAgAUECaiEBDAILIARFDQMgACABLQACOgACIAJBA2shBCAAQQNqIgNBA3FFBEAgAUEDaiEBDAILIARFDQMgACABLQADOgADIABBBGohAyABQQRqIQEgAkEEayEEDAELAkAgAw0AAkAgBEEDcUUNACACRQ0EIAAgAkEBayIDaiIEIAEgA2otAAA6AAAgBEEDcUUEQCADIQIMAQsgA0UNBCAAIAJBAmsiA2oiBCABIANqLQAAOgAAIARBA3FFBEAgAyECDAELIANFDQQgACACQQNrIgNqIgQgASADai0AADoAACAEQQNxRQRAIAMhAgwBCyADRQ0EIAAgAkEEayICaiABIAJqLQAAOgAACyACQQRJDQAgAkEEayIEQQJ2QQFqQQNxIgMEQCABQQRrIQUgAEEEayEGA0AgAiAGaiACIAVqKAIANgIAIAJBBGshAiADQQFrIgMNAAsLIARBDEkNACABQRBrIQUgAEEQayEGA0AgAiAGaiIDQQxqIAIgBWoiBEEMaigCADYCACADQQhqIARBCGooAgA2AgAgA0EEaiAEQQRqKAIANgIAIAMgBCgCADYCACACQRBrIgJBA0sNAAsLIAJFDQIgAiIDQQNxIgUEQCABQQFrIQQgAEEBayEGA0AgAyAGaiADIARqLQAAOgAAIANBAWshAyAFQQFrIgUNAAsLIAJBBEkNAiABQQRrIQQgAEEEayEFA0AgAyAFaiIBQQNqIAMgBGoiAkEDai0AADoAACABQQJqIAJBAmotAAA6AAAgAUEBaiACQQFqLQAAOgAAIAEgAi0AADoAACADQQRrIgMNAAsMAgsgBEEESQ0AIARBBGsiBUECdkEBakEHcSICBEAgBCACQQJ0ayEEA0AgAyABKAIANgIAIAFBBGohASADQQRqIQMgAkEBayICDQALCyAFQRxJDQADQCADIAEoAgA2AgAgAyABKAIENgIEIAMgASgCCDYCCCADIAEoAgw2AgwgAyABKAIQNgIQIAMgASgCFDYCFCADIAEoAhg2AhggAyABKAIcNgIcIAFBIGohASADQSBqIQMgBEEgayIEQQNLDQALCyAERQ0AAkAgBEEHcSICRQRAIAQhBQwBCyAEQXhxIQUDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIARBCEkNAANAIAMgAS0AADoAACADIAEtAAE6AAEgAyABLQACOgACIAMgAS0AAzoAAyADIAEtAAQ6AAQgAyABLQAFOgAFIAMgAS0ABjoABiADIAEtAAc6AAcgA0EIaiEDIAFBCGohASAFQQhrIgUNAAsLIAALhgMCA38BfiACQSFPBEAgACABIAL8CwAgAA8LAkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgVqIgQgAUH/AXFBgYKECGwiAzYCACAEIAIgBWtBfHEiAmoiAUEEayADNgIAIAJBCUkNACAEIAM2AgggBCADNgIEIAFBCGsgAzYCACABQQxrIAM2AgAgAkEZSQ0AIAQgAzYCGCAEIAM2AhQgBCADNgIQIAQgAzYCDCABQRBrIAM2AgAgAUEUayADNgIAIAFBGGsgAzYCACABQRxrIAM2AgAgAiAEQQRxQRhyIgJrIgFBIEkNACADrUKBgICAEH4hBiACIARqIQIDQCACIAY3AxggAiAGNwMQIAIgBjcDCCACIAY3AwAgAkEgaiECIAFBIGsiAUEfSw0ACwsgAAvCAQEDfwJAAkAgACIBQQNxRQ0AIAEtAABFBEBBAA8LIABBAWoiAUEDcUUNACABLQAARQ0BIABBAmoiAUEDcUUNACABLQAARQ0BIABBA2oiAUEDcUUNACABLQAARQ0BIABBBGoiAUEDcQ0BCyABQQRrIQIgAUEFayEBA0AgAUEEaiEBIAJBBGoiAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCABQQFqIQEgAi0AACACQQFqIQINAAsLIAEgAGsLUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLbAIBfwJ+A0AgAgRAIAFBCGopAwAhBCABKQMAIQVBDyEDA0AgA0F/RwRAIAAgA2ogBTwAACAEQjiGIAVCCIiEIQUgA0EBayEDIARCCIghBAwBCwsgAUEQaiEBIAJBAWshAiAAQRBqIQAMAQsLC1EBA38jAEEwayIDJAAgA0EYaiIEIAEpAwAQNyADQSRqIgUgBCACEBMgA0EMaiICIAEpAwgQNyAAIAUgAhAMIAIQMiAFEDIgBBAyIANBMGokAAsL+ZgBlQEAQYAIC/MsfAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AHNoaXBsb2FkLWJ5cGFzcwBlbnRpdHkgdHlwZSBoYXMgbm8gY2xhc3MAbm8gd29ybWhvbGUgY29ubmVjdHMgdGhvc2UgY29vcmRpbmF0ZXMAdW5leHBlY3RlZCBlcnJvciBpbiBmaXhlZF9ieXRlcyBjb25zdHJ1Y3RvcgB2ZWN0b3IAbmFuAGJhc2ljX3N0cmluZwBpbmYAMDEyMzQ1Njc4OWFiY2RlZgBiYWRfYXJyYXlfbmV3X2xlbmd0aCB3YXMgdGhyb3duIGluIC1mbm8tZXhjZXB0aW9ucyBtb2RlAGJhZF9hbGxvYyB3YXMgdGhyb3duIGluIC1mbm8tZXhjZXB0aW9ucyBtb2RlAGVudGl0eSBpcyBub3QgYXQgdGhlIHdvcm1ob2xlIGVudHJhbmNlAE5BTgBJTkYAOgAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAE1vZHVsZSBzbG90IGlzIGVtcHR5LgBJdGVtIGNhbm5vdCBiZSBkZXBsb3llZCBhcyBhbiBlbnRpdHkuAEdyb3VwIHRyYXZlbCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZW50aXR5LgBJdGVtIGlzIG5vdCBhIHBhY2tlZCBlbnRpdHkuAEVudGl0eSBkb2VzIG5vdCBoYXZlIHdhcnAgY2FwYWJpbGl0eS4ARW50aXR5IGRvZXMgbm90IGhhdmUgY3JhZnRpbmcgY2FwYWJpbGl0eS4AQ3JhZnQgZHJhaW4gZXhjZWVkcyBlbnRpdHkncyBlbmVyZ3kgY2FwYWNpdHkuAEdhdGhlciBkcmFpbiBleGNlZWRzIGVudGl0eSdzIGVuZXJneSBjYXBhY2l0eS4ARW50aXR5IG11c3QgYmUgaWRsZSB0byBkZXBsb3kuAENhbm5vdCBjYW5jZWwgcmFuZ2UgY29udGFpbmluZyBncm91cGVkIHRhc2sgLSBjYW5jZWwgbm9uLWdyb3VwZWQgdGFza3MgZmlyc3QuAEl0ZW0gZG9lcyBub3QgZXhpc3QuAFJlY2lwZSBkb2VzIG5vdCBleGlzdC4ATW9kdWxlIHR5cGUgbm90IGFsbG93ZWQgaW4gdGhpcyBzbG90LgBFbnRpdHkgaXMgbm90IGEgcGxvdC4AQnVpbGRlciBtdXN0IGJlIGlkbGUgdG8gY2xhaW0gYSBwbG90LgBJbnZhbGlkIGFtb3VudC4AU2hpcCBpcyBub3Qgb3duZWQgYnkgdGhpcyBhY2NvdW50LgBDYW5ub3QgZmluZCBjb21wYW55IGZvciBnaXZlbiBhY2NvdW50LgBDYW5ub3QgZmluZCBzaGlwIGZvciBnaXZlbiBhY2NvdW50LgBEZXBvc2l0IHdvdWxkIGV4Y2VlZCBwbG90IHJlY2lwZSByZXF1aXJlbWVudC4AUGxvdCBhbHJlYWR5IGhhcyBhIHBlbmRpbmcgZGVwb3NpdC4ATm8gcmVjaXBlIGZvdW5kIGZvciBwbG90IHRhcmdldC4ARW50aXR5IGNhbm5vdCB0cmF2ZWwgdG8gdGhlIGxvY2F0aW9uIGl0IGlzIGFscmVhZHkgYXQuAElucHV0IGNhcmdvIGRvZXMgbm90IG1hdGNoIHJlY2lwZSByZXF1aXJlbWVudHMuAFByb3ZpZGVkIGlucHV0cyBleGNlZWQgcmVjaXBlIHJlcXVpcmVtZW50cy4AQnVpbGRpbmdzIGNhbiBvbmx5IGJlIGRlcGxveWVkIGF0IHBsYW5ldHMuAENhbm5vdCBjYW5jZWwgdGFzayB0aGF0IGlzIGltbXV0YWJsZSBvciBpbiBwcm9ncmVzcy4AUGxvdCBhbHJlYWR5IGhhcyBhIGJ1aWxkIGluIHByb2dyZXNzLgBSZXF1ZXN0ZWQgcmVzb2x2ZSBjb3VudCBleGNlZWRzIGNvbXBsZXRlZCB0YXNrcy4ATm8gc2NoZWR1bGVkIHRhc2tzLgBCbGVuZCByZXF1aXJlcyBhdCBsZWFzdCB0d28gaW5wdXQgc3RhY2tzLgBHcm91cCB0cmF2ZWwgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMuAEVudGl0eSBtdXN0IGJlIGlkbGUgdG8gbW9kaWZ5IG1vZHVsZXMuAEdyb3VwIHRyYXZlbCByZXF1aXJlcyBzdWZmaWNpZW50IGhhdWxlciBjYXBhY2l0eSBmb3IgYWxsIG5vbi1zZWxmLXByb3BlbGxlZCBlbnRpdGllcy4AQ29vcmRpbmF0ZSBpcyBvdXRzaWRlIHRoZSBwbGF5YWJsZSBtYXAgYm91bmRzLgBDcmFmdCByZXF1aXJlcyBtb3JlIGVuZXJneSB0aGFuIGVudGl0eSBoYXMuAEdhdGhlciByZXF1aXJlcyBtb3JlIGVuZXJneSB0aGFuIGVudGl0eSBoYXMuAENhbm5vdCBjYW5jZWw6IHJldHVybmluZyBjYXJnbyB3b3VsZCBvdmVyZmlsbCB0aGUgZ2l2ZXIuAFBsb3Qgb3duZXIgbXVzdCBtYXRjaCBjcmFmdGVyIG93bmVyLgBEZXN0aW5hdGlvbiBlbnRpdHkgZG9lcyBub3QgaGF2ZSBlbm91Z2ggY2FwYWNpdHkgZm9yIHRoZSBnYXRoZXIuAER1cGxpY2F0ZSBlbnRpdHkgaW4gZ3JvdXAuAEVudGl0eSBoYXMgYSBsaXZlIGhvbGQgYW5kIGNhbm5vdCB3YXJwLgBFbnRpdHkgbXVzdCBoYXZlIGZ1bGwgZW5lcmd5IHRvIHdhcnAuAEVudGl0eSBtdXN0IGhhdmUgbm8gY2FyZ28gdG8gd2FycC4ARW50aXR5IG11c3QgYmUgaWRsZSB0byB3YXJwLgBFcG9jaCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBDb3VudGVycGFydCBoYXMgYSB0ZXJtaW5hbCB0YXNrIHF1ZXVlZDsgY2Fubm90IGV4Y2hhbmdlIGNhcmdvLgBTaGlwIG11c3QgYmUgaWRsZSAobm8gYWN0aXZlIHNjaGVkdWxlKSBmb3IgdGhpcyBhY3Rpb24uAFRoaXMgdHJpcCBjYW5ub3QgYmUgbWFkZSBhcyBpdCB3b3VsZCBleGNlZWQgdGhlIG1heGltdW0gdHJhdmVsIGR1cmF0aW9uLgBTaGlwIGhhcyBub3QgeWV0IGFycml2ZWQgYXQgaXRzIGRlc3RpbmF0aW9uLgBFbnRpdHkgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZW5lcmd5IHRvIHRyYXZlbCB0byB0aGUgZGVzdGluYXRpb24uAENhbm5vdCB0cmF2ZWw6IG5vIHN5c3RlbSBhdCBzcGVjaWZpZWQgZGVzdGluYXRpb24uAEVudGl0eSBtdXN0IGJlIGF0IHRoZSB0YXJnZXQgbG9jYXRpb24uAFdhcmVob3VzZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLgBObyBzdWNoIHdvcmtlciBsYW5lIHRvIGNhbmNlbCBmcm9tLgBBbGwgYmxlbmQgaW5wdXRzIG11c3QgYmUgdGhlIHNhbWUgaXRlbS4AQWxsIGVudGl0aWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBvd25lciBmb3IgZ3JvdXAgdHJhdmVsLgBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBmb3IgZ3JvdXAgdHJhdmVsLgBFbnRpdHkgY2Fubm90IHBhcnRpY2lwYXRlIGluIGdyb3VwIHRyYXZlbC4ARW50aXR5IGRvZXMgbm90IGhhdmUgZW5vdWdoIGVuZXJneSBjYXBhY2l0eSB0byB0cmF2ZWwuAE5vIHRhc2tzIHRvIGNhbmNlbC4AQ2Fubm90IGNhbmNlbDogd291bGQgc3RyYW5kIGEgZGVwZW5kZW50IHRhc2suAFNoaXAgaXMgYWxyZWFkeSB0cmF2ZWxpbmcuAFNoaXAgY2Fubm90IGJ1eSBnb29kcyB3aGlsZSB0cmF2ZWxpbmcuAFNoaXAgY2Fubm90IGJlIHVwZGF0ZWQgd2hpbGUgdHJhdmVsaW5nLgBDYW5ub3QgdHJhdmVsIHdoaWxlIGFub3RoZXIgbW92ZW1lbnQgaXMgcGVuZGluZy4AQ2Fubm90IHRyYXZlbCB3aGlsZSBhIHN0YXRpb25hcnkgb3BlcmF0aW9uIGlzIHBlbmRpbmcuAE5vIGNvbXBsZXRlZCB0YXNrcyB0byByZXNvbHZlLgBUaGlzIGdhbWUgaGFzIG5vdCBpbml0aWFsaXplZCBhbiBlcG9jaCBzZWVkIHZhbHVlLgBQbG90IHRhcmdldCBtdXN0IGJlIGEgcGxhbmV0YXJ5IHN0cnVjdHVyZS4ASXRlbSBpcyBub3QgcGFydCBvZiB0aGUgcGxvdCB0YXJnZXQgcmVjaXBlLgBJbnN1ZmZpY2llbnQgaW5wdXRzIGZvciByZWNpcGUuAENhbm5vdCBmaW5kIHBsYXllciBmb3IgZ2l2ZW4gYWNjb3VudCBuYW1lLgBDYW5ub3QgZmluZCBnYW1lIGZvciBnaXZlbiBhY2NvdW50IG5hbWUuAFBsYXllciBoYXMgYWxyZWFkeSBqb2luZWQgdGhlIGdhbWUuAFBsYXllciBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4ASXRlbSBpcyBub3QgYSBtb2R1bGUuAFBhaXJlZCB0YXNrIG1pc3Npbmcgb24gY291bnRlcnBhcnR5IHNjaGVkdWxlLgBDYW5ub3QgY2FuY2VsOiB0YXNrIGlzIG5vbi1jYW5jZWxhYmxlLgBEZXN0aW5hdGlvbiBleGNlZWRzIHdhcnAgcmFuZ2UuAEVudGl0eSBncm91cCBub3QgZm91bmQuAE1vZHVsZSBjYXJnbyBub3QgZm91bmQuAE1vZHVsZSBzbG90IGluZGV4IGlzIGludmFsaWQuAENhbm5vdCBmaW5kIGV4dHJhY3RvciBmb3IgZ2l2ZW4gaWQuAENhbm5vdCBmaW5kIGNvbnRhaW5lciBmb3IgZ2l2ZW4gaWQuAENhbm5vdCBmaW5kIHdhcmVob3VzZSBmb3IgZ2l2ZW4gaWQuAFRoaXMgZ2FtZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkLgBUaGlzIGdhbWUgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLgBQbG90IGRvZXMgbm90IGhhdmUgYWxsIHJlcXVpcmVkIGNvbXBvbmVudHMgZGVwb3NpdGVkLgBBIHZhbHVlIGdyZWF0ZXIgdGhhbiBvbmUgaXMgcmVxdWlyZWQuAENhbm5vdCBsb2FkIGNhcmdvIHRoYXQgaXMgbm90IG93bmVkLgBUaGUgcGxhdGZvcm0gaXMgY3VycmVudGx5IGRpc2FibGVkLgBUaGlzIGdhbWUgaXMgY3VycmVudGx5IGRpc2FibGVkLgBNb2R1bGUgc2xvdCBpcyBhbHJlYWR5IG9jY3VwaWVkLgBTdGF0LWxlc3MgaXRlbXMgY2Fubm90IGJlIGJsZW5kZWQuAEVudGl0eSBjYXJnbyBjYXBhY2l0eSB3b3VsZCBiZSBleGNlZWRlZC4AQ2Fubm90IHVubG9hZCBjYXJnbyB0aGF0IGlzIG5vdCBsb2FkZWQuAEludmFsaWQgY2FyZ28gc3BlY2lmaWVkIGZvciBsb2FkL3VubG9hZC4AUGxvdHMgaGF2ZSBubyBzY2hlZHVsZSB0byBjYW5jZWw7IGNhbmNlbCB0aGUgYnVpbGRlciBpbnN0ZWFkLgB3aC1lbmRwb2ludC0Ad2gtZXhpc3RzLQBzdHJhdHVtLQBzeXN0ZW0tAGZlaXN0ZWwtAChudWxsKQBsZW5ndGhfZXJyb3Igd2FzIHRocm93biBpbiAtZm5vLWV4Y2VwdGlvbnMgbW9kZSB3aXRoIG1lc3NhZ2UgIiVzIgBsaWJjKythYmk6IABTdXBwb3J0IGZvciBmb3JtYXR0aW5nIGxvbmcgZG91YmxlIHZhbHVlcyBpcyBjdXJyZW50bHkgZGlzYWJsZWQuClRvIGVuYWJsZSBpdCwgYWRkIC1sYy1wcmludHNjYW4tbG9uZy1kb3Vi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ydQ/pNgKG4kgLr0AAAAAAADnPwBBuZIBCxegOAeuItU/WcdkgXC+Lj0AAAAAAODmPwBB2ZIBCxfQyFP3e9U/70Bd7u2tHz0AAAAAAMDmPwBB+ZIBC4gOYFnfvdXVP9xlpAgqCwq9IFIAAFN1Y2Nlc3MASWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBRdW90YSBleGNlZWRlZABNdWx0aWhvcCBhdHRlbXB0ZWQAQ2FwYWJpbGl0aWVzIGluc3VmZmljaWVudAAAAAAAAAB1Ak4A1gHiBLkEGAGOBe0CFgTyAJcDAQM4Ba8BggFPAy8EHgDUBaIAEgMeA8IB3gMIAKwFAAFkAvEBZQU0AowCzwItA0wE4wWfAvgEHAUIBbECSwUVAngAUgI8A/ED5ADDA30EzACqA3kFJAJuAW0DIgSrBEQA+wGuAIMDYADlAQcElAReBCsAWAE5AZIAwgWbAUMCRgH2BQAAAAAAABkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABGwkLGAAACQYLAAALAAYZAAAAGRkZAEGRoQELIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBBy6EBCwEMAEHXoQELFRMAAAAAEwAAAAAJDAAAAAAADAAADABBhaIBCwEQAEGRogELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBv6IBCwESAEHLogELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgqMBCw4aAAAAGhoaAAAAAAAACQBBs6MBCwEUAEG/owELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7aMBCwEWAEH5owELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBBoKQBCwEFAEGspAELAWsAQcCkAQsKbAAAAG0AAACYWgBB2KQBCwwCAAAAAAAAAP////8="
|
|
@@ -1,86 +1,128 @@
|
|
|
1
1
|
import type {ServerContract} from '../contracts'
|
|
2
2
|
import type {TaskType} from '../types'
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import * as core from './lane-core'
|
|
4
|
+
import {
|
|
5
|
+
activeTasks,
|
|
6
|
+
getLane,
|
|
7
|
+
getLanes,
|
|
8
|
+
hasSchedule,
|
|
9
|
+
isIdle,
|
|
10
|
+
LANE_MOBILITY,
|
|
11
|
+
type LaneView,
|
|
12
|
+
type ScheduleData,
|
|
13
|
+
} from './schedule'
|
|
5
14
|
|
|
6
15
|
type Task = ServerContract.Types.task
|
|
7
16
|
|
|
8
17
|
export class ScheduleAccessor {
|
|
9
|
-
|
|
18
|
+
private _laneResolved = false
|
|
19
|
+
private _lane: LaneView | undefined
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
private entity: ScheduleData,
|
|
23
|
+
private laneKey: number = LANE_MOBILITY
|
|
24
|
+
) {}
|
|
25
|
+
|
|
26
|
+
private get lane(): LaneView | undefined {
|
|
27
|
+
if (!this._laneResolved) {
|
|
28
|
+
this._lane = getLane(this.entity, this.laneKey)
|
|
29
|
+
this._laneResolved = true
|
|
30
|
+
}
|
|
31
|
+
return this._lane
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
forLane(laneKey: number): ScheduleAccessor {
|
|
35
|
+
return new ScheduleAccessor(this.entity, laneKey)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get lanes(): LaneView[] {
|
|
39
|
+
return getLanes(this.entity)
|
|
40
|
+
}
|
|
10
41
|
|
|
11
42
|
get hasSchedule(): boolean {
|
|
12
|
-
return
|
|
43
|
+
return hasSchedule(this.entity)
|
|
13
44
|
}
|
|
14
45
|
|
|
15
46
|
get isIdle(): boolean {
|
|
16
|
-
return
|
|
47
|
+
return isIdle(this.entity)
|
|
17
48
|
}
|
|
18
49
|
|
|
19
50
|
get tasks(): Task[] {
|
|
20
|
-
return schedule.
|
|
51
|
+
return this.lane?.schedule.tasks ?? []
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
activeTasks(now: Date): Task[] {
|
|
55
|
+
return activeTasks(this.entity, now)
|
|
21
56
|
}
|
|
22
57
|
|
|
23
58
|
duration(): number {
|
|
24
|
-
return
|
|
59
|
+
return this.lane ? core.laneDuration(this.lane.schedule) : 0
|
|
25
60
|
}
|
|
26
61
|
|
|
27
62
|
elapsed(now: Date): number {
|
|
28
|
-
return
|
|
63
|
+
return this.lane ? core.laneElapsed(this.lane.schedule, now) : 0
|
|
29
64
|
}
|
|
30
65
|
|
|
31
66
|
remaining(now: Date): number {
|
|
32
|
-
return
|
|
67
|
+
return this.lane ? core.laneRemaining(this.lane.schedule, now) : 0
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
startsIn(now: Date): number {
|
|
71
|
+
return this.lane ? core.laneStartsIn(this.lane.schedule, now) : 0
|
|
33
72
|
}
|
|
34
73
|
|
|
35
74
|
complete(now: Date): boolean {
|
|
36
|
-
return
|
|
75
|
+
return this.lane ? core.laneComplete(this.lane.schedule, now) : false
|
|
37
76
|
}
|
|
38
77
|
|
|
39
78
|
currentTaskIndex(now: Date): number {
|
|
40
|
-
return
|
|
79
|
+
return this.lane ? core.currentTaskIndexForLane(this.lane.schedule, now) : -1
|
|
41
80
|
}
|
|
42
81
|
|
|
43
82
|
currentTask(now: Date): Task | undefined {
|
|
44
|
-
return
|
|
83
|
+
return this.lane ? core.currentTask(this.lane.schedule, now) : undefined
|
|
45
84
|
}
|
|
46
85
|
|
|
47
86
|
currentTaskType(now: Date): TaskType | undefined {
|
|
48
|
-
return
|
|
87
|
+
return this.lane ? core.currentTaskType(this.lane.schedule, now) : undefined
|
|
49
88
|
}
|
|
50
89
|
|
|
51
90
|
taskStartTime(index: number): number {
|
|
52
|
-
return
|
|
91
|
+
return this.lane ? core.laneTaskStartTime(this.lane.schedule, index) : 0
|
|
53
92
|
}
|
|
54
93
|
|
|
55
94
|
taskElapsed(index: number, now: Date): number {
|
|
56
|
-
return
|
|
95
|
+
return this.lane ? core.laneTaskElapsed(this.lane.schedule, index, now) : 0
|
|
57
96
|
}
|
|
58
97
|
|
|
59
98
|
taskRemaining(index: number, now: Date): number {
|
|
60
|
-
return
|
|
99
|
+
return this.lane ? core.laneTaskRemaining(this.lane.schedule, index, now) : 0
|
|
61
100
|
}
|
|
62
101
|
|
|
63
102
|
taskComplete(index: number, now: Date): boolean {
|
|
64
|
-
return
|
|
103
|
+
return this.lane ? core.laneTaskComplete(this.lane.schedule, index, now) : false
|
|
65
104
|
}
|
|
66
105
|
|
|
67
106
|
taskInProgress(index: number, now: Date): boolean {
|
|
68
|
-
return
|
|
107
|
+
return this.lane ? core.laneTaskInProgress(this.lane.schedule, index, now) : false
|
|
69
108
|
}
|
|
70
109
|
|
|
71
110
|
currentTaskProgress(now: Date): number {
|
|
72
|
-
return
|
|
111
|
+
return this.lane ? core.currentTaskProgress(this.lane.schedule, now) : 0
|
|
73
112
|
}
|
|
74
113
|
|
|
75
114
|
currentTaskProgressFloat(now: Date): number {
|
|
76
|
-
return
|
|
115
|
+
return this.lane ? core.currentTaskProgressFloatForLane(this.lane.schedule, now) : 0
|
|
77
116
|
}
|
|
78
117
|
|
|
79
118
|
progress(now: Date): number {
|
|
80
|
-
return
|
|
119
|
+
return this.lane ? core.laneProgress(this.lane.schedule, now) : 0
|
|
81
120
|
}
|
|
82
121
|
}
|
|
83
122
|
|
|
84
|
-
export function createScheduleAccessor(
|
|
85
|
-
|
|
123
|
+
export function createScheduleAccessor(
|
|
124
|
+
entity: ScheduleData,
|
|
125
|
+
laneKey: number = LANE_MOBILITY
|
|
126
|
+
): ScheduleAccessor {
|
|
127
|
+
return new ScheduleAccessor(entity, laneKey)
|
|
86
128
|
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import {describe, expect, test} from 'bun:test'
|
|
2
|
+
import {HoldKind, ServerContract, TaskType} from '../index-module'
|
|
3
|
+
import {
|
|
4
|
+
calcCounterpartDelivery,
|
|
5
|
+
cargoReadyAt,
|
|
6
|
+
type CargoInput,
|
|
7
|
+
hasIncomingCoupling,
|
|
8
|
+
hasSourceCoupling,
|
|
9
|
+
type IncomingSource,
|
|
10
|
+
projectedCargoAvailableAt,
|
|
11
|
+
taskCargoEffect,
|
|
12
|
+
} from './availability'
|
|
13
|
+
|
|
14
|
+
const T0 = '2026-06-19T00:00:00'
|
|
15
|
+
const EPOCH = new Date(0)
|
|
16
|
+
|
|
17
|
+
function cargoItem(itemId: number, stats: number, quantity: number) {
|
|
18
|
+
return ServerContract.Types.cargo_item.from({item_id: itemId, stats, modules: [], quantity})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function task(over: {type?: number; duration?: number; cargo?: ReturnType<typeof cargoItem>[]}) {
|
|
22
|
+
return ServerContract.Types.task.from({
|
|
23
|
+
type: over.type ?? TaskType.LOAD,
|
|
24
|
+
duration: over.duration ?? 60,
|
|
25
|
+
cancelable: 0,
|
|
26
|
+
cargo: over.cargo ?? [],
|
|
27
|
+
couplings: [],
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function coupling(kind: number) {
|
|
32
|
+
return ServerContract.Types.coupling.from({
|
|
33
|
+
counterpart: {entity_type: 'ship', entity_id: 2},
|
|
34
|
+
hold: 1,
|
|
35
|
+
kind,
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function craftTask(
|
|
40
|
+
cargo: ReturnType<typeof cargoItem>[],
|
|
41
|
+
couplings: ReturnType<typeof coupling>[]
|
|
42
|
+
) {
|
|
43
|
+
return ServerContract.Types.task.from({
|
|
44
|
+
type: TaskType.CRAFT,
|
|
45
|
+
duration: 60,
|
|
46
|
+
cancelable: 0,
|
|
47
|
+
cargo,
|
|
48
|
+
couplings,
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function entity(
|
|
53
|
+
cargo: ReturnType<typeof cargoItem>[],
|
|
54
|
+
tasks: ReturnType<typeof task>[] = [],
|
|
55
|
+
startedISO = T0
|
|
56
|
+
) {
|
|
57
|
+
return ServerContract.Types.entity_info.from({
|
|
58
|
+
type: 'ship',
|
|
59
|
+
id: 1,
|
|
60
|
+
owner: 'player.gm',
|
|
61
|
+
entity_name: 'Ship 1',
|
|
62
|
+
coordinates: {x: 0, y: 0, z: 0},
|
|
63
|
+
item_id: 1,
|
|
64
|
+
cargomass: 0,
|
|
65
|
+
cargo: cargo.map((c) => ({
|
|
66
|
+
item_id: c.item_id,
|
|
67
|
+
stats: c.stats,
|
|
68
|
+
modules: c.modules,
|
|
69
|
+
quantity: c.quantity,
|
|
70
|
+
id: 0,
|
|
71
|
+
})),
|
|
72
|
+
modules: [],
|
|
73
|
+
lanes: [{lane_key: 0, schedule: {started: startedISO, tasks}}],
|
|
74
|
+
gatherer_lanes: [],
|
|
75
|
+
crafter_lanes: [],
|
|
76
|
+
builder_lanes: [],
|
|
77
|
+
loader_lanes: [],
|
|
78
|
+
holds: [],
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
describe('cargoReadyAt', () => {
|
|
83
|
+
test('on-hand covers demand → epoch', () => {
|
|
84
|
+
const e = entity([cargoItem(7, 0, 10)])
|
|
85
|
+
const demand: CargoInput[] = [{itemId: 7, stats: 0n, quantity: 5}]
|
|
86
|
+
expect(cargoReadyAt(e, demand)).toEqual(EPOCH)
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
test('own-lane LOAD covers demand → its completion', () => {
|
|
90
|
+
const loadCompletesAt = new Date('2026-06-19T00:01:00.000Z')
|
|
91
|
+
const e = entity(
|
|
92
|
+
[],
|
|
93
|
+
[task({type: TaskType.LOAD, duration: 60, cargo: [cargoItem(7, 0, 10)]})]
|
|
94
|
+
)
|
|
95
|
+
const demand: CargoInput[] = [{itemId: 7, stats: 0n, quantity: 5}]
|
|
96
|
+
expect(cargoReadyAt(e, demand)).toEqual(loadCompletesAt)
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
test('incoming source covers demand → its until', () => {
|
|
100
|
+
const until = new Date('2026-06-19T00:00:30.000Z')
|
|
101
|
+
const e = entity([])
|
|
102
|
+
const incoming: IncomingSource[] = [{holdId: '1', until, items: [cargoItem(7, 0, 10)]}]
|
|
103
|
+
const demand: CargoInput[] = [{itemId: 7, stats: 0n, quantity: 5}]
|
|
104
|
+
expect(cargoReadyAt(e, demand, incoming)).toEqual(until)
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
test('on-hand covers demand; unrelated same-item different-stats inflow does not delay readiness', () => {
|
|
108
|
+
const laterCompletesAt = new Date('2026-06-19T00:01:00.000Z')
|
|
109
|
+
const e = entity(
|
|
110
|
+
[cargoItem(7, 0, 10)],
|
|
111
|
+
[task({type: TaskType.LOAD, duration: 60, cargo: [cargoItem(7, 99, 10)]})]
|
|
112
|
+
)
|
|
113
|
+
const demand: CargoInput[] = [{itemId: 7, stats: 0n, quantity: 5}]
|
|
114
|
+
const result = cargoReadyAt(e, demand)
|
|
115
|
+
expect(result).toEqual(EPOCH)
|
|
116
|
+
expect(result).not.toEqual(laterCompletesAt)
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
describe('calcCounterpartDelivery', () => {
|
|
121
|
+
test('coupled CRAFT task returns output cargo only', () => {
|
|
122
|
+
const output = cargoItem(9, 0, 1)
|
|
123
|
+
const t = task({
|
|
124
|
+
type: TaskType.CRAFT,
|
|
125
|
+
cargo: [cargoItem(7, 0, 2), cargoItem(8, 0, 1), output],
|
|
126
|
+
})
|
|
127
|
+
const result = calcCounterpartDelivery(t, coupling(HoldKind.PUSH))
|
|
128
|
+
expect(result.length).toBe(1)
|
|
129
|
+
expect(result[0].item_id.toNumber()).toBe(9)
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
test('CRAFT task with empty cargo returns []', () => {
|
|
133
|
+
const t = task({type: TaskType.CRAFT, cargo: []})
|
|
134
|
+
expect(calcCounterpartDelivery(t, coupling(HoldKind.PUSH))).toEqual([])
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
test('coupled UNLOAD task returns whole cargo', () => {
|
|
138
|
+
const t = task({type: TaskType.UNLOAD, cargo: [cargoItem(7, 0, 2), cargoItem(8, 0, 1)]})
|
|
139
|
+
const result = calcCounterpartDelivery(t, coupling(HoldKind.GATHER))
|
|
140
|
+
expect(result.length).toBe(2)
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
test('non-incoming coupling kind returns []', () => {
|
|
144
|
+
const t = task({type: TaskType.UNLOAD, cargo: [cargoItem(7, 0, 2)]})
|
|
145
|
+
expect(calcCounterpartDelivery(t, coupling(HoldKind.PULL))).toEqual([])
|
|
146
|
+
})
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
describe('projectedCargoAvailableAt — incoming', () => {
|
|
150
|
+
const until = new Date('2026-06-19T00:00:30.000Z')
|
|
151
|
+
|
|
152
|
+
function incomingFor(qty: number): IncomingSource[] {
|
|
153
|
+
return [{holdId: '1', until, items: [cargoItem(7, 0, qty)]}]
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
test('credits an incoming source strictly before its until', () => {
|
|
157
|
+
const e = entity([])
|
|
158
|
+
const avail = projectedCargoAvailableAt(e, new Date(until.getTime() + 1), incomingFor(10))
|
|
159
|
+
expect(avail.get('7:0')).toBe(10n)
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
test('does not credit an incoming source at exactly its until', () => {
|
|
163
|
+
const e = entity([])
|
|
164
|
+
const avail = projectedCargoAvailableAt(e, until, incomingFor(10))
|
|
165
|
+
expect(avail.get('7:0') ?? 0n).toBe(0n)
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
test('does not credit an incoming source before its until', () => {
|
|
169
|
+
const e = entity([])
|
|
170
|
+
const avail = projectedCargoAvailableAt(e, new Date(until.getTime() - 1), incomingFor(10))
|
|
171
|
+
expect(avail.get('7:0') ?? 0n).toBe(0n)
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
describe('clustercraft projection parity', () => {
|
|
176
|
+
const inputs = [cargoItem(1001, 0, 10), cargoItem(1002, 0, 5)]
|
|
177
|
+
const output = cargoItem(2001, 0, 1)
|
|
178
|
+
|
|
179
|
+
test('own-hold craft: inputs removed, output added', () => {
|
|
180
|
+
const eff = taskCargoEffect(craftTask([...inputs, output], []))
|
|
181
|
+
expect(eff.removed.length).toBe(2)
|
|
182
|
+
expect(eff.added).toEqual([output])
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
test('clustercraft to a target: no crafter debit, no crafter credit', () => {
|
|
186
|
+
const t = craftTask(
|
|
187
|
+
[...inputs, output],
|
|
188
|
+
[coupling(HoldKind.SOURCE), coupling(HoldKind.GATHER)]
|
|
189
|
+
)
|
|
190
|
+
expect(hasSourceCoupling(t)).toBe(true)
|
|
191
|
+
expect(hasIncomingCoupling(t)).toBe(true)
|
|
192
|
+
const eff = taskCargoEffect(t)
|
|
193
|
+
expect(eff.removed).toEqual([])
|
|
194
|
+
expect(eff.added).toEqual([])
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
test('clustercraft with target omitted: output falls back to crafter, still no input debit', () => {
|
|
198
|
+
const t = craftTask([...inputs, output], [coupling(HoldKind.SOURCE)])
|
|
199
|
+
expect(hasIncomingCoupling(t)).toBe(false)
|
|
200
|
+
const eff = taskCargoEffect(t)
|
|
201
|
+
expect(eff.removed).toEqual([])
|
|
202
|
+
expect(eff.added).toEqual([output])
|
|
203
|
+
})
|
|
204
|
+
})
|