@lodestar/types 1.27.0-rc.0 → 1.27.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ForkAll, ForkBlobs, ForkExecution, ForkLightClient, ForkName, ForkPostElectra, ForkPreBlobs } from "@lodestar/params";
1
+ import { ForkAll, ForkName, ForkPostAltair, ForkPostBellatrix, ForkPostDeneb, ForkPostElectra, ForkPreDeneb } from "@lodestar/params";
2
2
  import { ts as altair } from "./altair/index.js";
3
3
  import { ts as bellatrix } from "./bellatrix/index.js";
4
4
  import { ts as capella } from "./capella/index.js";
@@ -223,35 +223,35 @@ export type TypesFor<F extends ForkName, K extends keyof TypesByFork[F] | void =
223
223
  export type BeaconBlockHeader<F extends ForkAll = ForkAll> = TypesByFork[F]["BeaconBlockHeader"];
224
224
  export type SignedBeaconBlockHeader<F extends ForkAll = ForkAll> = TypesByFork[F]["SignedBeaconBlockHeader"];
225
225
  export type BeaconBlock<F extends ForkAll = ForkAll> = TypesByFork[F]["BeaconBlock"];
226
- export type BlindedBeaconBlock<F extends ForkExecution = ForkExecution> = TypesByFork[F]["BlindedBeaconBlock"];
226
+ export type BlindedBeaconBlock<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["BlindedBeaconBlock"];
227
227
  export type SignedBeaconBlock<F extends ForkAll = ForkAll> = TypesByFork[F]["SignedBeaconBlock"];
228
- export type SignedBlindedBeaconBlock<F extends ForkExecution = ForkExecution> = TypesByFork[F]["SignedBlindedBeaconBlock"];
228
+ export type SignedBlindedBeaconBlock<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["SignedBlindedBeaconBlock"];
229
229
  export type BeaconBlockBody<F extends ForkAll = ForkAll> = TypesByFork[F]["BeaconBlockBody"];
230
- export type BlindedBeaconBlockBody<F extends ForkExecution = ForkExecution> = TypesByFork[F]["BlindedBeaconBlockBody"];
231
- export type BlockContents<F extends ForkBlobs = ForkBlobs> = TypesByFork[F]["BlockContents"];
232
- export type SignedBlockContents<F extends ForkBlobs = ForkBlobs> = TypesByFork[F]["SignedBlockContents"];
233
- export type SignedOrUnsignedBlockContents<F extends ForkBlobs = ForkBlobs> = BlockContents<F> | SignedBlockContents<F>;
234
- export type BeaconBlockOrContents<FB extends ForkPreBlobs = ForkPreBlobs, FC extends ForkBlobs = ForkBlobs> = BeaconBlock<FB> | BlockContents<FC>;
235
- export type SignedBeaconBlockOrContents<FB extends ForkPreBlobs = ForkPreBlobs, FC extends ForkBlobs = ForkBlobs> = SignedBeaconBlock<FB> | SignedBlockContents<FC>;
236
- export type ExecutionPayload<F extends ForkExecution = ForkExecution> = TypesByFork[F]["ExecutionPayload"];
237
- export type ExecutionPayloadHeader<F extends ForkExecution = ForkExecution> = TypesByFork[F]["ExecutionPayloadHeader"];
230
+ export type BlindedBeaconBlockBody<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["BlindedBeaconBlockBody"];
231
+ export type BlockContents<F extends ForkPostDeneb = ForkPostDeneb> = TypesByFork[F]["BlockContents"];
232
+ export type SignedBlockContents<F extends ForkPostDeneb = ForkPostDeneb> = TypesByFork[F]["SignedBlockContents"];
233
+ export type SignedOrUnsignedBlockContents<F extends ForkPostDeneb = ForkPostDeneb> = BlockContents<F> | SignedBlockContents<F>;
234
+ export type BeaconBlockOrContents<FB extends ForkPreDeneb = ForkPreDeneb, FC extends ForkPostDeneb = ForkPostDeneb> = BeaconBlock<FB> | BlockContents<FC>;
235
+ export type SignedBeaconBlockOrContents<FB extends ForkPreDeneb = ForkPreDeneb, FC extends ForkPostDeneb = ForkPostDeneb> = SignedBeaconBlock<FB> | SignedBlockContents<FC>;
236
+ export type ExecutionPayload<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["ExecutionPayload"];
237
+ export type ExecutionPayloadHeader<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["ExecutionPayloadHeader"];
238
238
  export type ExecutionRequests<F extends ForkPostElectra = ForkPostElectra> = TypesByFork[F]["ExecutionRequests"];
239
- export type BlobsBundle<F extends ForkBlobs = ForkBlobs> = TypesByFork[F]["BlobsBundle"];
240
- export type Contents<F extends ForkBlobs = ForkBlobs> = TypesByFork[F]["Contents"];
241
- export type ExecutionPayloadAndBlobsBundle<F extends ForkBlobs = ForkBlobs> = TypesByFork[F]["ExecutionPayloadAndBlobsBundle"];
242
- export type LightClientHeader<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["LightClientHeader"];
243
- export type LightClientBootstrap<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["LightClientBootstrap"];
244
- export type LightClientUpdate<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["LightClientUpdate"];
245
- export type LightClientFinalityUpdate<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["LightClientFinalityUpdate"];
246
- export type LightClientOptimisticUpdate<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["LightClientOptimisticUpdate"];
247
- export type LightClientStore<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["LightClientStore"];
248
- export type SyncCommittee<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["SyncCommittee"];
249
- export type SyncAggregate<F extends ForkLightClient = ForkLightClient> = TypesByFork[F]["SyncAggregate"];
239
+ export type BlobsBundle<F extends ForkPostDeneb = ForkPostDeneb> = TypesByFork[F]["BlobsBundle"];
240
+ export type Contents<F extends ForkPostDeneb = ForkPostDeneb> = TypesByFork[F]["Contents"];
241
+ export type ExecutionPayloadAndBlobsBundle<F extends ForkPostDeneb = ForkPostDeneb> = TypesByFork[F]["ExecutionPayloadAndBlobsBundle"];
242
+ export type LightClientHeader<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["LightClientHeader"];
243
+ export type LightClientBootstrap<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["LightClientBootstrap"];
244
+ export type LightClientUpdate<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["LightClientUpdate"];
245
+ export type LightClientFinalityUpdate<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["LightClientFinalityUpdate"];
246
+ export type LightClientOptimisticUpdate<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["LightClientOptimisticUpdate"];
247
+ export type LightClientStore<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["LightClientStore"];
248
+ export type SyncCommittee<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["SyncCommittee"];
249
+ export type SyncAggregate<F extends ForkPostAltair = ForkPostAltair> = TypesByFork[F]["SyncAggregate"];
250
250
  export type BeaconState<F extends ForkName = ForkAll> = TypesByFork[F]["BeaconState"];
251
251
  export type Metadata<F extends ForkName = ForkAll> = TypesByFork[F]["Metadata"];
252
- export type BuilderBid<F extends ForkExecution = ForkExecution> = TypesByFork[F]["BuilderBid"];
253
- export type SignedBuilderBid<F extends ForkExecution = ForkExecution> = TypesByFork[F]["SignedBuilderBid"];
254
- export type SSEPayloadAttributes<F extends ForkExecution = ForkExecution> = TypesByFork[F]["SSEPayloadAttributes"];
252
+ export type BuilderBid<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["BuilderBid"];
253
+ export type SignedBuilderBid<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["SignedBuilderBid"];
254
+ export type SSEPayloadAttributes<F extends ForkPostBellatrix = ForkPostBellatrix> = TypesByFork[F]["SSEPayloadAttributes"];
255
255
  export type Attestation<F extends ForkName = ForkAll> = TypesByFork[F]["Attestation"];
256
256
  export type SingleAttestation<F extends ForkName = ForkAll> = TypesByFork[F]["SingleAttestation"];
257
257
  export type IndexedAttestation<F extends ForkName = ForkAll> = TypesByFork[F]["IndexedAttestation"];
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,QAAQ,GAGT,MAAM,kBAAkB,CAAC;AAS1B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,EAAE,IAAI,SAAS,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,EAAE,IAAI,OAAO,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,EAAE,IAAI,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,EAAE,IAAI,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAKjD,0DAA0D;AAC1D,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,wCAAiB,CAAA;AACnB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,GAMT,MAAM,kBAAkB,CAAC;AAS1B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,EAAE,IAAI,SAAS,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,EAAE,IAAI,OAAO,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,EAAE,IAAI,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,EAAE,IAAI,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAKjD,0DAA0D;AAC1D,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,wCAAiB,CAAA;AACnB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B"}
@@ -1,13 +1,13 @@
1
- import { ForkBlobs, ForkExecution, ForkPostElectra } from "@lodestar/params";
1
+ import { ForkPostBellatrix, ForkPostDeneb, ForkPostElectra } from "@lodestar/params";
2
2
  import { Attestation, BeaconBlockBody, BeaconBlockOrContents, BlindedBeaconBlock, BlindedBeaconBlockBody, BlockContents, ExecutionPayload, ExecutionPayloadAndBlobsBundle, ExecutionPayloadHeader, LightClientFinalityUpdate, LightClientUpdate, SignedBeaconBlock, SignedBeaconBlockOrContents, SignedBlindedBeaconBlock, SignedBlockContents, SingleAttestation } from "../types.js";
3
- export declare function isExecutionPayload<F extends ForkExecution>(payload: ExecutionPayload<F> | ExecutionPayloadHeader<F>): payload is ExecutionPayload<F>;
4
- export declare function isExecutionPayloadHeader<F extends ForkExecution>(payload: ExecutionPayload<F> | ExecutionPayloadHeader<F>): payload is ExecutionPayloadHeader<F>;
5
- export declare function isExecutionPayloadAndBlobsBundle<F extends ForkBlobs>(data: ExecutionPayload<ForkExecution> | ExecutionPayloadAndBlobsBundle<F>): data is ExecutionPayloadAndBlobsBundle<F>;
6
- export declare function isBlindedBeaconBlock<F extends ForkExecution>(block: BeaconBlockOrContents | SignedBeaconBlockOrContents): block is BlindedBeaconBlock<F>;
7
- export declare function isBlindedSignedBeaconBlock<F extends ForkExecution>(signedBlock: SignedBeaconBlock | SignedBeaconBlockOrContents): signedBlock is SignedBlindedBeaconBlock<F>;
8
- export declare function isBlindedBeaconBlockBody<F extends ForkExecution>(body: BeaconBlockBody | BlindedBeaconBlockBody): body is BlindedBeaconBlockBody<F>;
9
- export declare function isBlockContents<F extends ForkBlobs>(data: BeaconBlockOrContents | SignedBeaconBlockOrContents): data is BlockContents<F>;
10
- export declare function isSignedBlockContents<F extends ForkBlobs>(data: SignedBeaconBlockOrContents | BeaconBlockOrContents): data is SignedBlockContents<F>;
3
+ export declare function isExecutionPayload<F extends ForkPostBellatrix>(payload: ExecutionPayload<F> | ExecutionPayloadHeader<F>): payload is ExecutionPayload<F>;
4
+ export declare function isExecutionPayloadHeader<F extends ForkPostBellatrix>(payload: ExecutionPayload<F> | ExecutionPayloadHeader<F>): payload is ExecutionPayloadHeader<F>;
5
+ export declare function isExecutionPayloadAndBlobsBundle<F extends ForkPostDeneb>(data: ExecutionPayload<ForkPostBellatrix> | ExecutionPayloadAndBlobsBundle<F>): data is ExecutionPayloadAndBlobsBundle<F>;
6
+ export declare function isBlindedBeaconBlock<F extends ForkPostBellatrix>(block: BeaconBlockOrContents | SignedBeaconBlockOrContents): block is BlindedBeaconBlock<F>;
7
+ export declare function isBlindedSignedBeaconBlock<F extends ForkPostBellatrix>(signedBlock: SignedBeaconBlock | SignedBeaconBlockOrContents): signedBlock is SignedBlindedBeaconBlock<F>;
8
+ export declare function isBlindedBeaconBlockBody<F extends ForkPostBellatrix>(body: BeaconBlockBody | BlindedBeaconBlockBody): body is BlindedBeaconBlockBody<F>;
9
+ export declare function isBlockContents<F extends ForkPostDeneb>(data: BeaconBlockOrContents | SignedBeaconBlockOrContents): data is BlockContents<F>;
10
+ export declare function isSignedBlockContents<F extends ForkPostDeneb>(data: SignedBeaconBlockOrContents | BeaconBlockOrContents): data is SignedBlockContents<F>;
11
11
  export declare function isElectraAttestation(attestation: Attestation): attestation is Attestation<ForkPostElectra>;
12
12
  export declare function isElectraSingleAttestation(singleAttestation: SingleAttestation): singleAttestation is SingleAttestation<ForkPostElectra>;
13
13
  export declare function isElectraLightClientUpdate(update: LightClientUpdate): update is LightClientUpdate<ForkPostElectra>;
@@ -1 +1 @@
1
- {"version":3,"file":"typeguards.js","sourceRoot":"","sources":["../../src/utils/typeguards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAA4C,MAAM,kBAAkB,CAAC;AAqBzG,MAAM,UAAU,kBAAkB,CAChC,OAAwD;IAExD,sEAAsE;IACtE,kEAAkE;IAClE,OAAQ,OAA+B,CAAC,YAAY,KAAK,SAAS,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAwD;IAExD,sEAAsE;IACtE,kEAAkE;IAClE,OAAQ,OAAqC,CAAC,gBAAgB,KAAK,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,IAAyE;IAEzE,OAAQ,IAAkD,CAAC,WAAW,KAAK,SAAS,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA0D;IAE1D,OAAQ,KAAqB,CAAC,IAAI,KAAK,IAAI,IAAI,wBAAwB,CAAE,KAAqB,CAAC,IAAI,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAA4D;IAE5D,OAAQ,WAA2C,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,KAAK,SAAS,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAA8C;IAE9C,OAAQ,IAA+B,CAAC,sBAAsB,KAAK,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAyD;IAEzD,OAAQ,IAAyB,CAAC,SAAS,KAAK,SAAS,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAyD;IAEzD,OAAQ,IAA+B,CAAC,SAAS,KAAK,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAwB;IAC3D,OAAQ,WAA4C,CAAC,aAAa,KAAK,SAAS,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,iBAAoC;IAEpC,OAAQ,iBAAwD,CAAC,cAAc,KAAK,SAAS,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAClE,MAAM,iBAAiB,GAAG,MAA4C,CAAC;IACvE,OAAO,CACL,iBAAiB,CAAC,cAAc,KAAK,SAAS;QAC9C,iBAAiB,CAAC,cAAc,CAAC,MAAM,KAAK,4BAA4B,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,MAAiC;IAEjC,MAAM,iBAAiB,GAAG,MAA4C,CAAC;IACvE,OAAO,CACL,iBAAiB,CAAC,cAAc,KAAK,SAAS;QAC9C,iBAAiB,CAAC,cAAc,CAAC,MAAM,KAAK,4BAA4B,CACzE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"typeguards.js","sourceRoot":"","sources":["../../src/utils/typeguards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAoD,MAAM,kBAAkB,CAAC;AAqBjH,MAAM,UAAU,kBAAkB,CAChC,OAAwD;IAExD,sEAAsE;IACtE,kEAAkE;IAClE,OAAQ,OAA+B,CAAC,YAAY,KAAK,SAAS,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAwD;IAExD,sEAAsE;IACtE,kEAAkE;IAClE,OAAQ,OAAqC,CAAC,gBAAgB,KAAK,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,IAA6E;IAE7E,OAAQ,IAAsD,CAAC,WAAW,KAAK,SAAS,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA0D;IAE1D,OAAQ,KAAqB,CAAC,IAAI,KAAK,IAAI,IAAI,wBAAwB,CAAE,KAAqB,CAAC,IAAI,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAA4D;IAE5D,OAAQ,WAA2C,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,KAAK,SAAS,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAA8C;IAE9C,OAAQ,IAA+B,CAAC,sBAAsB,KAAK,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAyD;IAEzD,OAAQ,IAAyB,CAAC,SAAS,KAAK,SAAS,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAyD;IAEzD,OAAQ,IAA+B,CAAC,SAAS,KAAK,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAwB;IAC3D,OAAQ,WAA4C,CAAC,aAAa,KAAK,SAAS,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,iBAAoC;IAEpC,OAAQ,iBAAwD,CAAC,cAAc,KAAK,SAAS,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAClE,MAAM,iBAAiB,GAAG,MAA4C,CAAC;IACvE,OAAO,CACL,iBAAiB,CAAC,cAAc,KAAK,SAAS;QAC9C,iBAAiB,CAAC,cAAc,CAAC,MAAM,KAAK,4BAA4B,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,MAAiC;IAEjC,MAAM,iBAAiB,GAAG,MAA4C,CAAC;IACvE,OAAO,CACL,iBAAiB,CAAC,cAAc,KAAK,SAAS;QAC9C,iBAAiB,CAAC,cAAc,CAAC,MAAM,KAAK,4BAA4B,CACzE,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.27.0-rc.0",
14
+ "version": "1.27.0-rc.1",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -74,7 +74,7 @@
74
74
  "types": "lib/index.d.ts",
75
75
  "dependencies": {
76
76
  "@chainsafe/ssz": "^1.0.2",
77
- "@lodestar/params": "1.27.0-rc.0",
77
+ "@lodestar/params": "1.27.0-rc.1",
78
78
  "ethereum-cryptography": "^2.0.0"
79
79
  },
80
80
  "keywords": [
@@ -83,5 +83,5 @@
83
83
  "beacon",
84
84
  "blockchain"
85
85
  ],
86
- "gitHead": "e42b3c49c245588c6d562ff5d0b9d0d574422b8b"
86
+ "gitHead": "de1a864d7cfa323cf12d712a515a0b22dd820001"
87
87
  }