@taquito/taquito 22.0.0 → 23.0.0-beta.0
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/README.md +1 -1
- package/dist/400.taquito.min.js +1 -0
- package/dist/993.taquito.min.js +1 -0
- package/dist/lib/constants.js +17 -14
- package/dist/lib/contract/rpc-contract-provider.js +4 -7
- package/dist/lib/estimate/rpc-estimate-provider.js +2 -6
- package/dist/lib/prepare/prepare-provider.js +4 -2
- package/dist/lib/subscribe/polling-subcribe-provider.js +7 -3
- package/dist/lib/version.js +2 -2
- package/dist/lib/wallet/operation-factory.js +1 -1
- package/dist/lib/wallet/operation.js +2 -2
- package/dist/lib/wallet/wallet.js +0 -3
- package/dist/taquito.es6.js +40 -41
- package/dist/taquito.es6.js.map +1 -1
- package/dist/taquito.min.js +1 -1
- package/dist/taquito.umd.js +39 -40
- package/dist/taquito.umd.js.map +1 -1
- package/dist/types/constants.d.ts +4 -1
- package/dist/types/contract/interface.d.ts +2 -2
- package/dist/types/contract/rpc-contract-provider.d.ts +3 -3
- package/dist/types/estimate/estimate-provider-interface.d.ts +2 -2
- package/dist/types/estimate/rpc-estimate-provider.d.ts +2 -3
- package/dist/types/prepare/interface.d.ts +2 -0
- package/dist/types/prepare/prepare-provider.d.ts +3 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ The `@taquito/taquito` package contains higher-level functionality that builds u
|
|
|
7
7
|
## CDN Bundle
|
|
8
8
|
|
|
9
9
|
```html
|
|
10
|
-
<script src="https://unpkg.com/@taquito/taquito@
|
|
10
|
+
<script src="https://unpkg.com/@taquito/taquito@23.0.0-beta.0/dist/taquito.min.js"
|
|
11
11
|
crossorigin="anonymous" integrity="sha384-IxvP0ECHi5oqLyz94wF85pU9+ktcsL1HHtA42MITxZsGbsUMEu/g+0Vkjj5vqiMR"></script>
|
|
12
12
|
```
|
|
13
13
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunktaquito=self.webpackChunktaquito||[]).push([[400],{6400:()=>{}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunktaquito=self.webpackChunktaquito||[]).push([[993],{5993:()=>{}}]);
|
package/dist/lib/constants.js
CHANGED
|
@@ -31,25 +31,25 @@ exports.DEFAULT_STORAGE_LIMIT = {
|
|
|
31
31
|
TRANSFER: 257,
|
|
32
32
|
REVEAL: 0,
|
|
33
33
|
};
|
|
34
|
-
// value is based on octez-client reveal operation gasLimit of each address type in
|
|
34
|
+
// value is based on octez-client reveal operation gasLimit of each address type in Seoul Protocol
|
|
35
35
|
const REVEAL_GAS_LIMIT = {
|
|
36
|
-
TZ1:
|
|
37
|
-
TZ2:
|
|
38
|
-
TZ3:
|
|
39
|
-
TZ4:
|
|
36
|
+
TZ1: 171,
|
|
37
|
+
TZ2: 157,
|
|
38
|
+
TZ3: 447,
|
|
39
|
+
TZ4: 3252,
|
|
40
40
|
};
|
|
41
|
-
// value is based on octez-client reveal operation fee of each address type in
|
|
41
|
+
// value is based on octez-client reveal operation fee of each address type in Seoul Protocol
|
|
42
42
|
const REVEAL_FEE = {
|
|
43
|
-
TZ1:
|
|
44
|
-
TZ2:
|
|
45
|
-
TZ3:
|
|
46
|
-
TZ4:
|
|
43
|
+
TZ1: 278,
|
|
44
|
+
TZ2: 277,
|
|
45
|
+
TZ3: 306,
|
|
46
|
+
TZ4: 736,
|
|
47
47
|
};
|
|
48
|
-
// value is based on octez-client reveal operation storageLimit of all address type in
|
|
48
|
+
// value is based on octez-client reveal operation storageLimit of all address type in Seoul Protocol
|
|
49
49
|
exports.REVEAL_STORAGE_LIMIT = 0;
|
|
50
|
-
// protocol constants in
|
|
50
|
+
// protocol constants in Seoul Protocol
|
|
51
51
|
exports.ORIGINATION_SIZE = 257;
|
|
52
|
-
// protocol constants in
|
|
52
|
+
// protocol constants in Seoul Protocol
|
|
53
53
|
exports.COST_PER_BYTE = 250;
|
|
54
54
|
var Protocols;
|
|
55
55
|
(function (Protocols) {
|
|
@@ -75,6 +75,7 @@ var Protocols;
|
|
|
75
75
|
Protocols["PsParisCZ"] = "PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi";
|
|
76
76
|
Protocols["PsQuebecn"] = "PsQuebecnLByd3JwTiGadoG4nGWi3HYiLXUjkibeFV8dCFeVMUg";
|
|
77
77
|
Protocols["PsRiotuma"] = "PsRiotumaAMotcRoDWW1bysEhQy2n1M5fy8JgRp8jjRfHGmfeA7";
|
|
78
|
+
Protocols["PtSeouLou"] = "PtSeouLouXkxhg39oWzjxDWaCydNfR3RxCUrNe4Q9Ro8BTehcbh";
|
|
78
79
|
Protocols["ProtoALpha"] = "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK";
|
|
79
80
|
})(Protocols || (exports.Protocols = Protocols = {}));
|
|
80
81
|
exports.protocols = {
|
|
@@ -96,7 +97,8 @@ exports.protocols = {
|
|
|
96
97
|
'020': [Protocols.PtParisBx, Protocols.PsParisCZ],
|
|
97
98
|
'021': [Protocols.PsQuebecn],
|
|
98
99
|
'022': [Protocols.PsRiotuma],
|
|
99
|
-
'023': [Protocols.
|
|
100
|
+
'023': [Protocols.PtSeouLou],
|
|
101
|
+
'024': [Protocols.ProtoALpha],
|
|
100
102
|
};
|
|
101
103
|
var ChainIds;
|
|
102
104
|
(function (ChainIds) {
|
|
@@ -120,6 +122,7 @@ var ChainIds;
|
|
|
120
122
|
ChainIds["PARISCNET"] = "NetXXWAHLEvre9b";
|
|
121
123
|
ChainIds["QUEBECNET"] = "NetXuTeGinLEqxp";
|
|
122
124
|
ChainIds["RIONET"] = "NetXPdgaoabtBth";
|
|
125
|
+
ChainIds["SEOULNET"] = "NetXd56aBs1aeW3";
|
|
123
126
|
})(ChainIds || (exports.ChainIds = ChainIds = {}));
|
|
124
127
|
// A fixed fee reveal operation gasLimit accepted by both simulate and injection endpoint is between 1.2-5 times of actual gas consumption (3.5 fails occasionally with gas exhausted; 4 fails occasionally with fee too low)
|
|
125
128
|
const getRevealGasLimit = (address) => Math.round((getRevealGasLimitInternal(address) * 37) / 10);
|
|
@@ -238,7 +238,7 @@ class RpcContractProvider extends provider_1.Provider {
|
|
|
238
238
|
throw new core_1.InvalidAddressError(params.delegate, (0, utils_1.invalidDetail)(delegateValidation));
|
|
239
239
|
}
|
|
240
240
|
// Since babylon delegation source cannot smart contract
|
|
241
|
-
if (
|
|
241
|
+
if (/^kt1/i.test(params.source)) {
|
|
242
242
|
throw new errors_1.InvalidDelegationSource(params.source);
|
|
243
243
|
}
|
|
244
244
|
const publicKeyHash = yield this.signer.publicKeyHash();
|
|
@@ -389,9 +389,6 @@ class RpcContractProvider extends provider_1.Provider {
|
|
|
389
389
|
if (!params.to) {
|
|
390
390
|
params.to = params.source;
|
|
391
391
|
}
|
|
392
|
-
if (params.to && params.to !== params.source) {
|
|
393
|
-
throw new core_1.InvalidStakingAddressError(params.to);
|
|
394
|
-
}
|
|
395
392
|
if (!params.amount) {
|
|
396
393
|
params.amount = 0;
|
|
397
394
|
}
|
|
@@ -439,8 +436,8 @@ class RpcContractProvider extends provider_1.Provider {
|
|
|
439
436
|
}
|
|
440
437
|
/**
|
|
441
438
|
*
|
|
442
|
-
* @description Reveal the current address. Will throw an error if the address is already revealed.
|
|
443
|
-
*
|
|
439
|
+
* @description Reveal the public key of the current address. Will throw an error if the address is already revealed.
|
|
440
|
+
* @remarks Reveal tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
444
441
|
* @returns An operation handle with the result from the rpc node
|
|
445
442
|
*
|
|
446
443
|
* @param RevealParams operation parameter
|
|
@@ -571,7 +568,7 @@ class RpcContractProvider extends provider_1.Provider {
|
|
|
571
568
|
/**
|
|
572
569
|
*
|
|
573
570
|
* @description Updates the consensus key of the baker to public_key starting from the current cycle plus PRESERVED_CYCLES + 1
|
|
574
|
-
*
|
|
571
|
+
* @remarks updateConsensusKey to a tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
575
572
|
* @returns An operation handle with the result from the rpc node
|
|
576
573
|
*
|
|
577
574
|
* @param UpdateConsensusKeyParams
|
|
@@ -271,9 +271,6 @@ class RPCEstimateProvider extends provider_1.Provider {
|
|
|
271
271
|
if (!rest.to) {
|
|
272
272
|
rest.to = rest.source;
|
|
273
273
|
}
|
|
274
|
-
if (rest.to && rest.to !== rest.source) {
|
|
275
|
-
throw new core_1.InvalidStakingAddressError(rest.to);
|
|
276
|
-
}
|
|
277
274
|
if (!rest.amount) {
|
|
278
275
|
rest.amount = 0;
|
|
279
276
|
}
|
|
@@ -396,7 +393,7 @@ class RPCEstimateProvider extends provider_1.Provider {
|
|
|
396
393
|
/**
|
|
397
394
|
*
|
|
398
395
|
* @description Estimate gasLimit, storageLimit and fees to reveal the current account
|
|
399
|
-
*
|
|
396
|
+
* @remarks Reveal tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
400
397
|
* @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed
|
|
401
398
|
*
|
|
402
399
|
* @param Estimate
|
|
@@ -469,9 +466,8 @@ class RPCEstimateProvider extends provider_1.Provider {
|
|
|
469
466
|
/**
|
|
470
467
|
*
|
|
471
468
|
* @description Estimate gasLimit, storageLimit and fees for an Update Consensus Key operation
|
|
472
|
-
*
|
|
469
|
+
* @remarks updateConsensusKey to a tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
473
470
|
* @returns An estimation of gasLimit, storageLimit and fees for the operation
|
|
474
|
-
*
|
|
475
471
|
* @param Estimate
|
|
476
472
|
*/
|
|
477
473
|
updateConsensusKey(params) {
|
|
@@ -218,6 +218,7 @@ class PrepareProvider extends provider_1.Provider {
|
|
|
218
218
|
/**
|
|
219
219
|
*
|
|
220
220
|
* @description Method to prepare a reveal operation
|
|
221
|
+
* @remarks Reveal tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
221
222
|
* @param operation RPCOperation object or RPCOperation array
|
|
222
223
|
* @param source string or undefined source pkh
|
|
223
224
|
* @returns a PreparedOperation object
|
|
@@ -393,11 +394,11 @@ class PrepareProvider extends provider_1.Provider {
|
|
|
393
394
|
*/
|
|
394
395
|
finalizeUnstake(_a) {
|
|
395
396
|
return __awaiter(this, void 0, void 0, function* () {
|
|
396
|
-
var { fee, storageLimit, gasLimit } = _a, rest = __rest(_a, ["fee", "storageLimit", "gasLimit"]);
|
|
397
|
+
var { fee, storageLimit, gasLimit, to } = _a, rest = __rest(_a, ["fee", "storageLimit", "gasLimit", "to"]);
|
|
397
398
|
const { pkh } = yield this.getKeys();
|
|
398
399
|
const protocolConstants = yield this.context.readProvider.getProtocolConstants('head');
|
|
399
400
|
const DEFAULT_PARAMS = yield this.getOperationLimits(protocolConstants);
|
|
400
|
-
const op = yield (0, contract_1.createTransferOperation)(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { to: pkh, amount: 0 }), mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS)), { parameter: {
|
|
401
|
+
const op = yield (0, contract_1.createTransferOperation)(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { to: to ? to : pkh, amount: 0 }), mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS)), { parameter: {
|
|
401
402
|
entrypoint: 'finalize_unstake',
|
|
402
403
|
value: { prim: 'Unit' },
|
|
403
404
|
} }));
|
|
@@ -518,6 +519,7 @@ class PrepareProvider extends provider_1.Provider {
|
|
|
518
519
|
/**
|
|
519
520
|
*
|
|
520
521
|
* @description Method to prepare an update_consensus_key operation
|
|
522
|
+
* @remarks updateConsensusKey to a tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
521
523
|
* @param operation RPCOperation object or RPCOperation array
|
|
522
524
|
* @param source string or undefined source pkh
|
|
523
525
|
* @returns a PreparedOperation object
|
|
@@ -60,7 +60,7 @@ class PollingSubscribeProvider {
|
|
|
60
60
|
constructor(context, config = {}) {
|
|
61
61
|
this.context = context;
|
|
62
62
|
this._config$ = new rxjs_1.BehaviorSubject(Object.assign(Object.assign({}, exports.defaultConfigStreamer), config));
|
|
63
|
-
this.timer$ = this._config$.pipe((0, operators_1.
|
|
63
|
+
this.timer$ = this._config$.pipe((0, operators_1.map)((x) => x === null || x === void 0 ? void 0 : x.pollingIntervalMilliseconds), (0, operators_1.switchMap)((pollingIntervalMilliseconds) => {
|
|
64
64
|
if (!pollingIntervalMilliseconds) {
|
|
65
65
|
return (0, rxjs_1.from)(this.getConfirmationPollingInterval()).pipe((0, operators_1.switchMap)((interval) => {
|
|
66
66
|
return (0, rxjs_1.timer)(0, interval);
|
|
@@ -70,7 +70,11 @@ class PollingSubscribeProvider {
|
|
|
70
70
|
return (0, rxjs_1.timer)(0, pollingIntervalMilliseconds);
|
|
71
71
|
}
|
|
72
72
|
}));
|
|
73
|
-
this.newBlock$ = this.timer$.pipe((0, operators_1.switchMap)(() => getLastBlock(this.context)), (0, operators_1.distinctUntilKeyChanged)('hash'), (0, operators_1.
|
|
73
|
+
this.newBlock$ = this.timer$.pipe((0, operators_1.switchMap)(() => getLastBlock(this.context)), (0, operators_1.distinctUntilKeyChanged)('hash'), (0, operators_1.share)({
|
|
74
|
+
resetOnError: false,
|
|
75
|
+
resetOnComplete: false,
|
|
76
|
+
resetOnRefCountZero: true,
|
|
77
|
+
}));
|
|
74
78
|
}
|
|
75
79
|
get config() {
|
|
76
80
|
return this._config$.getValue();
|
|
@@ -102,7 +106,7 @@ class PollingSubscribeProvider {
|
|
|
102
106
|
return new observable_subscription_1.ObservableSubscription(this.newBlock$, this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
103
107
|
}
|
|
104
108
|
subscribe(_filter) {
|
|
105
|
-
return new observable_subscription_1.ObservableSubscription(this.newBlock$.pipe((0, operators_1.
|
|
109
|
+
return new observable_subscription_1.ObservableSubscription(this.newBlock$.pipe((0, operators_1.map)((x) => x === null || x === void 0 ? void 0 : x.hash)), this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
106
110
|
}
|
|
107
111
|
subscribeOperation(filter) {
|
|
108
112
|
return new observable_subscription_1.ObservableSubscription(this.newBlock$.pipe(applyFilter(filter)), this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
package/dist/lib/version.js
CHANGED
|
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.VERSION = void 0;
|
|
4
4
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
5
5
|
exports.VERSION = {
|
|
6
|
-
"commitHash": "
|
|
7
|
-
"version": "
|
|
6
|
+
"commitHash": "7af2138a9e5c5b230c4b4c726f35c2f2e67b721c",
|
|
7
|
+
"version": "23.0.0-beta.0"
|
|
8
8
|
};
|
|
@@ -35,7 +35,7 @@ const createNewPollingBasedHeadObservable = (sharedHeadOb, context, _scheduler)
|
|
|
35
35
|
connector: () => new rxjs_1.ReplaySubject(1),
|
|
36
36
|
resetOnError: false,
|
|
37
37
|
resetOnComplete: false,
|
|
38
|
-
resetOnRefCountZero:
|
|
38
|
+
resetOnRefCountZero: true,
|
|
39
39
|
}));
|
|
40
40
|
};
|
|
41
41
|
exports.createNewPollingBasedHeadObservable = createNewPollingBasedHeadObservable;
|
|
@@ -62,7 +62,7 @@ class WalletOperation {
|
|
|
62
62
|
connector: () => new rxjs_1.ReplaySubject(1),
|
|
63
63
|
resetOnError: false,
|
|
64
64
|
resetOnComplete: false,
|
|
65
|
-
resetOnRefCountZero:
|
|
65
|
+
resetOnRefCountZero: true,
|
|
66
66
|
}));
|
|
67
67
|
// Observable that emit once operation is seen in a block
|
|
68
68
|
this.confirmed$ = this.newHead$.pipe((0, operators_1.map)((head) => {
|
|
@@ -83,7 +83,7 @@ class WalletOperation {
|
|
|
83
83
|
connector: () => new rxjs_1.ReplaySubject(1),
|
|
84
84
|
resetOnError: false,
|
|
85
85
|
resetOnComplete: false,
|
|
86
|
-
resetOnRefCountZero:
|
|
86
|
+
resetOnRefCountZero: true,
|
|
87
87
|
}));
|
|
88
88
|
if ((0, utils_1.validateOperation)(this.opHash) !== utils_1.ValidationResult.VALID) {
|
|
89
89
|
throw new core_1.InvalidOperationHashError(this.opHash);
|
package/dist/taquito.es6.js
CHANGED
|
@@ -3,7 +3,7 @@ export { OpKind } from '@taquito/rpc';
|
|
|
3
3
|
import { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';
|
|
4
4
|
import { TezosToolkitConfigError, ParameterValidationError, RpcError, TaquitoError, NetworkError, InvalidOperationHashError, InvalidAddressError, InvalidOperationKindError as InvalidOperationKindError$1, InvalidStakingAddressError, InvalidFinalizeUnstakeAmountError, InvalidContractAddressError, InvalidViewParameterError, DeprecationError, InvalidChainIdError, PublicKeyNotFoundError, InvalidAmountError, InvalidKeyHashError } from '@taquito/core';
|
|
5
5
|
import { Observable, ReplaySubject, BehaviorSubject, throwError, defer, range, of, EMPTY, combineLatest, from, concat, Subject, NEVER, timer } from 'rxjs';
|
|
6
|
-
import { switchMap, timeout, concatMap, endWith, tap, shareReplay, map, filter, first, catchError, share, distinctUntilChanged, takeWhile, startWith, mergeMap, takeUntil, retry,
|
|
6
|
+
import { switchMap, timeout, concatMap, endWith, tap, shareReplay, map, filter, first, catchError, share, distinctUntilChanged, takeWhile, startWith, mergeMap, takeUntil, retry, distinctUntilKeyChanged } from 'rxjs/operators';
|
|
7
7
|
import { Schema, ParameterSchema, ViewSchema, EventSchema, MichelsonMap, Token } from '@taquito/michelson-encoder';
|
|
8
8
|
export { MichelsonMap, Token, UnitValue } from '@taquito/michelson-encoder';
|
|
9
9
|
import { format, validateOperation, ValidationResult, InvalidOperationKindError, validateAddress, invalidDetail, validateContractAddress, validateChain, validateKeyHash, InvalidKeyHashError as InvalidKeyHashError$1, encodeExpr } from '@taquito/utils';
|
|
@@ -194,25 +194,25 @@ const DEFAULT_STORAGE_LIMIT = {
|
|
|
194
194
|
TRANSFER: 257,
|
|
195
195
|
REVEAL: 0,
|
|
196
196
|
};
|
|
197
|
-
// value is based on octez-client reveal operation gasLimit of each address type in
|
|
197
|
+
// value is based on octez-client reveal operation gasLimit of each address type in Seoul Protocol
|
|
198
198
|
const REVEAL_GAS_LIMIT = {
|
|
199
|
-
TZ1:
|
|
200
|
-
TZ2:
|
|
201
|
-
TZ3:
|
|
202
|
-
TZ4:
|
|
199
|
+
TZ1: 171,
|
|
200
|
+
TZ2: 157,
|
|
201
|
+
TZ3: 447,
|
|
202
|
+
TZ4: 3252,
|
|
203
203
|
};
|
|
204
|
-
// value is based on octez-client reveal operation fee of each address type in
|
|
204
|
+
// value is based on octez-client reveal operation fee of each address type in Seoul Protocol
|
|
205
205
|
const REVEAL_FEE = {
|
|
206
|
-
TZ1:
|
|
207
|
-
TZ2:
|
|
208
|
-
TZ3:
|
|
209
|
-
TZ4:
|
|
206
|
+
TZ1: 278,
|
|
207
|
+
TZ2: 277,
|
|
208
|
+
TZ3: 306,
|
|
209
|
+
TZ4: 736,
|
|
210
210
|
};
|
|
211
|
-
// value is based on octez-client reveal operation storageLimit of all address type in
|
|
211
|
+
// value is based on octez-client reveal operation storageLimit of all address type in Seoul Protocol
|
|
212
212
|
const REVEAL_STORAGE_LIMIT = 0;
|
|
213
|
-
// protocol constants in
|
|
213
|
+
// protocol constants in Seoul Protocol
|
|
214
214
|
const ORIGINATION_SIZE = 257;
|
|
215
|
-
// protocol constants in
|
|
215
|
+
// protocol constants in Seoul Protocol
|
|
216
216
|
const COST_PER_BYTE = 250;
|
|
217
217
|
var Protocols;
|
|
218
218
|
(function (Protocols) {
|
|
@@ -238,6 +238,7 @@ var Protocols;
|
|
|
238
238
|
Protocols["PsParisCZ"] = "PsParisCZo7KAh1Z1smVd9ZMZ1HHn5gkzbM94V3PLCpknFWhUAi";
|
|
239
239
|
Protocols["PsQuebecn"] = "PsQuebecnLByd3JwTiGadoG4nGWi3HYiLXUjkibeFV8dCFeVMUg";
|
|
240
240
|
Protocols["PsRiotuma"] = "PsRiotumaAMotcRoDWW1bysEhQy2n1M5fy8JgRp8jjRfHGmfeA7";
|
|
241
|
+
Protocols["PtSeouLou"] = "PtSeouLouXkxhg39oWzjxDWaCydNfR3RxCUrNe4Q9Ro8BTehcbh";
|
|
241
242
|
Protocols["ProtoALpha"] = "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK";
|
|
242
243
|
})(Protocols || (Protocols = {}));
|
|
243
244
|
const protocols = {
|
|
@@ -259,7 +260,8 @@ const protocols = {
|
|
|
259
260
|
'020': [Protocols.PtParisBx, Protocols.PsParisCZ],
|
|
260
261
|
'021': [Protocols.PsQuebecn],
|
|
261
262
|
'022': [Protocols.PsRiotuma],
|
|
262
|
-
'023': [Protocols.
|
|
263
|
+
'023': [Protocols.PtSeouLou],
|
|
264
|
+
'024': [Protocols.ProtoALpha],
|
|
263
265
|
};
|
|
264
266
|
var ChainIds;
|
|
265
267
|
(function (ChainIds) {
|
|
@@ -283,6 +285,7 @@ var ChainIds;
|
|
|
283
285
|
ChainIds["PARISCNET"] = "NetXXWAHLEvre9b";
|
|
284
286
|
ChainIds["QUEBECNET"] = "NetXuTeGinLEqxp";
|
|
285
287
|
ChainIds["RIONET"] = "NetXPdgaoabtBth";
|
|
288
|
+
ChainIds["SEOULNET"] = "NetXd56aBs1aeW3";
|
|
286
289
|
})(ChainIds || (ChainIds = {}));
|
|
287
290
|
// A fixed fee reveal operation gasLimit accepted by both simulate and injection endpoint is between 1.2-5 times of actual gas consumption (3.5 fails occasionally with gas exhausted; 4 fails occasionally with fee too low)
|
|
288
291
|
const getRevealGasLimit = (address) => Math.round((getRevealGasLimitInternal(address) * 37) / 10);
|
|
@@ -1504,9 +1507,6 @@ class Wallet {
|
|
|
1504
1507
|
if (!params.to) {
|
|
1505
1508
|
params.to = source;
|
|
1506
1509
|
}
|
|
1507
|
-
if (params.to !== source) {
|
|
1508
|
-
throw new InvalidStakingAddressError(params.to);
|
|
1509
|
-
}
|
|
1510
1510
|
if (!params.amount) {
|
|
1511
1511
|
params.amount = 0;
|
|
1512
1512
|
}
|
|
@@ -1684,7 +1684,7 @@ class WalletOperation {
|
|
|
1684
1684
|
connector: () => new ReplaySubject(1),
|
|
1685
1685
|
resetOnError: false,
|
|
1686
1686
|
resetOnComplete: false,
|
|
1687
|
-
resetOnRefCountZero:
|
|
1687
|
+
resetOnRefCountZero: true,
|
|
1688
1688
|
}));
|
|
1689
1689
|
// Observable that emit once operation is seen in a block
|
|
1690
1690
|
this.confirmed$ = this.newHead$.pipe(map((head) => {
|
|
@@ -1705,7 +1705,7 @@ class WalletOperation {
|
|
|
1705
1705
|
connector: () => new ReplaySubject(1),
|
|
1706
1706
|
resetOnError: false,
|
|
1707
1707
|
resetOnComplete: false,
|
|
1708
|
-
resetOnRefCountZero:
|
|
1708
|
+
resetOnRefCountZero: true,
|
|
1709
1709
|
}));
|
|
1710
1710
|
if (validateOperation(this.opHash) !== ValidationResult.VALID) {
|
|
1711
1711
|
throw new InvalidOperationHashError(this.opHash);
|
|
@@ -2848,6 +2848,7 @@ class PrepareProvider extends Provider {
|
|
|
2848
2848
|
/**
|
|
2849
2849
|
*
|
|
2850
2850
|
* @description Method to prepare a reveal operation
|
|
2851
|
+
* @remarks Reveal tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
2851
2852
|
* @param operation RPCOperation object or RPCOperation array
|
|
2852
2853
|
* @param source string or undefined source pkh
|
|
2853
2854
|
* @returns a PreparedOperation object
|
|
@@ -3023,11 +3024,11 @@ class PrepareProvider extends Provider {
|
|
|
3023
3024
|
*/
|
|
3024
3025
|
finalizeUnstake(_a) {
|
|
3025
3026
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3026
|
-
var { fee, storageLimit, gasLimit } = _a, rest = __rest(_a, ["fee", "storageLimit", "gasLimit"]);
|
|
3027
|
+
var { fee, storageLimit, gasLimit, to } = _a, rest = __rest(_a, ["fee", "storageLimit", "gasLimit", "to"]);
|
|
3027
3028
|
const { pkh } = yield this.getKeys();
|
|
3028
3029
|
const protocolConstants = yield this.context.readProvider.getProtocolConstants('head');
|
|
3029
3030
|
const DEFAULT_PARAMS = yield this.getOperationLimits(protocolConstants);
|
|
3030
|
-
const op = yield createTransferOperation(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { to: pkh, amount: 0 }), mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS)), { parameter: {
|
|
3031
|
+
const op = yield createTransferOperation(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { to: to ? to : pkh, amount: 0 }), mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS)), { parameter: {
|
|
3031
3032
|
entrypoint: 'finalize_unstake',
|
|
3032
3033
|
value: { prim: 'Unit' },
|
|
3033
3034
|
} }));
|
|
@@ -3148,6 +3149,7 @@ class PrepareProvider extends Provider {
|
|
|
3148
3149
|
/**
|
|
3149
3150
|
*
|
|
3150
3151
|
* @description Method to prepare an update_consensus_key operation
|
|
3152
|
+
* @remarks updateConsensusKey to a tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
3151
3153
|
* @param operation RPCOperation object or RPCOperation array
|
|
3152
3154
|
* @param source string or undefined source pkh
|
|
3153
3155
|
* @returns a PreparedOperation object
|
|
@@ -3936,7 +3938,7 @@ const createNewPollingBasedHeadObservable = (sharedHeadOb, context, _scheduler)
|
|
|
3936
3938
|
connector: () => new ReplaySubject(1),
|
|
3937
3939
|
resetOnError: false,
|
|
3938
3940
|
resetOnComplete: false,
|
|
3939
|
-
resetOnRefCountZero:
|
|
3941
|
+
resetOnRefCountZero: true,
|
|
3940
3942
|
}));
|
|
3941
3943
|
};
|
|
3942
3944
|
class OperationFactory {
|
|
@@ -4436,9 +4438,6 @@ class RPCEstimateProvider extends Provider {
|
|
|
4436
4438
|
if (!rest.to) {
|
|
4437
4439
|
rest.to = rest.source;
|
|
4438
4440
|
}
|
|
4439
|
-
if (rest.to && rest.to !== rest.source) {
|
|
4440
|
-
throw new InvalidStakingAddressError(rest.to);
|
|
4441
|
-
}
|
|
4442
4441
|
if (!rest.amount) {
|
|
4443
4442
|
rest.amount = 0;
|
|
4444
4443
|
}
|
|
@@ -4561,7 +4560,7 @@ class RPCEstimateProvider extends Provider {
|
|
|
4561
4560
|
/**
|
|
4562
4561
|
*
|
|
4563
4562
|
* @description Estimate gasLimit, storageLimit and fees to reveal the current account
|
|
4564
|
-
*
|
|
4563
|
+
* @remarks Reveal tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
4565
4564
|
* @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed
|
|
4566
4565
|
*
|
|
4567
4566
|
* @param Estimate
|
|
@@ -4634,9 +4633,8 @@ class RPCEstimateProvider extends Provider {
|
|
|
4634
4633
|
/**
|
|
4635
4634
|
*
|
|
4636
4635
|
* @description Estimate gasLimit, storageLimit and fees for an Update Consensus Key operation
|
|
4637
|
-
*
|
|
4636
|
+
* @remarks updateConsensusKey to a tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
4638
4637
|
* @returns An estimation of gasLimit, storageLimit and fees for the operation
|
|
4639
|
-
*
|
|
4640
4638
|
* @param Estimate
|
|
4641
4639
|
*/
|
|
4642
4640
|
updateConsensusKey(params) {
|
|
@@ -5593,7 +5591,7 @@ class RpcContractProvider extends Provider {
|
|
|
5593
5591
|
throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));
|
|
5594
5592
|
}
|
|
5595
5593
|
// Since babylon delegation source cannot smart contract
|
|
5596
|
-
if (
|
|
5594
|
+
if (/^kt1/i.test(params.source)) {
|
|
5597
5595
|
throw new InvalidDelegationSource(params.source);
|
|
5598
5596
|
}
|
|
5599
5597
|
const publicKeyHash = yield this.signer.publicKeyHash();
|
|
@@ -5744,9 +5742,6 @@ class RpcContractProvider extends Provider {
|
|
|
5744
5742
|
if (!params.to) {
|
|
5745
5743
|
params.to = params.source;
|
|
5746
5744
|
}
|
|
5747
|
-
if (params.to && params.to !== params.source) {
|
|
5748
|
-
throw new InvalidStakingAddressError(params.to);
|
|
5749
|
-
}
|
|
5750
5745
|
if (!params.amount) {
|
|
5751
5746
|
params.amount = 0;
|
|
5752
5747
|
}
|
|
@@ -5794,8 +5789,8 @@ class RpcContractProvider extends Provider {
|
|
|
5794
5789
|
}
|
|
5795
5790
|
/**
|
|
5796
5791
|
*
|
|
5797
|
-
* @description Reveal the current address. Will throw an error if the address is already revealed.
|
|
5798
|
-
*
|
|
5792
|
+
* @description Reveal the public key of the current address. Will throw an error if the address is already revealed.
|
|
5793
|
+
* @remarks Reveal tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
5799
5794
|
* @returns An operation handle with the result from the rpc node
|
|
5800
5795
|
*
|
|
5801
5796
|
* @param RevealParams operation parameter
|
|
@@ -5926,7 +5921,7 @@ class RpcContractProvider extends Provider {
|
|
|
5926
5921
|
/**
|
|
5927
5922
|
*
|
|
5928
5923
|
* @description Updates the consensus key of the baker to public_key starting from the current cycle plus PRESERVED_CYCLES + 1
|
|
5929
|
-
*
|
|
5924
|
+
* @remarks updateConsensusKey to a tz4 address is not included in the current beta release for protocol Seoul (still a work in progress)
|
|
5930
5925
|
* @returns An operation handle with the result from the rpc node
|
|
5931
5926
|
*
|
|
5932
5927
|
* @param UpdateConsensusKeyParams
|
|
@@ -6673,7 +6668,7 @@ class PollingSubscribeProvider {
|
|
|
6673
6668
|
constructor(context, config = {}) {
|
|
6674
6669
|
this.context = context;
|
|
6675
6670
|
this._config$ = new BehaviorSubject(Object.assign(Object.assign({}, defaultConfigStreamer), config));
|
|
6676
|
-
this.timer$ = this._config$.pipe(
|
|
6671
|
+
this.timer$ = this._config$.pipe(map((x) => x === null || x === void 0 ? void 0 : x.pollingIntervalMilliseconds), switchMap((pollingIntervalMilliseconds) => {
|
|
6677
6672
|
if (!pollingIntervalMilliseconds) {
|
|
6678
6673
|
return from(this.getConfirmationPollingInterval()).pipe(switchMap((interval) => {
|
|
6679
6674
|
return timer(0, interval);
|
|
@@ -6683,7 +6678,11 @@ class PollingSubscribeProvider {
|
|
|
6683
6678
|
return timer(0, pollingIntervalMilliseconds);
|
|
6684
6679
|
}
|
|
6685
6680
|
}));
|
|
6686
|
-
this.newBlock$ = this.timer$.pipe(switchMap(() => getLastBlock(this.context)), distinctUntilKeyChanged('hash'),
|
|
6681
|
+
this.newBlock$ = this.timer$.pipe(switchMap(() => getLastBlock(this.context)), distinctUntilKeyChanged('hash'), share({
|
|
6682
|
+
resetOnError: false,
|
|
6683
|
+
resetOnComplete: false,
|
|
6684
|
+
resetOnRefCountZero: true,
|
|
6685
|
+
}));
|
|
6687
6686
|
}
|
|
6688
6687
|
get config() {
|
|
6689
6688
|
return this._config$.getValue();
|
|
@@ -6715,7 +6714,7 @@ class PollingSubscribeProvider {
|
|
|
6715
6714
|
return new ObservableSubscription(this.newBlock$, this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
6716
6715
|
}
|
|
6717
6716
|
subscribe(_filter) {
|
|
6718
|
-
return new ObservableSubscription(this.newBlock$.pipe(
|
|
6717
|
+
return new ObservableSubscription(this.newBlock$.pipe(map((x) => x === null || x === void 0 ? void 0 : x.hash)), this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
6719
6718
|
}
|
|
6720
6719
|
subscribeOperation(filter) {
|
|
6721
6720
|
return new ObservableSubscription(this.newBlock$.pipe(applyFilter(filter)), this.config.shouldObservableSubscriptionRetry, this.config.observableSubscriptionRetryFunction);
|
|
@@ -6901,8 +6900,8 @@ class Context {
|
|
|
6901
6900
|
|
|
6902
6901
|
// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
|
|
6903
6902
|
const VERSION = {
|
|
6904
|
-
"commitHash": "
|
|
6905
|
-
"version": "
|
|
6903
|
+
"commitHash": "7af2138a9e5c5b230c4b4c726f35c2f2e67b721c",
|
|
6904
|
+
"version": "23.0.0-beta.0"
|
|
6906
6905
|
};
|
|
6907
6906
|
|
|
6908
6907
|
/**
|
package/dist/taquito.es6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taquito.es6.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"taquito.es6.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|