1 | (function (global, factory) {
|
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@polkadot/keyring'), require('@polkadot/util'), require('@polkadot/types'), require('@polkadot/util-crypto')) :
|
3 | typeof define === 'function' && define.amd ? define(['exports', '@polkadot/keyring', '@polkadot/util', '@polkadot/types', '@polkadot/util-crypto'], factory) :
|
4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.polkadotApi = {}, global.polkadotKeyring, global.polkadotUtil, global.polkadotTypes, global.polkadotUtilCrypto));
|
5 | })(this, (function (exports, keyring, util, types, utilCrypto) { 'use strict';
|
6 |
|
7 | const global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : window;
|
8 |
|
9 | var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
10 | function evaluateThis(fn) {
|
11 | return fn('return this');
|
12 | }
|
13 | const xglobal = (typeof globalThis !== 'undefined'
|
14 | ? globalThis
|
15 | : typeof global !== 'undefined'
|
16 | ? global
|
17 | : typeof self !== 'undefined'
|
18 | ? self
|
19 | : typeof window !== 'undefined'
|
20 | ? window
|
21 | : evaluateThis(Function));
|
22 |
|
23 | const fetch = xglobal.fetch;
|
24 |
|
25 | const UNKNOWN = -99999;
|
26 | function extend(that, name, value) {
|
27 | Object.defineProperty(that, name, {
|
28 | configurable: true,
|
29 | enumerable: false,
|
30 | value
|
31 | });
|
32 | }
|
33 | class RpcError extends Error {
|
34 | code;
|
35 | data;
|
36 | message;
|
37 | name;
|
38 | stack;
|
39 | constructor(message = '', code = UNKNOWN, data) {
|
40 | super();
|
41 | extend(this, 'message', String(message));
|
42 | extend(this, 'name', this.constructor.name);
|
43 | extend(this, 'data', data);
|
44 | extend(this, 'code', code);
|
45 | if (util.isFunction(Error.captureStackTrace)) {
|
46 | Error.captureStackTrace(this, this.constructor);
|
47 | }
|
48 | else {
|
49 | const { stack } = new Error(message);
|
50 | stack && extend(this, 'stack', stack);
|
51 | }
|
52 | }
|
53 | static CODES = {
|
54 | ASSERT: -90009,
|
55 | INVALID_JSONRPC: -99998,
|
56 | METHOD_NOT_FOUND: -32601,
|
57 | UNKNOWN
|
58 | };
|
59 | }
|
60 |
|
61 | function formatErrorData(data) {
|
62 | if (util.isUndefined(data)) {
|
63 | return '';
|
64 | }
|
65 | const formatted = `: ${util.isString(data)
|
66 | ? data.replace(/Error\("/g, '').replace(/\("/g, '(').replace(/"\)/g, ')').replace(/\(/g, ', ').replace(/\)/g, '')
|
67 | : util.stringify(data)}`;
|
68 | return formatted.length <= 256
|
69 | ? formatted
|
70 | : `${formatted.substring(0, 255)}…`;
|
71 | }
|
72 | function checkError(error) {
|
73 | if (error) {
|
74 | const { code, data, message } = error;
|
75 | throw new RpcError(`${code}: ${message}${formatErrorData(data)}`, code, data);
|
76 | }
|
77 | }
|
78 | class RpcCoder {
|
79 | __internal__id = 0;
|
80 | decodeResponse(response) {
|
81 | if (!response || response.jsonrpc !== '2.0') {
|
82 | throw new Error('Invalid jsonrpc field in decoded object');
|
83 | }
|
84 | const isSubscription = !util.isUndefined(response.params) && !util.isUndefined(response.method);
|
85 | if (!util.isNumber(response.id) &&
|
86 | (!isSubscription || (!util.isNumber(response.params.subscription) &&
|
87 | !util.isString(response.params.subscription)))) {
|
88 | throw new Error('Invalid id field in decoded object');
|
89 | }
|
90 | checkError(response.error);
|
91 | if (response.result === undefined && !isSubscription) {
|
92 | throw new Error('No result found in jsonrpc response');
|
93 | }
|
94 | if (isSubscription) {
|
95 | checkError(response.params.error);
|
96 | return response.params.result;
|
97 | }
|
98 | return response.result;
|
99 | }
|
100 | encodeJson(method, params) {
|
101 | const [id, data] = this.encodeObject(method, params);
|
102 | return [id, util.stringify(data)];
|
103 | }
|
104 | encodeObject(method, params) {
|
105 | const id = ++this.__internal__id;
|
106 | return [id, {
|
107 | id,
|
108 | jsonrpc: '2.0',
|
109 | method,
|
110 | params
|
111 | }];
|
112 | }
|
113 | }
|
114 |
|
115 | const HTTP_URL = 'http://127.0.0.1:9933';
|
116 | const WS_URL = 'ws://127.0.0.1:9944';
|
117 | const defaults = {
|
118 | HTTP_URL,
|
119 | WS_URL
|
120 | };
|
121 |
|
122 | const DEFAULT_CAPACITY = 128;
|
123 | class LRUNode {
|
124 | key;
|
125 | next;
|
126 | prev;
|
127 | constructor(key) {
|
128 | this.key = key;
|
129 | this.next = this.prev = this;
|
130 | }
|
131 | }
|
132 | class LRUCache {
|
133 | capacity;
|
134 | __internal__data = new Map();
|
135 | __internal__refs = new Map();
|
136 | __internal__length = 0;
|
137 | __internal__head;
|
138 | __internal__tail;
|
139 | constructor(capacity = DEFAULT_CAPACITY) {
|
140 | this.capacity = capacity;
|
141 | this.__internal__head = this.__internal__tail = new LRUNode('<empty>');
|
142 | }
|
143 | get length() {
|
144 | return this.__internal__length;
|
145 | }
|
146 | get lengthData() {
|
147 | return this.__internal__data.size;
|
148 | }
|
149 | get lengthRefs() {
|
150 | return this.__internal__refs.size;
|
151 | }
|
152 | entries() {
|
153 | const keys = this.keys();
|
154 | const count = keys.length;
|
155 | const entries = new Array(count);
|
156 | for (let i = 0; i < count; i++) {
|
157 | const key = keys[i];
|
158 | entries[i] = [key, this.__internal__data.get(key)];
|
159 | }
|
160 | return entries;
|
161 | }
|
162 | keys() {
|
163 | const keys = [];
|
164 | if (this.__internal__length) {
|
165 | let curr = this.__internal__head;
|
166 | while (curr !== this.__internal__tail) {
|
167 | keys.push(curr.key);
|
168 | curr = curr.next;
|
169 | }
|
170 | keys.push(curr.key);
|
171 | }
|
172 | return keys;
|
173 | }
|
174 | get(key) {
|
175 | const data = this.__internal__data.get(key);
|
176 | if (data) {
|
177 | this.__internal__toHead(key);
|
178 | return data;
|
179 | }
|
180 | return null;
|
181 | }
|
182 | set(key, value) {
|
183 | if (this.__internal__data.has(key)) {
|
184 | this.__internal__toHead(key);
|
185 | }
|
186 | else {
|
187 | const node = new LRUNode(key);
|
188 | this.__internal__refs.set(node.key, node);
|
189 | if (this.length === 0) {
|
190 | this.__internal__head = this.__internal__tail = node;
|
191 | }
|
192 | else {
|
193 | this.__internal__head.prev = node;
|
194 | node.next = this.__internal__head;
|
195 | this.__internal__head = node;
|
196 | }
|
197 | if (this.__internal__length === this.capacity) {
|
198 | this.__internal__data.delete(this.__internal__tail.key);
|
199 | this.__internal__refs.delete(this.__internal__tail.key);
|
200 | this.__internal__tail = this.__internal__tail.prev;
|
201 | this.__internal__tail.next = this.__internal__head;
|
202 | }
|
203 | else {
|
204 | this.__internal__length += 1;
|
205 | }
|
206 | }
|
207 | this.__internal__data.set(key, value);
|
208 | }
|
209 | __internal__toHead(key) {
|
210 | const ref = this.__internal__refs.get(key);
|
211 | if (ref && ref !== this.__internal__head) {
|
212 | ref.prev.next = ref.next;
|
213 | ref.next.prev = ref.prev;
|
214 | ref.next = this.__internal__head;
|
215 | this.__internal__head.prev = ref;
|
216 | this.__internal__head = ref;
|
217 | }
|
218 | }
|
219 | }
|
220 |
|
221 | const ERROR_SUBSCRIBE = 'HTTP Provider does not have subscriptions, use WebSockets instead';
|
222 | const l$7 = util.logger('api-http');
|
223 | class HttpProvider {
|
224 | __internal__callCache = new LRUCache();
|
225 | __internal__coder;
|
226 | __internal__endpoint;
|
227 | __internal__headers;
|
228 | __internal__stats;
|
229 | constructor(endpoint = defaults.HTTP_URL, headers = {}) {
|
230 | if (!/^(https|http):\/\//.test(endpoint)) {
|
231 | throw new Error(`Endpoint should start with 'http://' or 'https://', received '${endpoint}'`);
|
232 | }
|
233 | this.__internal__coder = new RpcCoder();
|
234 | this.__internal__endpoint = endpoint;
|
235 | this.__internal__headers = headers;
|
236 | this.__internal__stats = {
|
237 | active: { requests: 0, subscriptions: 0 },
|
238 | total: { bytesRecv: 0, bytesSent: 0, cached: 0, errors: 0, requests: 0, subscriptions: 0, timeout: 0 }
|
239 | };
|
240 | }
|
241 | get hasSubscriptions() {
|
242 | return !!false;
|
243 | }
|
244 | clone() {
|
245 | return new HttpProvider(this.__internal__endpoint, this.__internal__headers);
|
246 | }
|
247 | async connect() {
|
248 | }
|
249 | async disconnect() {
|
250 | }
|
251 | get stats() {
|
252 | return this.__internal__stats;
|
253 | }
|
254 | get isClonable() {
|
255 | return !!true;
|
256 | }
|
257 | get isConnected() {
|
258 | return !!true;
|
259 | }
|
260 | on(_type, _sub) {
|
261 | l$7.error('HTTP Provider does not have \'on\' emitters, use WebSockets instead');
|
262 | return util.noop;
|
263 | }
|
264 | async send(method, params, isCacheable) {
|
265 | this.__internal__stats.total.requests++;
|
266 | const [, body] = this.__internal__coder.encodeJson(method, params);
|
267 | const cacheKey = isCacheable ? `${method}::${util.stringify(params)}` : '';
|
268 | let resultPromise = isCacheable
|
269 | ? this.__internal__callCache.get(cacheKey)
|
270 | : null;
|
271 | if (!resultPromise) {
|
272 | resultPromise = this.__internal__send(body);
|
273 | if (isCacheable) {
|
274 | this.__internal__callCache.set(cacheKey, resultPromise);
|
275 | }
|
276 | }
|
277 | else {
|
278 | this.__internal__stats.total.cached++;
|
279 | }
|
280 | return resultPromise;
|
281 | }
|
282 | async __internal__send(body) {
|
283 | this.__internal__stats.active.requests++;
|
284 | this.__internal__stats.total.bytesSent += body.length;
|
285 | try {
|
286 | const response = await fetch(this.__internal__endpoint, {
|
287 | body,
|
288 | headers: {
|
289 | Accept: 'application/json',
|
290 | 'Content-Length': `${body.length}`,
|
291 | 'Content-Type': 'application/json',
|
292 | ...this.__internal__headers
|
293 | },
|
294 | method: 'POST'
|
295 | });
|
296 | if (!response.ok) {
|
297 | throw new Error(`[${response.status}]: ${response.statusText}`);
|
298 | }
|
299 | const result = await response.text();
|
300 | this.__internal__stats.total.bytesRecv += result.length;
|
301 | const decoded = this.__internal__coder.decodeResponse(JSON.parse(result));
|
302 | this.__internal__stats.active.requests--;
|
303 | return decoded;
|
304 | }
|
305 | catch (e) {
|
306 | this.__internal__stats.active.requests--;
|
307 | this.__internal__stats.total.errors++;
|
308 | throw e;
|
309 | }
|
310 | }
|
311 | async subscribe(_types, _method, _params, _cb) {
|
312 | l$7.error(ERROR_SUBSCRIBE);
|
313 | throw new Error(ERROR_SUBSCRIBE);
|
314 | }
|
315 | async unsubscribe(_type, _method, _id) {
|
316 | l$7.error(ERROR_SUBSCRIBE);
|
317 | throw new Error(ERROR_SUBSCRIBE);
|
318 | }
|
319 | }
|
320 |
|
321 | function getDefaultExportFromCjs (x) {
|
322 | return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
323 | }
|
324 |
|
325 | var eventemitter3 = {exports: {}};
|
326 |
|
327 | (function (module) {
|
328 | var has = Object.prototype.hasOwnProperty
|
329 | , prefix = '~';
|
330 | function Events() {}
|
331 | if (Object.create) {
|
332 | Events.prototype = Object.create(null);
|
333 | if (!new Events().__proto__) prefix = false;
|
334 | }
|
335 | function EE(fn, context, once) {
|
336 | this.fn = fn;
|
337 | this.context = context;
|
338 | this.once = once || false;
|
339 | }
|
340 | function addListener(emitter, event, fn, context, once) {
|
341 | if (typeof fn !== 'function') {
|
342 | throw new TypeError('The listener must be a function');
|
343 | }
|
344 | var listener = new EE(fn, context || emitter, once)
|
345 | , evt = prefix ? prefix + event : event;
|
346 | if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
|
347 | else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
|
348 | else emitter._events[evt] = [emitter._events[evt], listener];
|
349 | return emitter;
|
350 | }
|
351 | function clearEvent(emitter, evt) {
|
352 | if (--emitter._eventsCount === 0) emitter._events = new Events();
|
353 | else delete emitter._events[evt];
|
354 | }
|
355 | function EventEmitter() {
|
356 | this._events = new Events();
|
357 | this._eventsCount = 0;
|
358 | }
|
359 | EventEmitter.prototype.eventNames = function eventNames() {
|
360 | var names = []
|
361 | , events
|
362 | , name;
|
363 | if (this._eventsCount === 0) return names;
|
364 | for (name in (events = this._events)) {
|
365 | if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
|
366 | }
|
367 | if (Object.getOwnPropertySymbols) {
|
368 | return names.concat(Object.getOwnPropertySymbols(events));
|
369 | }
|
370 | return names;
|
371 | };
|
372 | EventEmitter.prototype.listeners = function listeners(event) {
|
373 | var evt = prefix ? prefix + event : event
|
374 | , handlers = this._events[evt];
|
375 | if (!handlers) return [];
|
376 | if (handlers.fn) return [handlers.fn];
|
377 | for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
|
378 | ee[i] = handlers[i].fn;
|
379 | }
|
380 | return ee;
|
381 | };
|
382 | EventEmitter.prototype.listenerCount = function listenerCount(event) {
|
383 | var evt = prefix ? prefix + event : event
|
384 | , listeners = this._events[evt];
|
385 | if (!listeners) return 0;
|
386 | if (listeners.fn) return 1;
|
387 | return listeners.length;
|
388 | };
|
389 | EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
|
390 | var evt = prefix ? prefix + event : event;
|
391 | if (!this._events[evt]) return false;
|
392 | var listeners = this._events[evt]
|
393 | , len = arguments.length
|
394 | , args
|
395 | , i;
|
396 | if (listeners.fn) {
|
397 | if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
|
398 | switch (len) {
|
399 | case 1: return listeners.fn.call(listeners.context), true;
|
400 | case 2: return listeners.fn.call(listeners.context, a1), true;
|
401 | case 3: return listeners.fn.call(listeners.context, a1, a2), true;
|
402 | case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
|
403 | case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
|
404 | case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
|
405 | }
|
406 | for (i = 1, args = new Array(len -1); i < len; i++) {
|
407 | args[i - 1] = arguments[i];
|
408 | }
|
409 | listeners.fn.apply(listeners.context, args);
|
410 | } else {
|
411 | var length = listeners.length
|
412 | , j;
|
413 | for (i = 0; i < length; i++) {
|
414 | if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
|
415 | switch (len) {
|
416 | case 1: listeners[i].fn.call(listeners[i].context); break;
|
417 | case 2: listeners[i].fn.call(listeners[i].context, a1); break;
|
418 | case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
|
419 | case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
|
420 | default:
|
421 | if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
|
422 | args[j - 1] = arguments[j];
|
423 | }
|
424 | listeners[i].fn.apply(listeners[i].context, args);
|
425 | }
|
426 | }
|
427 | }
|
428 | return true;
|
429 | };
|
430 | EventEmitter.prototype.on = function on(event, fn, context) {
|
431 | return addListener(this, event, fn, context, false);
|
432 | };
|
433 | EventEmitter.prototype.once = function once(event, fn, context) {
|
434 | return addListener(this, event, fn, context, true);
|
435 | };
|
436 | EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
|
437 | var evt = prefix ? prefix + event : event;
|
438 | if (!this._events[evt]) return this;
|
439 | if (!fn) {
|
440 | clearEvent(this, evt);
|
441 | return this;
|
442 | }
|
443 | var listeners = this._events[evt];
|
444 | if (listeners.fn) {
|
445 | if (
|
446 | listeners.fn === fn &&
|
447 | (!once || listeners.once) &&
|
448 | (!context || listeners.context === context)
|
449 | ) {
|
450 | clearEvent(this, evt);
|
451 | }
|
452 | } else {
|
453 | for (var i = 0, events = [], length = listeners.length; i < length; i++) {
|
454 | if (
|
455 | listeners[i].fn !== fn ||
|
456 | (once && !listeners[i].once) ||
|
457 | (context && listeners[i].context !== context)
|
458 | ) {
|
459 | events.push(listeners[i]);
|
460 | }
|
461 | }
|
462 | if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
|
463 | else clearEvent(this, evt);
|
464 | }
|
465 | return this;
|
466 | };
|
467 | EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
|
468 | var evt;
|
469 | if (event) {
|
470 | evt = prefix ? prefix + event : event;
|
471 | if (this._events[evt]) clearEvent(this, evt);
|
472 | } else {
|
473 | this._events = new Events();
|
474 | this._eventsCount = 0;
|
475 | }
|
476 | return this;
|
477 | };
|
478 | EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
|
479 | EventEmitter.prototype.addListener = EventEmitter.prototype.on;
|
480 | EventEmitter.prefixed = prefix;
|
481 | EventEmitter.EventEmitter = EventEmitter;
|
482 | {
|
483 | module.exports = EventEmitter;
|
484 | }
|
485 | } (eventemitter3));
|
486 | var eventemitter3Exports = eventemitter3.exports;
|
487 | const EventEmitter = getDefaultExportFromCjs(eventemitter3Exports);
|
488 |
|
489 | function healthChecker() {
|
490 | let checker = null;
|
491 | let sendJsonRpc = null;
|
492 | return {
|
493 | responsePassThrough: (jsonRpcResponse) => {
|
494 | if (checker === null) {
|
495 | return jsonRpcResponse;
|
496 | }
|
497 | return checker.responsePassThrough(jsonRpcResponse);
|
498 | },
|
499 | sendJsonRpc: (request) => {
|
500 | if (!sendJsonRpc) {
|
501 | throw new Error('setSendJsonRpc must be called before sending requests');
|
502 | }
|
503 | if (checker === null) {
|
504 | sendJsonRpc(request);
|
505 | }
|
506 | else {
|
507 | checker.sendJsonRpc(request);
|
508 | }
|
509 | },
|
510 | setSendJsonRpc: (cb) => {
|
511 | sendJsonRpc = cb;
|
512 | },
|
513 | start: (healthCallback) => {
|
514 | if (checker !== null) {
|
515 | throw new Error("Can't start the health checker multiple times in parallel");
|
516 | }
|
517 | else if (!sendJsonRpc) {
|
518 | throw new Error('setSendJsonRpc must be called before starting the health checks');
|
519 | }
|
520 | checker = new InnerChecker(healthCallback, sendJsonRpc);
|
521 | checker.update(true);
|
522 | },
|
523 | stop: () => {
|
524 | if (checker === null) {
|
525 | return;
|
526 | }
|
527 | checker.destroy();
|
528 | checker = null;
|
529 | }
|
530 | };
|
531 | }
|
532 | class InnerChecker {
|
533 | __internal__healthCallback;
|
534 | __internal__currentHealthCheckId = null;
|
535 | __internal__currentHealthTimeout = null;
|
536 | __internal__currentSubunsubRequestId = null;
|
537 | __internal__currentSubscriptionId = null;
|
538 | __internal__requestToSmoldot;
|
539 | __internal__isSyncing = false;
|
540 | __internal__nextRequestId = 0;
|
541 | constructor(healthCallback, requestToSmoldot) {
|
542 | this.__internal__healthCallback = healthCallback;
|
543 | this.__internal__requestToSmoldot = (request) => requestToSmoldot(util.stringify(request));
|
544 | }
|
545 | sendJsonRpc = (request) => {
|
546 | let parsedRequest;
|
547 | try {
|
548 | parsedRequest = JSON.parse(request);
|
549 | }
|
550 | catch {
|
551 | return;
|
552 | }
|
553 | if (parsedRequest.id) {
|
554 | const newId = 'extern:' + util.stringify(parsedRequest.id);
|
555 | parsedRequest.id = newId;
|
556 | }
|
557 | this.__internal__requestToSmoldot(parsedRequest);
|
558 | };
|
559 | responsePassThrough = (jsonRpcResponse) => {
|
560 | let parsedResponse;
|
561 | try {
|
562 | parsedResponse = JSON.parse(jsonRpcResponse);
|
563 | }
|
564 | catch {
|
565 | return jsonRpcResponse;
|
566 | }
|
567 | if (parsedResponse.id && this.__internal__currentHealthCheckId === parsedResponse.id) {
|
568 | this.__internal__currentHealthCheckId = null;
|
569 | if (!parsedResponse.result) {
|
570 | this.update(false);
|
571 | return null;
|
572 | }
|
573 | this.__internal__healthCallback(parsedResponse.result);
|
574 | this.__internal__isSyncing = parsedResponse.result.isSyncing;
|
575 | this.update(false);
|
576 | return null;
|
577 | }
|
578 | if (parsedResponse.id &&
|
579 | this.__internal__currentSubunsubRequestId === parsedResponse.id) {
|
580 | this.__internal__currentSubunsubRequestId = null;
|
581 | if (!parsedResponse.result) {
|
582 | this.update(false);
|
583 | return null;
|
584 | }
|
585 | if (this.__internal__currentSubscriptionId) {
|
586 | this.__internal__currentSubscriptionId = null;
|
587 | }
|
588 | else {
|
589 | this.__internal__currentSubscriptionId = parsedResponse.result;
|
590 | }
|
591 | this.update(false);
|
592 | return null;
|
593 | }
|
594 | if (parsedResponse.params &&
|
595 | this.__internal__currentSubscriptionId &&
|
596 | parsedResponse.params.subscription === this.__internal__currentSubscriptionId) {
|
597 | this.update(true);
|
598 | return null;
|
599 | }
|
600 | if (parsedResponse.id) {
|
601 | const id = parsedResponse.id;
|
602 | if (!id.startsWith('extern:')) {
|
603 | throw new Error('State inconsistency in health checker');
|
604 | }
|
605 | const newId = JSON.parse(id.slice('extern:'.length));
|
606 | parsedResponse.id = newId;
|
607 | }
|
608 | return util.stringify(parsedResponse);
|
609 | };
|
610 | update = (startNow) => {
|
611 | if (startNow && this.__internal__currentHealthTimeout) {
|
612 | clearTimeout(this.__internal__currentHealthTimeout);
|
613 | this.__internal__currentHealthTimeout = null;
|
614 | }
|
615 | if (!this.__internal__currentHealthTimeout) {
|
616 | const startHealthRequest = () => {
|
617 | this.__internal__currentHealthTimeout = null;
|
618 | if (this.__internal__currentHealthCheckId) {
|
619 | return;
|
620 | }
|
621 | this.__internal__currentHealthCheckId = `health-checker:${this.__internal__nextRequestId}`;
|
622 | this.__internal__nextRequestId += 1;
|
623 | this.__internal__requestToSmoldot({
|
624 | id: this.__internal__currentHealthCheckId,
|
625 | jsonrpc: '2.0',
|
626 | method: 'system_health',
|
627 | params: []
|
628 | });
|
629 | };
|
630 | if (startNow) {
|
631 | startHealthRequest();
|
632 | }
|
633 | else {
|
634 | this.__internal__currentHealthTimeout = setTimeout(startHealthRequest, 1000);
|
635 | }
|
636 | }
|
637 | if (this.__internal__isSyncing &&
|
638 | !this.__internal__currentSubscriptionId &&
|
639 | !this.__internal__currentSubunsubRequestId) {
|
640 | this.startSubscription();
|
641 | }
|
642 | if (!this.__internal__isSyncing &&
|
643 | this.__internal__currentSubscriptionId &&
|
644 | !this.__internal__currentSubunsubRequestId) {
|
645 | this.endSubscription();
|
646 | }
|
647 | };
|
648 | startSubscription = () => {
|
649 | if (this.__internal__currentSubunsubRequestId || this.__internal__currentSubscriptionId) {
|
650 | throw new Error('Internal error in health checker');
|
651 | }
|
652 | this.__internal__currentSubunsubRequestId = `health-checker:${this.__internal__nextRequestId}`;
|
653 | this.__internal__nextRequestId += 1;
|
654 | this.__internal__requestToSmoldot({
|
655 | id: this.__internal__currentSubunsubRequestId,
|
656 | jsonrpc: '2.0',
|
657 | method: 'chain_subscribeNewHeads',
|
658 | params: []
|
659 | });
|
660 | };
|
661 | endSubscription = () => {
|
662 | if (this.__internal__currentSubunsubRequestId || !this.__internal__currentSubscriptionId) {
|
663 | throw new Error('Internal error in health checker');
|
664 | }
|
665 | this.__internal__currentSubunsubRequestId = `health-checker:${this.__internal__nextRequestId}`;
|
666 | this.__internal__nextRequestId += 1;
|
667 | this.__internal__requestToSmoldot({
|
668 | id: this.__internal__currentSubunsubRequestId,
|
669 | jsonrpc: '2.0',
|
670 | method: 'chain_unsubscribeNewHeads',
|
671 | params: [this.__internal__currentSubscriptionId]
|
672 | });
|
673 | };
|
674 | destroy = () => {
|
675 | if (this.__internal__currentHealthTimeout) {
|
676 | clearTimeout(this.__internal__currentHealthTimeout);
|
677 | this.__internal__currentHealthTimeout = null;
|
678 | }
|
679 | };
|
680 | }
|
681 |
|
682 | const l$6 = util.logger('api-substrate-connect');
|
683 | const subscriptionUnsubscriptionMethods = new Map([
|
684 | ['author_submitAndWatchExtrinsic', 'author_unwatchExtrinsic'],
|
685 | ['chain_subscribeAllHeads', 'chain_unsubscribeAllHeads'],
|
686 | ['chain_subscribeFinalizedHeads', 'chain_unsubscribeFinalizedHeads'],
|
687 | ['chain_subscribeFinalisedHeads', 'chain_subscribeFinalisedHeads'],
|
688 | ['chain_subscribeNewHeads', 'chain_unsubscribeNewHeads'],
|
689 | ['chain_subscribeNewHead', 'chain_unsubscribeNewHead'],
|
690 | ['chain_subscribeRuntimeVersion', 'chain_unsubscribeRuntimeVersion'],
|
691 | ['subscribe_newHead', 'unsubscribe_newHead'],
|
692 | ['state_subscribeRuntimeVersion', 'state_unsubscribeRuntimeVersion'],
|
693 | ['state_subscribeStorage', 'state_unsubscribeStorage']
|
694 | ]);
|
695 | const scClients = new WeakMap();
|
696 | class ScProvider {
|
697 | __internal__Sc;
|
698 | __internal__coder = new RpcCoder();
|
699 | __internal__spec;
|
700 | __internal__sharedSandbox;
|
701 | __internal__subscriptions = new Map();
|
702 | __internal__resubscribeMethods = new Map();
|
703 | __internal__requests = new Map();
|
704 | __internal__wellKnownChains;
|
705 | __internal__eventemitter = new EventEmitter();
|
706 | __internal__chain = null;
|
707 | __internal__isChainReady = false;
|
708 | constructor(Sc, spec, sharedSandbox) {
|
709 | if (!util.isObject(Sc) || !util.isObject(Sc.WellKnownChain) || !util.isFunction(Sc.createScClient)) {
|
710 | throw new Error('Expected an @substrate/connect interface as first parameter to ScProvider');
|
711 | }
|
712 | this.__internal__Sc = Sc;
|
713 | this.__internal__spec = spec;
|
714 | this.__internal__sharedSandbox = sharedSandbox;
|
715 | this.__internal__wellKnownChains = new Set(Object.values(Sc.WellKnownChain));
|
716 | }
|
717 | get hasSubscriptions() {
|
718 | return !!true;
|
719 | }
|
720 | get isClonable() {
|
721 | return !!false;
|
722 | }
|
723 | get isConnected() {
|
724 | return !!this.__internal__chain && this.__internal__isChainReady;
|
725 | }
|
726 | clone() {
|
727 | throw new Error('clone() is not supported.');
|
728 | }
|
729 | async connect(config, checkerFactory = healthChecker) {
|
730 | if (this.isConnected) {
|
731 | throw new Error('Already connected!');
|
732 | }
|
733 | if (this.__internal__chain) {
|
734 | await this.__internal__chain;
|
735 | return;
|
736 | }
|
737 | if (this.__internal__sharedSandbox && !this.__internal__sharedSandbox.isConnected) {
|
738 | await this.__internal__sharedSandbox.connect();
|
739 | }
|
740 | const client = this.__internal__sharedSandbox
|
741 | ? scClients.get(this.__internal__sharedSandbox)
|
742 | : this.__internal__Sc.createScClient(config);
|
743 | if (!client) {
|
744 | throw new Error('Unknown ScProvider!');
|
745 | }
|
746 | scClients.set(this, client);
|
747 | const hc = checkerFactory();
|
748 | const onResponse = (res) => {
|
749 | const hcRes = hc.responsePassThrough(res);
|
750 | if (!hcRes) {
|
751 | return;
|
752 | }
|
753 | const response = JSON.parse(hcRes);
|
754 | let decodedResponse;
|
755 | try {
|
756 | decodedResponse = this.__internal__coder.decodeResponse(response);
|
757 | }
|
758 | catch (e) {
|
759 | decodedResponse = e;
|
760 | }
|
761 | if (response.params?.subscription === undefined || !response.method) {
|
762 | return this.__internal__requests.get(response.id)?.(decodedResponse);
|
763 | }
|
764 | const subscriptionId = `${response.method}::${response.params.subscription}`;
|
765 | const callback = this.__internal__subscriptions.get(subscriptionId)?.[0];
|
766 | callback?.(decodedResponse);
|
767 | };
|
768 | const addChain = this.__internal__sharedSandbox
|
769 | ? (async (...args) => {
|
770 | const source = this.__internal__sharedSandbox;
|
771 | return (await source.__internal__chain).addChain(...args);
|
772 | })
|
773 | : this.__internal__wellKnownChains.has(this.__internal__spec)
|
774 | ? client.addWellKnownChain
|
775 | : client.addChain;
|
776 | this.__internal__chain = addChain(this.__internal__spec, onResponse).then((chain) => {
|
777 | hc.setSendJsonRpc(chain.sendJsonRpc);
|
778 | this.__internal__isChainReady = false;
|
779 | const cleanup = () => {
|
780 | const disconnectionError = new Error('Disconnected');
|
781 | this.__internal__requests.forEach((cb) => cb(disconnectionError));
|
782 | this.__internal__subscriptions.forEach(([cb]) => cb(disconnectionError));
|
783 | this.__internal__subscriptions.clear();
|
784 | };
|
785 | const staleSubscriptions = [];
|
786 | const killStaleSubscriptions = () => {
|
787 | if (staleSubscriptions.length === 0) {
|
788 | return;
|
789 | }
|
790 | const stale = staleSubscriptions.pop();
|
791 | if (!stale) {
|
792 | throw new Error('Unable to get stale subscription');
|
793 | }
|
794 | const { id, unsubscribeMethod } = stale;
|
795 | Promise
|
796 | .race([
|
797 | this.send(unsubscribeMethod, [id]).catch(util.noop),
|
798 | new Promise((resolve) => setTimeout(resolve, 500))
|
799 | ])
|
800 | .then(killStaleSubscriptions)
|
801 | .catch(util.noop);
|
802 | };
|
803 | hc.start((health) => {
|
804 | const isReady = !health.isSyncing && (health.peers > 0 || !health.shouldHavePeers);
|
805 | if (this.__internal__isChainReady === isReady) {
|
806 | return;
|
807 | }
|
808 | this.__internal__isChainReady = isReady;
|
809 | if (!isReady) {
|
810 | [...this.__internal__subscriptions.values()].forEach((s) => {
|
811 | staleSubscriptions.push(s[1]);
|
812 | });
|
813 | cleanup();
|
814 | this.__internal__eventemitter.emit('disconnected');
|
815 | }
|
816 | else {
|
817 | killStaleSubscriptions();
|
818 | this.__internal__eventemitter.emit('connected');
|
819 | if (this.__internal__resubscribeMethods.size) {
|
820 | this.__internal__resubscribe();
|
821 | }
|
822 | }
|
823 | });
|
824 | return util.objectSpread({}, chain, {
|
825 | remove: () => {
|
826 | hc.stop();
|
827 | chain.remove();
|
828 | cleanup();
|
829 | },
|
830 | sendJsonRpc: hc.sendJsonRpc.bind(hc)
|
831 | });
|
832 | });
|
833 | try {
|
834 | await this.__internal__chain;
|
835 | }
|
836 | catch (e) {
|
837 | this.__internal__chain = null;
|
838 | this.__internal__eventemitter.emit('error', e);
|
839 | throw e;
|
840 | }
|
841 | }
|
842 | __internal__resubscribe = () => {
|
843 | const promises = [];
|
844 | this.__internal__resubscribeMethods.forEach((subDetails) => {
|
845 | if (subDetails.type.startsWith('author_')) {
|
846 | return;
|
847 | }
|
848 | try {
|
849 | const promise = new Promise((resolve) => {
|
850 | this.subscribe(subDetails.type, subDetails.method, subDetails.params, subDetails.callback).catch((error) => console.log(error));
|
851 | resolve();
|
852 | });
|
853 | promises.push(promise);
|
854 | }
|
855 | catch (error) {
|
856 | l$6.error(error);
|
857 | }
|
858 | });
|
859 | Promise.all(promises).catch((err) => l$6.log(err));
|
860 | };
|
861 | async disconnect() {
|
862 | if (!this.__internal__chain) {
|
863 | return;
|
864 | }
|
865 | const chain = await this.__internal__chain;
|
866 | this.__internal__chain = null;
|
867 | this.__internal__isChainReady = false;
|
868 | try {
|
869 | chain.remove();
|
870 | }
|
871 | catch (_) { }
|
872 | this.__internal__eventemitter.emit('disconnected');
|
873 | }
|
874 | on(type, sub) {
|
875 | if (type === 'connected' && this.isConnected) {
|
876 | sub();
|
877 | }
|
878 | this.__internal__eventemitter.on(type, sub);
|
879 | return () => {
|
880 | this.__internal__eventemitter.removeListener(type, sub);
|
881 | };
|
882 | }
|
883 | async send(method, params) {
|
884 | if (!this.isConnected || !this.__internal__chain) {
|
885 | throw new Error('Provider is not connected');
|
886 | }
|
887 | const chain = await this.__internal__chain;
|
888 | const [id, json] = this.__internal__coder.encodeJson(method, params);
|
889 | const result = new Promise((resolve, reject) => {
|
890 | this.__internal__requests.set(id, (response) => {
|
891 | (util.isError(response) ? reject : resolve)(response);
|
892 | });
|
893 | try {
|
894 | chain.sendJsonRpc(json);
|
895 | }
|
896 | catch (e) {
|
897 | this.__internal__chain = null;
|
898 | try {
|
899 | chain.remove();
|
900 | }
|
901 | catch (_) { }
|
902 | this.__internal__eventemitter.emit('error', e);
|
903 | }
|
904 | });
|
905 | try {
|
906 | return await result;
|
907 | }
|
908 | finally {
|
909 | this.__internal__requests.delete(id);
|
910 | }
|
911 | }
|
912 | async subscribe(type, method, params, callback) {
|
913 | if (!subscriptionUnsubscriptionMethods.has(method)) {
|
914 | throw new Error(`Unsupported subscribe method: ${method}`);
|
915 | }
|
916 | const id = await this.send(method, params);
|
917 | const subscriptionId = `${type}::${id}`;
|
918 | const cb = (response) => {
|
919 | if (response instanceof Error) {
|
920 | callback(response, undefined);
|
921 | }
|
922 | else {
|
923 | callback(null, response);
|
924 | }
|
925 | };
|
926 | const unsubscribeMethod = subscriptionUnsubscriptionMethods.get(method);
|
927 | if (!unsubscribeMethod) {
|
928 | throw new Error('Invalid unsubscribe method found');
|
929 | }
|
930 | this.__internal__resubscribeMethods.set(subscriptionId, { callback, method, params, type });
|
931 | this.__internal__subscriptions.set(subscriptionId, [cb, { id, unsubscribeMethod }]);
|
932 | return id;
|
933 | }
|
934 | unsubscribe(type, method, id) {
|
935 | if (!this.isConnected) {
|
936 | throw new Error('Provider is not connected');
|
937 | }
|
938 | const subscriptionId = `${type}::${id}`;
|
939 | if (!this.__internal__subscriptions.has(subscriptionId)) {
|
940 | return Promise.reject(new Error(`Unable to find active subscription=${subscriptionId}`));
|
941 | }
|
942 | this.__internal__resubscribeMethods.delete(subscriptionId);
|
943 | this.__internal__subscriptions.delete(subscriptionId);
|
944 | return this.send(method, [id]);
|
945 | }
|
946 | }
|
947 |
|
948 | const WebSocket = xglobal.WebSocket;
|
949 |
|
950 | const known = {
|
951 | 1000: 'Normal Closure',
|
952 | 1001: 'Going Away',
|
953 | 1002: 'Protocol Error',
|
954 | 1003: 'Unsupported Data',
|
955 | 1004: '(For future)',
|
956 | 1005: 'No Status Received',
|
957 | 1006: 'Abnormal Closure',
|
958 | 1007: 'Invalid frame payload data',
|
959 | 1008: 'Policy Violation',
|
960 | 1009: 'Message too big',
|
961 | 1010: 'Missing Extension',
|
962 | 1011: 'Internal Error',
|
963 | 1012: 'Service Restart',
|
964 | 1013: 'Try Again Later',
|
965 | 1014: 'Bad Gateway',
|
966 | 1015: 'TLS Handshake'
|
967 | };
|
968 | function getWSErrorString(code) {
|
969 | if (code >= 0 && code <= 999) {
|
970 | return '(Unused)';
|
971 | }
|
972 | else if (code >= 1016) {
|
973 | if (code <= 1999) {
|
974 | return '(For WebSocket standard)';
|
975 | }
|
976 | else if (code <= 2999) {
|
977 | return '(For WebSocket extensions)';
|
978 | }
|
979 | else if (code <= 3999) {
|
980 | return '(For libraries and frameworks)';
|
981 | }
|
982 | else if (code <= 4999) {
|
983 | return '(For applications)';
|
984 | }
|
985 | }
|
986 | return known[code] || '(Unknown)';
|
987 | }
|
988 |
|
989 | const ALIASES = {
|
990 | chain_finalisedHead: 'chain_finalizedHead',
|
991 | chain_subscribeFinalisedHeads: 'chain_subscribeFinalizedHeads',
|
992 | chain_unsubscribeFinalisedHeads: 'chain_unsubscribeFinalizedHeads'
|
993 | };
|
994 | const RETRY_DELAY = 2500;
|
995 | const DEFAULT_TIMEOUT_MS = 60 * 1000;
|
996 | const TIMEOUT_INTERVAL = 5000;
|
997 | const l$5 = util.logger('api-ws');
|
998 | function eraseRecord(record, cb) {
|
999 | Object.keys(record).forEach((key) => {
|
1000 | if (cb) {
|
1001 | cb(record[key]);
|
1002 | }
|
1003 | delete record[key];
|
1004 | });
|
1005 | }
|
1006 | function defaultEndpointStats() {
|
1007 | return { bytesRecv: 0, bytesSent: 0, cached: 0, errors: 0, requests: 0, subscriptions: 0, timeout: 0 };
|
1008 | }
|
1009 | class WsProvider {
|
1010 | __internal__callCache;
|
1011 | __internal__coder;
|
1012 | __internal__endpoints;
|
1013 | __internal__headers;
|
1014 | __internal__eventemitter;
|
1015 | __internal__handlers = {};
|
1016 | __internal__isReadyPromise;
|
1017 | __internal__stats;
|
1018 | __internal__waitingForId = {};
|
1019 | __internal__autoConnectMs;
|
1020 | __internal__endpointIndex;
|
1021 | __internal__endpointStats;
|
1022 | __internal__isConnected = false;
|
1023 | __internal__subscriptions = {};
|
1024 | __internal__timeoutId = null;
|
1025 | __internal__websocket;
|
1026 | __internal__timeout;
|
1027 | constructor(endpoint = defaults.WS_URL, autoConnectMs = RETRY_DELAY, headers = {}, timeout, cacheCapacity) {
|
1028 | const endpoints = Array.isArray(endpoint)
|
1029 | ? endpoint
|
1030 | : [endpoint];
|
1031 | if (endpoints.length === 0) {
|
1032 | throw new Error('WsProvider requires at least one Endpoint');
|
1033 | }
|
1034 | endpoints.forEach((endpoint) => {
|
1035 | if (!/^(wss|ws):\/\//.test(endpoint)) {
|
1036 | throw new Error(`Endpoint should start with 'ws://', received '${endpoint}'`);
|
1037 | }
|
1038 | });
|
1039 | this.__internal__callCache = new LRUCache(cacheCapacity || DEFAULT_CAPACITY);
|
1040 | this.__internal__eventemitter = new EventEmitter();
|
1041 | this.__internal__autoConnectMs = autoConnectMs || 0;
|
1042 | this.__internal__coder = new RpcCoder();
|
1043 | this.__internal__endpointIndex = -1;
|
1044 | this.__internal__endpoints = endpoints;
|
1045 | this.__internal__headers = headers;
|
1046 | this.__internal__websocket = null;
|
1047 | this.__internal__stats = {
|
1048 | active: { requests: 0, subscriptions: 0 },
|
1049 | total: defaultEndpointStats()
|
1050 | };
|
1051 | this.__internal__endpointStats = defaultEndpointStats();
|
1052 | this.__internal__timeout = timeout || DEFAULT_TIMEOUT_MS;
|
1053 | if (autoConnectMs && autoConnectMs > 0) {
|
1054 | this.connectWithRetry().catch(util.noop);
|
1055 | }
|
1056 | this.__internal__isReadyPromise = new Promise((resolve) => {
|
1057 | this.__internal__eventemitter.once('connected', () => {
|
1058 | resolve(this);
|
1059 | });
|
1060 | });
|
1061 | }
|
1062 | get hasSubscriptions() {
|
1063 | return !!true;
|
1064 | }
|
1065 | get isClonable() {
|
1066 | return !!true;
|
1067 | }
|
1068 | get isConnected() {
|
1069 | return this.__internal__isConnected;
|
1070 | }
|
1071 | get isReady() {
|
1072 | return this.__internal__isReadyPromise;
|
1073 | }
|
1074 | get endpoint() {
|
1075 | return this.__internal__endpoints[this.__internal__endpointIndex];
|
1076 | }
|
1077 | clone() {
|
1078 | return new WsProvider(this.__internal__endpoints);
|
1079 | }
|
1080 | selectEndpointIndex(endpoints) {
|
1081 | return (this.__internal__endpointIndex + 1) % endpoints.length;
|
1082 | }
|
1083 | async connect() {
|
1084 | if (this.__internal__websocket) {
|
1085 | throw new Error('WebSocket is already connected');
|
1086 | }
|
1087 | try {
|
1088 | this.__internal__endpointIndex = this.selectEndpointIndex(this.__internal__endpoints);
|
1089 | this.__internal__websocket = typeof xglobal.WebSocket !== 'undefined' && util.isChildClass(xglobal.WebSocket, WebSocket)
|
1090 | ? new WebSocket(this.endpoint)
|
1091 | : new WebSocket(this.endpoint, undefined, {
|
1092 | headers: this.__internal__headers
|
1093 | });
|
1094 | if (this.__internal__websocket) {
|
1095 | this.__internal__websocket.onclose = this.__internal__onSocketClose;
|
1096 | this.__internal__websocket.onerror = this.__internal__onSocketError;
|
1097 | this.__internal__websocket.onmessage = this.__internal__onSocketMessage;
|
1098 | this.__internal__websocket.onopen = this.__internal__onSocketOpen;
|
1099 | }
|
1100 | this.__internal__timeoutId = setInterval(() => this.__internal__timeoutHandlers(), TIMEOUT_INTERVAL);
|
1101 | }
|
1102 | catch (error) {
|
1103 | l$5.error(error);
|
1104 | this.__internal__emit('error', error);
|
1105 | throw error;
|
1106 | }
|
1107 | }
|
1108 | async connectWithRetry() {
|
1109 | if (this.__internal__autoConnectMs > 0) {
|
1110 | try {
|
1111 | await this.connect();
|
1112 | }
|
1113 | catch {
|
1114 | setTimeout(() => {
|
1115 | this.connectWithRetry().catch(util.noop);
|
1116 | }, this.__internal__autoConnectMs);
|
1117 | }
|
1118 | }
|
1119 | }
|
1120 | async disconnect() {
|
1121 | this.__internal__autoConnectMs = 0;
|
1122 | try {
|
1123 | if (this.__internal__websocket) {
|
1124 | this.__internal__websocket.close(1000);
|
1125 | }
|
1126 | }
|
1127 | catch (error) {
|
1128 | l$5.error(error);
|
1129 | this.__internal__emit('error', error);
|
1130 | throw error;
|
1131 | }
|
1132 | }
|
1133 | get stats() {
|
1134 | return {
|
1135 | active: {
|
1136 | requests: Object.keys(this.__internal__handlers).length,
|
1137 | subscriptions: Object.keys(this.__internal__subscriptions).length
|
1138 | },
|
1139 | total: this.__internal__stats.total
|
1140 | };
|
1141 | }
|
1142 | get endpointStats() {
|
1143 | return this.__internal__endpointStats;
|
1144 | }
|
1145 | on(type, sub) {
|
1146 | this.__internal__eventemitter.on(type, sub);
|
1147 | return () => {
|
1148 | this.__internal__eventemitter.removeListener(type, sub);
|
1149 | };
|
1150 | }
|
1151 | send(method, params, isCacheable, subscription) {
|
1152 | this.__internal__endpointStats.requests++;
|
1153 | this.__internal__stats.total.requests++;
|
1154 | const [id, body] = this.__internal__coder.encodeJson(method, params);
|
1155 | const cacheKey = isCacheable ? `${method}::${util.stringify(params)}` : '';
|
1156 | let resultPromise = isCacheable
|
1157 | ? this.__internal__callCache.get(cacheKey)
|
1158 | : null;
|
1159 | if (!resultPromise) {
|
1160 | resultPromise = this.__internal__send(id, body, method, params, subscription);
|
1161 | if (isCacheable) {
|
1162 | this.__internal__callCache.set(cacheKey, resultPromise);
|
1163 | }
|
1164 | }
|
1165 | else {
|
1166 | this.__internal__endpointStats.cached++;
|
1167 | this.__internal__stats.total.cached++;
|
1168 | }
|
1169 | return resultPromise;
|
1170 | }
|
1171 | async __internal__send(id, body, method, params, subscription) {
|
1172 | return new Promise((resolve, reject) => {
|
1173 | try {
|
1174 | if (!this.isConnected || this.__internal__websocket === null) {
|
1175 | throw new Error('WebSocket is not connected');
|
1176 | }
|
1177 | const callback = (error, result) => {
|
1178 | error
|
1179 | ? reject(error)
|
1180 | : resolve(result);
|
1181 | };
|
1182 | l$5.debug(() => ['calling', method, body]);
|
1183 | this.__internal__handlers[id] = {
|
1184 | callback,
|
1185 | method,
|
1186 | params,
|
1187 | start: Date.now(),
|
1188 | subscription
|
1189 | };
|
1190 | const bytesSent = body.length;
|
1191 | this.__internal__endpointStats.bytesSent += bytesSent;
|
1192 | this.__internal__stats.total.bytesSent += bytesSent;
|
1193 | this.__internal__websocket.send(body);
|
1194 | }
|
1195 | catch (error) {
|
1196 | this.__internal__endpointStats.errors++;
|
1197 | this.__internal__stats.total.errors++;
|
1198 | reject(error);
|
1199 | }
|
1200 | });
|
1201 | }
|
1202 | subscribe(type, method, params, callback) {
|
1203 | this.__internal__endpointStats.subscriptions++;
|
1204 | this.__internal__stats.total.subscriptions++;
|
1205 | return this.send(method, params, false, { callback, type });
|
1206 | }
|
1207 | async unsubscribe(type, method, id) {
|
1208 | const subscription = `${type}::${id}`;
|
1209 | if (util.isUndefined(this.__internal__subscriptions[subscription])) {
|
1210 | l$5.debug(() => `Unable to find active subscription=${subscription}`);
|
1211 | return false;
|
1212 | }
|
1213 | delete this.__internal__subscriptions[subscription];
|
1214 | try {
|
1215 | return this.isConnected && !util.isNull(this.__internal__websocket)
|
1216 | ? this.send(method, [id])
|
1217 | : true;
|
1218 | }
|
1219 | catch {
|
1220 | return false;
|
1221 | }
|
1222 | }
|
1223 | __internal__emit = (type, ...args) => {
|
1224 | this.__internal__eventemitter.emit(type, ...args);
|
1225 | };
|
1226 | __internal__onSocketClose = (event) => {
|
1227 | const error = new Error(`disconnected from ${this.endpoint}: ${event.code}:: ${event.reason || getWSErrorString(event.code)}`);
|
1228 | if (this.__internal__autoConnectMs > 0) {
|
1229 | l$5.error(error.message);
|
1230 | }
|
1231 | this.__internal__isConnected = false;
|
1232 | if (this.__internal__websocket) {
|
1233 | this.__internal__websocket.onclose = null;
|
1234 | this.__internal__websocket.onerror = null;
|
1235 | this.__internal__websocket.onmessage = null;
|
1236 | this.__internal__websocket.onopen = null;
|
1237 | this.__internal__websocket = null;
|
1238 | }
|
1239 | if (this.__internal__timeoutId) {
|
1240 | clearInterval(this.__internal__timeoutId);
|
1241 | this.__internal__timeoutId = null;
|
1242 | }
|
1243 | eraseRecord(this.__internal__handlers, (h) => {
|
1244 | try {
|
1245 | h.callback(error, undefined);
|
1246 | }
|
1247 | catch (err) {
|
1248 | l$5.error(err);
|
1249 | }
|
1250 | });
|
1251 | eraseRecord(this.__internal__waitingForId);
|
1252 | this.__internal__endpointStats = defaultEndpointStats();
|
1253 | this.__internal__emit('disconnected');
|
1254 | if (this.__internal__autoConnectMs > 0) {
|
1255 | setTimeout(() => {
|
1256 | this.connectWithRetry().catch(util.noop);
|
1257 | }, this.__internal__autoConnectMs);
|
1258 | }
|
1259 | };
|
1260 | __internal__onSocketError = (error) => {
|
1261 | l$5.debug(() => ['socket error', error]);
|
1262 | this.__internal__emit('error', error);
|
1263 | };
|
1264 | __internal__onSocketMessage = (message) => {
|
1265 | l$5.debug(() => ['received', message.data]);
|
1266 | const bytesRecv = message.data.length;
|
1267 | this.__internal__endpointStats.bytesRecv += bytesRecv;
|
1268 | this.__internal__stats.total.bytesRecv += bytesRecv;
|
1269 | const response = JSON.parse(message.data);
|
1270 | return util.isUndefined(response.method)
|
1271 | ? this.__internal__onSocketMessageResult(response)
|
1272 | : this.__internal__onSocketMessageSubscribe(response);
|
1273 | };
|
1274 | __internal__onSocketMessageResult = (response) => {
|
1275 | const handler = this.__internal__handlers[response.id];
|
1276 | if (!handler) {
|
1277 | l$5.debug(() => `Unable to find handler for id=${response.id}`);
|
1278 | return;
|
1279 | }
|
1280 | try {
|
1281 | const { method, params, subscription } = handler;
|
1282 | const result = this.__internal__coder.decodeResponse(response);
|
1283 | handler.callback(null, result);
|
1284 | if (subscription) {
|
1285 | const subId = `${subscription.type}::${result}`;
|
1286 | this.__internal__subscriptions[subId] = util.objectSpread({}, subscription, {
|
1287 | method,
|
1288 | params
|
1289 | });
|
1290 | if (this.__internal__waitingForId[subId]) {
|
1291 | this.__internal__onSocketMessageSubscribe(this.__internal__waitingForId[subId]);
|
1292 | }
|
1293 | }
|
1294 | }
|
1295 | catch (error) {
|
1296 | this.__internal__endpointStats.errors++;
|
1297 | this.__internal__stats.total.errors++;
|
1298 | handler.callback(error, undefined);
|
1299 | }
|
1300 | delete this.__internal__handlers[response.id];
|
1301 | };
|
1302 | __internal__onSocketMessageSubscribe = (response) => {
|
1303 | if (!response.method) {
|
1304 | throw new Error('No method found in JSONRPC response');
|
1305 | }
|
1306 | const method = ALIASES[response.method] || response.method;
|
1307 | const subId = `${method}::${response.params.subscription}`;
|
1308 | const handler = this.__internal__subscriptions[subId];
|
1309 | if (!handler) {
|
1310 | this.__internal__waitingForId[subId] = response;
|
1311 | l$5.debug(() => `Unable to find handler for subscription=${subId}`);
|
1312 | return;
|
1313 | }
|
1314 | delete this.__internal__waitingForId[subId];
|
1315 | try {
|
1316 | const result = this.__internal__coder.decodeResponse(response);
|
1317 | handler.callback(null, result);
|
1318 | }
|
1319 | catch (error) {
|
1320 | this.__internal__endpointStats.errors++;
|
1321 | this.__internal__stats.total.errors++;
|
1322 | handler.callback(error, undefined);
|
1323 | }
|
1324 | };
|
1325 | __internal__onSocketOpen = () => {
|
1326 | if (this.__internal__websocket === null) {
|
1327 | throw new Error('WebSocket cannot be null in onOpen');
|
1328 | }
|
1329 | l$5.debug(() => ['connected to', this.endpoint]);
|
1330 | this.__internal__isConnected = true;
|
1331 | this.__internal__resubscribe();
|
1332 | this.__internal__emit('connected');
|
1333 | return true;
|
1334 | };
|
1335 | __internal__resubscribe = () => {
|
1336 | const subscriptions = this.__internal__subscriptions;
|
1337 | this.__internal__subscriptions = {};
|
1338 | Promise.all(Object.keys(subscriptions).map(async (id) => {
|
1339 | const { callback, method, params, type } = subscriptions[id];
|
1340 | if (type.startsWith('author_')) {
|
1341 | return;
|
1342 | }
|
1343 | try {
|
1344 | await this.subscribe(type, method, params, callback);
|
1345 | }
|
1346 | catch (error) {
|
1347 | l$5.error(error);
|
1348 | }
|
1349 | })).catch(l$5.error);
|
1350 | };
|
1351 | __internal__timeoutHandlers = () => {
|
1352 | const now = Date.now();
|
1353 | const ids = Object.keys(this.__internal__handlers);
|
1354 | for (let i = 0, count = ids.length; i < count; i++) {
|
1355 | const handler = this.__internal__handlers[ids[i]];
|
1356 | if ((now - handler.start) > this.__internal__timeout) {
|
1357 | try {
|
1358 | handler.callback(new Error(`No response received from RPC endpoint in ${this.__internal__timeout / 1000}s`), undefined);
|
1359 | }
|
1360 | catch {
|
1361 | }
|
1362 | this.__internal__endpointStats.timeout++;
|
1363 | this.__internal__stats.total.timeout++;
|
1364 | delete this.__internal__handlers[ids[i]];
|
1365 | }
|
1366 | }
|
1367 | };
|
1368 | }
|
1369 |
|
1370 | const packageInfo = { name: '@polkadot/api', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '11.3.1' };
|
1371 |
|
1372 | var extendStatics = function(d, b) {
|
1373 | extendStatics = Object.setPrototypeOf ||
|
1374 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
1375 | function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
1376 | return extendStatics(d, b);
|
1377 | };
|
1378 | function __extends(d, b) {
|
1379 | if (typeof b !== "function" && b !== null)
|
1380 | throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
1381 | extendStatics(d, b);
|
1382 | function __() { this.constructor = d; }
|
1383 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
1384 | }
|
1385 | function __awaiter(thisArg, _arguments, P, generator) {
|
1386 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
1387 | return new (P || (P = Promise))(function (resolve, reject) {
|
1388 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
1389 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
1390 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
1391 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
1392 | });
|
1393 | }
|
1394 | function __generator(thisArg, body) {
|
1395 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
1396 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
1397 | function verb(n) { return function (v) { return step([n, v]); }; }
|
1398 | function step(op) {
|
1399 | if (f) throw new TypeError("Generator is already executing.");
|
1400 | while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
1401 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
1402 | if (y = 0, t) op = [op[0] & 2, t.value];
|
1403 | switch (op[0]) {
|
1404 | case 0: case 1: t = op; break;
|
1405 | case 4: _.label++; return { value: op[1], done: false };
|
1406 | case 5: _.label++; y = op[1]; op = [0]; continue;
|
1407 | case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
1408 | default:
|
1409 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
1410 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
1411 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
1412 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
1413 | if (t[2]) _.ops.pop();
|
1414 | _.trys.pop(); continue;
|
1415 | }
|
1416 | op = body.call(thisArg, _);
|
1417 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
1418 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
1419 | }
|
1420 | }
|
1421 | function __values(o) {
|
1422 | var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
1423 | if (m) return m.call(o);
|
1424 | if (o && typeof o.length === "number") return {
|
1425 | next: function () {
|
1426 | if (o && i >= o.length) o = void 0;
|
1427 | return { value: o && o[i++], done: !o };
|
1428 | }
|
1429 | };
|
1430 | throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
1431 | }
|
1432 | function __read(o, n) {
|
1433 | var m = typeof Symbol === "function" && o[Symbol.iterator];
|
1434 | if (!m) return o;
|
1435 | var i = m.call(o), r, ar = [], e;
|
1436 | try {
|
1437 | while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
1438 | }
|
1439 | catch (error) { e = { error: error }; }
|
1440 | finally {
|
1441 | try {
|
1442 | if (r && !r.done && (m = i["return"])) m.call(i);
|
1443 | }
|
1444 | finally { if (e) throw e.error; }
|
1445 | }
|
1446 | return ar;
|
1447 | }
|
1448 | function __spreadArray(to, from, pack) {
|
1449 | if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
1450 | if (ar || !(i in from)) {
|
1451 | if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
1452 | ar[i] = from[i];
|
1453 | }
|
1454 | }
|
1455 | return to.concat(ar || Array.prototype.slice.call(from));
|
1456 | }
|
1457 | function __await(v) {
|
1458 | return this instanceof __await ? (this.v = v, this) : new __await(v);
|
1459 | }
|
1460 | function __asyncGenerator(thisArg, _arguments, generator) {
|
1461 | if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
1462 | var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
1463 | return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
1464 | function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
1465 | function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
1466 | function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
1467 | function fulfill(value) { resume("next", value); }
|
1468 | function reject(value) { resume("throw", value); }
|
1469 | function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
1470 | }
|
1471 | function __asyncValues(o) {
|
1472 | if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
1473 | var m = o[Symbol.asyncIterator], i;
|
1474 | return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
1475 | function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
1476 | function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
1477 | }
|
1478 | typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
1479 | var e = new Error(message);
|
1480 | return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
1481 | };
|
1482 |
|
1483 | function isFunction(value) {
|
1484 | return typeof value === 'function';
|
1485 | }
|
1486 |
|
1487 | function createErrorClass(createImpl) {
|
1488 | var _super = function (instance) {
|
1489 | Error.call(instance);
|
1490 | instance.stack = new Error().stack;
|
1491 | };
|
1492 | var ctorFunc = createImpl(_super);
|
1493 | ctorFunc.prototype = Object.create(Error.prototype);
|
1494 | ctorFunc.prototype.constructor = ctorFunc;
|
1495 | return ctorFunc;
|
1496 | }
|
1497 |
|
1498 | var UnsubscriptionError = createErrorClass(function (_super) {
|
1499 | return function UnsubscriptionErrorImpl(errors) {
|
1500 | _super(this);
|
1501 | this.message = errors
|
1502 | ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ')
|
1503 | : '';
|
1504 | this.name = 'UnsubscriptionError';
|
1505 | this.errors = errors;
|
1506 | };
|
1507 | });
|
1508 |
|
1509 | function arrRemove(arr, item) {
|
1510 | if (arr) {
|
1511 | var index = arr.indexOf(item);
|
1512 | 0 <= index && arr.splice(index, 1);
|
1513 | }
|
1514 | }
|
1515 |
|
1516 | var Subscription = (function () {
|
1517 | function Subscription(initialTeardown) {
|
1518 | this.initialTeardown = initialTeardown;
|
1519 | this.closed = false;
|
1520 | this._parentage = null;
|
1521 | this._finalizers = null;
|
1522 | }
|
1523 | Subscription.prototype.unsubscribe = function () {
|
1524 | var e_1, _a, e_2, _b;
|
1525 | var errors;
|
1526 | if (!this.closed) {
|
1527 | this.closed = true;
|
1528 | var _parentage = this._parentage;
|
1529 | if (_parentage) {
|
1530 | this._parentage = null;
|
1531 | if (Array.isArray(_parentage)) {
|
1532 | try {
|
1533 | for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
|
1534 | var parent_1 = _parentage_1_1.value;
|
1535 | parent_1.remove(this);
|
1536 | }
|
1537 | }
|
1538 | catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
1539 | finally {
|
1540 | try {
|
1541 | if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
|
1542 | }
|
1543 | finally { if (e_1) throw e_1.error; }
|
1544 | }
|
1545 | }
|
1546 | else {
|
1547 | _parentage.remove(this);
|
1548 | }
|
1549 | }
|
1550 | var initialFinalizer = this.initialTeardown;
|
1551 | if (isFunction(initialFinalizer)) {
|
1552 | try {
|
1553 | initialFinalizer();
|
1554 | }
|
1555 | catch (e) {
|
1556 | errors = e instanceof UnsubscriptionError ? e.errors : [e];
|
1557 | }
|
1558 | }
|
1559 | var _finalizers = this._finalizers;
|
1560 | if (_finalizers) {
|
1561 | this._finalizers = null;
|
1562 | try {
|
1563 | for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
|
1564 | var finalizer = _finalizers_1_1.value;
|
1565 | try {
|
1566 | execFinalizer(finalizer);
|
1567 | }
|
1568 | catch (err) {
|
1569 | errors = errors !== null && errors !== void 0 ? errors : [];
|
1570 | if (err instanceof UnsubscriptionError) {
|
1571 | errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
|
1572 | }
|
1573 | else {
|
1574 | errors.push(err);
|
1575 | }
|
1576 | }
|
1577 | }
|
1578 | }
|
1579 | catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
1580 | finally {
|
1581 | try {
|
1582 | if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
|
1583 | }
|
1584 | finally { if (e_2) throw e_2.error; }
|
1585 | }
|
1586 | }
|
1587 | if (errors) {
|
1588 | throw new UnsubscriptionError(errors);
|
1589 | }
|
1590 | }
|
1591 | };
|
1592 | Subscription.prototype.add = function (teardown) {
|
1593 | var _a;
|
1594 | if (teardown && teardown !== this) {
|
1595 | if (this.closed) {
|
1596 | execFinalizer(teardown);
|
1597 | }
|
1598 | else {
|
1599 | if (teardown instanceof Subscription) {
|
1600 | if (teardown.closed || teardown._hasParent(this)) {
|
1601 | return;
|
1602 | }
|
1603 | teardown._addParent(this);
|
1604 | }
|
1605 | (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);
|
1606 | }
|
1607 | }
|
1608 | };
|
1609 | Subscription.prototype._hasParent = function (parent) {
|
1610 | var _parentage = this._parentage;
|
1611 | return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));
|
1612 | };
|
1613 | Subscription.prototype._addParent = function (parent) {
|
1614 | var _parentage = this._parentage;
|
1615 | this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
|
1616 | };
|
1617 | Subscription.prototype._removeParent = function (parent) {
|
1618 | var _parentage = this._parentage;
|
1619 | if (_parentage === parent) {
|
1620 | this._parentage = null;
|
1621 | }
|
1622 | else if (Array.isArray(_parentage)) {
|
1623 | arrRemove(_parentage, parent);
|
1624 | }
|
1625 | };
|
1626 | Subscription.prototype.remove = function (teardown) {
|
1627 | var _finalizers = this._finalizers;
|
1628 | _finalizers && arrRemove(_finalizers, teardown);
|
1629 | if (teardown instanceof Subscription) {
|
1630 | teardown._removeParent(this);
|
1631 | }
|
1632 | };
|
1633 | Subscription.EMPTY = (function () {
|
1634 | var empty = new Subscription();
|
1635 | empty.closed = true;
|
1636 | return empty;
|
1637 | })();
|
1638 | return Subscription;
|
1639 | }());
|
1640 | var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
|
1641 | function isSubscription(value) {
|
1642 | return (value instanceof Subscription ||
|
1643 | (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));
|
1644 | }
|
1645 | function execFinalizer(finalizer) {
|
1646 | if (isFunction(finalizer)) {
|
1647 | finalizer();
|
1648 | }
|
1649 | else {
|
1650 | finalizer.unsubscribe();
|
1651 | }
|
1652 | }
|
1653 |
|
1654 | var config = {
|
1655 | onUnhandledError: null,
|
1656 | onStoppedNotification: null,
|
1657 | Promise: undefined,
|
1658 | useDeprecatedSynchronousErrorHandling: false,
|
1659 | useDeprecatedNextContext: false,
|
1660 | };
|
1661 |
|
1662 | var timeoutProvider = {
|
1663 | setTimeout: function (handler, timeout) {
|
1664 | var args = [];
|
1665 | for (var _i = 2; _i < arguments.length; _i++) {
|
1666 | args[_i - 2] = arguments[_i];
|
1667 | }
|
1668 | return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));
|
1669 | },
|
1670 | clearTimeout: function (handle) {
|
1671 | var delegate = timeoutProvider.delegate;
|
1672 | return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);
|
1673 | },
|
1674 | delegate: undefined,
|
1675 | };
|
1676 |
|
1677 | function reportUnhandledError(err) {
|
1678 | timeoutProvider.setTimeout(function () {
|
1679 | {
|
1680 | throw err;
|
1681 | }
|
1682 | });
|
1683 | }
|
1684 |
|
1685 | function noop() { }
|
1686 |
|
1687 | function errorContext(cb) {
|
1688 | {
|
1689 | cb();
|
1690 | }
|
1691 | }
|
1692 |
|
1693 | var Subscriber = (function (_super) {
|
1694 | __extends(Subscriber, _super);
|
1695 | function Subscriber(destination) {
|
1696 | var _this = _super.call(this) || this;
|
1697 | _this.isStopped = false;
|
1698 | if (destination) {
|
1699 | _this.destination = destination;
|
1700 | if (isSubscription(destination)) {
|
1701 | destination.add(_this);
|
1702 | }
|
1703 | }
|
1704 | else {
|
1705 | _this.destination = EMPTY_OBSERVER;
|
1706 | }
|
1707 | return _this;
|
1708 | }
|
1709 | Subscriber.create = function (next, error, complete) {
|
1710 | return new SafeSubscriber(next, error, complete);
|
1711 | };
|
1712 | Subscriber.prototype.next = function (value) {
|
1713 | if (this.isStopped) ;
|
1714 | else {
|
1715 | this._next(value);
|
1716 | }
|
1717 | };
|
1718 | Subscriber.prototype.error = function (err) {
|
1719 | if (this.isStopped) ;
|
1720 | else {
|
1721 | this.isStopped = true;
|
1722 | this._error(err);
|
1723 | }
|
1724 | };
|
1725 | Subscriber.prototype.complete = function () {
|
1726 | if (this.isStopped) ;
|
1727 | else {
|
1728 | this.isStopped = true;
|
1729 | this._complete();
|
1730 | }
|
1731 | };
|
1732 | Subscriber.prototype.unsubscribe = function () {
|
1733 | if (!this.closed) {
|
1734 | this.isStopped = true;
|
1735 | _super.prototype.unsubscribe.call(this);
|
1736 | this.destination = null;
|
1737 | }
|
1738 | };
|
1739 | Subscriber.prototype._next = function (value) {
|
1740 | this.destination.next(value);
|
1741 | };
|
1742 | Subscriber.prototype._error = function (err) {
|
1743 | try {
|
1744 | this.destination.error(err);
|
1745 | }
|
1746 | finally {
|
1747 | this.unsubscribe();
|
1748 | }
|
1749 | };
|
1750 | Subscriber.prototype._complete = function () {
|
1751 | try {
|
1752 | this.destination.complete();
|
1753 | }
|
1754 | finally {
|
1755 | this.unsubscribe();
|
1756 | }
|
1757 | };
|
1758 | return Subscriber;
|
1759 | }(Subscription));
|
1760 | var _bind = Function.prototype.bind;
|
1761 | function bind(fn, thisArg) {
|
1762 | return _bind.call(fn, thisArg);
|
1763 | }
|
1764 | var ConsumerObserver = (function () {
|
1765 | function ConsumerObserver(partialObserver) {
|
1766 | this.partialObserver = partialObserver;
|
1767 | }
|
1768 | ConsumerObserver.prototype.next = function (value) {
|
1769 | var partialObserver = this.partialObserver;
|
1770 | if (partialObserver.next) {
|
1771 | try {
|
1772 | partialObserver.next(value);
|
1773 | }
|
1774 | catch (error) {
|
1775 | handleUnhandledError(error);
|
1776 | }
|
1777 | }
|
1778 | };
|
1779 | ConsumerObserver.prototype.error = function (err) {
|
1780 | var partialObserver = this.partialObserver;
|
1781 | if (partialObserver.error) {
|
1782 | try {
|
1783 | partialObserver.error(err);
|
1784 | }
|
1785 | catch (error) {
|
1786 | handleUnhandledError(error);
|
1787 | }
|
1788 | }
|
1789 | else {
|
1790 | handleUnhandledError(err);
|
1791 | }
|
1792 | };
|
1793 | ConsumerObserver.prototype.complete = function () {
|
1794 | var partialObserver = this.partialObserver;
|
1795 | if (partialObserver.complete) {
|
1796 | try {
|
1797 | partialObserver.complete();
|
1798 | }
|
1799 | catch (error) {
|
1800 | handleUnhandledError(error);
|
1801 | }
|
1802 | }
|
1803 | };
|
1804 | return ConsumerObserver;
|
1805 | }());
|
1806 | var SafeSubscriber = (function (_super) {
|
1807 | __extends(SafeSubscriber, _super);
|
1808 | function SafeSubscriber(observerOrNext, error, complete) {
|
1809 | var _this = _super.call(this) || this;
|
1810 | var partialObserver;
|
1811 | if (isFunction(observerOrNext) || !observerOrNext) {
|
1812 | partialObserver = {
|
1813 | next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),
|
1814 | error: error !== null && error !== void 0 ? error : undefined,
|
1815 | complete: complete !== null && complete !== void 0 ? complete : undefined,
|
1816 | };
|
1817 | }
|
1818 | else {
|
1819 | var context_1;
|
1820 | if (_this && config.useDeprecatedNextContext) {
|
1821 | context_1 = Object.create(observerOrNext);
|
1822 | context_1.unsubscribe = function () { return _this.unsubscribe(); };
|
1823 | partialObserver = {
|
1824 | next: observerOrNext.next && bind(observerOrNext.next, context_1),
|
1825 | error: observerOrNext.error && bind(observerOrNext.error, context_1),
|
1826 | complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),
|
1827 | };
|
1828 | }
|
1829 | else {
|
1830 | partialObserver = observerOrNext;
|
1831 | }
|
1832 | }
|
1833 | _this.destination = new ConsumerObserver(partialObserver);
|
1834 | return _this;
|
1835 | }
|
1836 | return SafeSubscriber;
|
1837 | }(Subscriber));
|
1838 | function handleUnhandledError(error) {
|
1839 | {
|
1840 | reportUnhandledError(error);
|
1841 | }
|
1842 | }
|
1843 | function defaultErrorHandler(err) {
|
1844 | throw err;
|
1845 | }
|
1846 | var EMPTY_OBSERVER = {
|
1847 | closed: true,
|
1848 | next: noop,
|
1849 | error: defaultErrorHandler,
|
1850 | complete: noop,
|
1851 | };
|
1852 |
|
1853 | var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();
|
1854 |
|
1855 | function identity$1(x) {
|
1856 | return x;
|
1857 | }
|
1858 |
|
1859 | function pipeFromArray(fns) {
|
1860 | if (fns.length === 0) {
|
1861 | return identity$1;
|
1862 | }
|
1863 | if (fns.length === 1) {
|
1864 | return fns[0];
|
1865 | }
|
1866 | return function piped(input) {
|
1867 | return fns.reduce(function (prev, fn) { return fn(prev); }, input);
|
1868 | };
|
1869 | }
|
1870 |
|
1871 | var Observable = (function () {
|
1872 | function Observable(subscribe) {
|
1873 | if (subscribe) {
|
1874 | this._subscribe = subscribe;
|
1875 | }
|
1876 | }
|
1877 | Observable.prototype.lift = function (operator) {
|
1878 | var observable = new Observable();
|
1879 | observable.source = this;
|
1880 | observable.operator = operator;
|
1881 | return observable;
|
1882 | };
|
1883 | Observable.prototype.subscribe = function (observerOrNext, error, complete) {
|
1884 | var _this = this;
|
1885 | var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
|
1886 | errorContext(function () {
|
1887 | var _a = _this, operator = _a.operator, source = _a.source;
|
1888 | subscriber.add(operator
|
1889 | ?
|
1890 | operator.call(subscriber, source)
|
1891 | : source
|
1892 | ?
|
1893 | _this._subscribe(subscriber)
|
1894 | :
|
1895 | _this._trySubscribe(subscriber));
|
1896 | });
|
1897 | return subscriber;
|
1898 | };
|
1899 | Observable.prototype._trySubscribe = function (sink) {
|
1900 | try {
|
1901 | return this._subscribe(sink);
|
1902 | }
|
1903 | catch (err) {
|
1904 | sink.error(err);
|
1905 | }
|
1906 | };
|
1907 | Observable.prototype.forEach = function (next, promiseCtor) {
|
1908 | var _this = this;
|
1909 | promiseCtor = getPromiseCtor(promiseCtor);
|
1910 | return new promiseCtor(function (resolve, reject) {
|
1911 | var subscriber = new SafeSubscriber({
|
1912 | next: function (value) {
|
1913 | try {
|
1914 | next(value);
|
1915 | }
|
1916 | catch (err) {
|
1917 | reject(err);
|
1918 | subscriber.unsubscribe();
|
1919 | }
|
1920 | },
|
1921 | error: reject,
|
1922 | complete: resolve,
|
1923 | });
|
1924 | _this.subscribe(subscriber);
|
1925 | });
|
1926 | };
|
1927 | Observable.prototype._subscribe = function (subscriber) {
|
1928 | var _a;
|
1929 | return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);
|
1930 | };
|
1931 | Observable.prototype[observable] = function () {
|
1932 | return this;
|
1933 | };
|
1934 | Observable.prototype.pipe = function () {
|
1935 | var operations = [];
|
1936 | for (var _i = 0; _i < arguments.length; _i++) {
|
1937 | operations[_i] = arguments[_i];
|
1938 | }
|
1939 | return pipeFromArray(operations)(this);
|
1940 | };
|
1941 | Observable.prototype.toPromise = function (promiseCtor) {
|
1942 | var _this = this;
|
1943 | promiseCtor = getPromiseCtor(promiseCtor);
|
1944 | return new promiseCtor(function (resolve, reject) {
|
1945 | var value;
|
1946 | _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });
|
1947 | });
|
1948 | };
|
1949 | Observable.create = function (subscribe) {
|
1950 | return new Observable(subscribe);
|
1951 | };
|
1952 | return Observable;
|
1953 | }());
|
1954 | function getPromiseCtor(promiseCtor) {
|
1955 | var _a;
|
1956 | return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;
|
1957 | }
|
1958 | function isObserver(value) {
|
1959 | return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
|
1960 | }
|
1961 | function isSubscriber(value) {
|
1962 | return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));
|
1963 | }
|
1964 |
|
1965 | function hasLift(source) {
|
1966 | return isFunction(source === null || source === void 0 ? void 0 : source.lift);
|
1967 | }
|
1968 | function operate(init) {
|
1969 | return function (source) {
|
1970 | if (hasLift(source)) {
|
1971 | return source.lift(function (liftedSource) {
|
1972 | try {
|
1973 | return init(liftedSource, this);
|
1974 | }
|
1975 | catch (err) {
|
1976 | this.error(err);
|
1977 | }
|
1978 | });
|
1979 | }
|
1980 | throw new TypeError('Unable to lift unknown Observable type');
|
1981 | };
|
1982 | }
|
1983 |
|
1984 | function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
|
1985 | return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
|
1986 | }
|
1987 | var OperatorSubscriber = (function (_super) {
|
1988 | __extends(OperatorSubscriber, _super);
|
1989 | function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
|
1990 | var _this = _super.call(this, destination) || this;
|
1991 | _this.onFinalize = onFinalize;
|
1992 | _this.shouldUnsubscribe = shouldUnsubscribe;
|
1993 | _this._next = onNext
|
1994 | ? function (value) {
|
1995 | try {
|
1996 | onNext(value);
|
1997 | }
|
1998 | catch (err) {
|
1999 | destination.error(err);
|
2000 | }
|
2001 | }
|
2002 | : _super.prototype._next;
|
2003 | _this._error = onError
|
2004 | ? function (err) {
|
2005 | try {
|
2006 | onError(err);
|
2007 | }
|
2008 | catch (err) {
|
2009 | destination.error(err);
|
2010 | }
|
2011 | finally {
|
2012 | this.unsubscribe();
|
2013 | }
|
2014 | }
|
2015 | : _super.prototype._error;
|
2016 | _this._complete = onComplete
|
2017 | ? function () {
|
2018 | try {
|
2019 | onComplete();
|
2020 | }
|
2021 | catch (err) {
|
2022 | destination.error(err);
|
2023 | }
|
2024 | finally {
|
2025 | this.unsubscribe();
|
2026 | }
|
2027 | }
|
2028 | : _super.prototype._complete;
|
2029 | return _this;
|
2030 | }
|
2031 | OperatorSubscriber.prototype.unsubscribe = function () {
|
2032 | var _a;
|
2033 | if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
|
2034 | var closed_1 = this.closed;
|
2035 | _super.prototype.unsubscribe.call(this);
|
2036 | !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));
|
2037 | }
|
2038 | };
|
2039 | return OperatorSubscriber;
|
2040 | }(Subscriber));
|
2041 |
|
2042 | function refCount() {
|
2043 | return operate(function (source, subscriber) {
|
2044 | var connection = null;
|
2045 | source._refCount++;
|
2046 | var refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {
|
2047 | if (!source || source._refCount <= 0 || 0 < --source._refCount) {
|
2048 | connection = null;
|
2049 | return;
|
2050 | }
|
2051 | var sharedConnection = source._connection;
|
2052 | var conn = connection;
|
2053 | connection = null;
|
2054 | if (sharedConnection && (!conn || sharedConnection === conn)) {
|
2055 | sharedConnection.unsubscribe();
|
2056 | }
|
2057 | subscriber.unsubscribe();
|
2058 | });
|
2059 | source.subscribe(refCounter);
|
2060 | if (!refCounter.closed) {
|
2061 | connection = source.connect();
|
2062 | }
|
2063 | });
|
2064 | }
|
2065 |
|
2066 | var ConnectableObservable = (function (_super) {
|
2067 | __extends(ConnectableObservable, _super);
|
2068 | function ConnectableObservable(source, subjectFactory) {
|
2069 | var _this = _super.call(this) || this;
|
2070 | _this.source = source;
|
2071 | _this.subjectFactory = subjectFactory;
|
2072 | _this._subject = null;
|
2073 | _this._refCount = 0;
|
2074 | _this._connection = null;
|
2075 | if (hasLift(source)) {
|
2076 | _this.lift = source.lift;
|
2077 | }
|
2078 | return _this;
|
2079 | }
|
2080 | ConnectableObservable.prototype._subscribe = function (subscriber) {
|
2081 | return this.getSubject().subscribe(subscriber);
|
2082 | };
|
2083 | ConnectableObservable.prototype.getSubject = function () {
|
2084 | var subject = this._subject;
|
2085 | if (!subject || subject.isStopped) {
|
2086 | this._subject = this.subjectFactory();
|
2087 | }
|
2088 | return this._subject;
|
2089 | };
|
2090 | ConnectableObservable.prototype._teardown = function () {
|
2091 | this._refCount = 0;
|
2092 | var _connection = this._connection;
|
2093 | this._subject = this._connection = null;
|
2094 | _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();
|
2095 | };
|
2096 | ConnectableObservable.prototype.connect = function () {
|
2097 | var _this = this;
|
2098 | var connection = this._connection;
|
2099 | if (!connection) {
|
2100 | connection = this._connection = new Subscription();
|
2101 | var subject_1 = this.getSubject();
|
2102 | connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, undefined, function () {
|
2103 | _this._teardown();
|
2104 | subject_1.complete();
|
2105 | }, function (err) {
|
2106 | _this._teardown();
|
2107 | subject_1.error(err);
|
2108 | }, function () { return _this._teardown(); })));
|
2109 | if (connection.closed) {
|
2110 | this._connection = null;
|
2111 | connection = Subscription.EMPTY;
|
2112 | }
|
2113 | }
|
2114 | return connection;
|
2115 | };
|
2116 | ConnectableObservable.prototype.refCount = function () {
|
2117 | return refCount()(this);
|
2118 | };
|
2119 | return ConnectableObservable;
|
2120 | }(Observable));
|
2121 |
|
2122 | var ObjectUnsubscribedError = createErrorClass(function (_super) {
|
2123 | return function ObjectUnsubscribedErrorImpl() {
|
2124 | _super(this);
|
2125 | this.name = 'ObjectUnsubscribedError';
|
2126 | this.message = 'object unsubscribed';
|
2127 | };
|
2128 | });
|
2129 |
|
2130 | var Subject = (function (_super) {
|
2131 | __extends(Subject, _super);
|
2132 | function Subject() {
|
2133 | var _this = _super.call(this) || this;
|
2134 | _this.closed = false;
|
2135 | _this.currentObservers = null;
|
2136 | _this.observers = [];
|
2137 | _this.isStopped = false;
|
2138 | _this.hasError = false;
|
2139 | _this.thrownError = null;
|
2140 | return _this;
|
2141 | }
|
2142 | Subject.prototype.lift = function (operator) {
|
2143 | var subject = new AnonymousSubject(this, this);
|
2144 | subject.operator = operator;
|
2145 | return subject;
|
2146 | };
|
2147 | Subject.prototype._throwIfClosed = function () {
|
2148 | if (this.closed) {
|
2149 | throw new ObjectUnsubscribedError();
|
2150 | }
|
2151 | };
|
2152 | Subject.prototype.next = function (value) {
|
2153 | var _this = this;
|
2154 | errorContext(function () {
|
2155 | var e_1, _a;
|
2156 | _this._throwIfClosed();
|
2157 | if (!_this.isStopped) {
|
2158 | if (!_this.currentObservers) {
|
2159 | _this.currentObservers = Array.from(_this.observers);
|
2160 | }
|
2161 | try {
|
2162 | for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
|
2163 | var observer = _c.value;
|
2164 | observer.next(value);
|
2165 | }
|
2166 | }
|
2167 | catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
2168 | finally {
|
2169 | try {
|
2170 | if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
2171 | }
|
2172 | finally { if (e_1) throw e_1.error; }
|
2173 | }
|
2174 | }
|
2175 | });
|
2176 | };
|
2177 | Subject.prototype.error = function (err) {
|
2178 | var _this = this;
|
2179 | errorContext(function () {
|
2180 | _this._throwIfClosed();
|
2181 | if (!_this.isStopped) {
|
2182 | _this.hasError = _this.isStopped = true;
|
2183 | _this.thrownError = err;
|
2184 | var observers = _this.observers;
|
2185 | while (observers.length) {
|
2186 | observers.shift().error(err);
|
2187 | }
|
2188 | }
|
2189 | });
|
2190 | };
|
2191 | Subject.prototype.complete = function () {
|
2192 | var _this = this;
|
2193 | errorContext(function () {
|
2194 | _this._throwIfClosed();
|
2195 | if (!_this.isStopped) {
|
2196 | _this.isStopped = true;
|
2197 | var observers = _this.observers;
|
2198 | while (observers.length) {
|
2199 | observers.shift().complete();
|
2200 | }
|
2201 | }
|
2202 | });
|
2203 | };
|
2204 | Subject.prototype.unsubscribe = function () {
|
2205 | this.isStopped = this.closed = true;
|
2206 | this.observers = this.currentObservers = null;
|
2207 | };
|
2208 | Object.defineProperty(Subject.prototype, "observed", {
|
2209 | get: function () {
|
2210 | var _a;
|
2211 | return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
2212 | },
|
2213 | enumerable: false,
|
2214 | configurable: true
|
2215 | });
|
2216 | Subject.prototype._trySubscribe = function (subscriber) {
|
2217 | this._throwIfClosed();
|
2218 | return _super.prototype._trySubscribe.call(this, subscriber);
|
2219 | };
|
2220 | Subject.prototype._subscribe = function (subscriber) {
|
2221 | this._throwIfClosed();
|
2222 | this._checkFinalizedStatuses(subscriber);
|
2223 | return this._innerSubscribe(subscriber);
|
2224 | };
|
2225 | Subject.prototype._innerSubscribe = function (subscriber) {
|
2226 | var _this = this;
|
2227 | var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;
|
2228 | if (hasError || isStopped) {
|
2229 | return EMPTY_SUBSCRIPTION;
|
2230 | }
|
2231 | this.currentObservers = null;
|
2232 | observers.push(subscriber);
|
2233 | return new Subscription(function () {
|
2234 | _this.currentObservers = null;
|
2235 | arrRemove(observers, subscriber);
|
2236 | });
|
2237 | };
|
2238 | Subject.prototype._checkFinalizedStatuses = function (subscriber) {
|
2239 | var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;
|
2240 | if (hasError) {
|
2241 | subscriber.error(thrownError);
|
2242 | }
|
2243 | else if (isStopped) {
|
2244 | subscriber.complete();
|
2245 | }
|
2246 | };
|
2247 | Subject.prototype.asObservable = function () {
|
2248 | var observable = new Observable();
|
2249 | observable.source = this;
|
2250 | return observable;
|
2251 | };
|
2252 | Subject.create = function (destination, source) {
|
2253 | return new AnonymousSubject(destination, source);
|
2254 | };
|
2255 | return Subject;
|
2256 | }(Observable));
|
2257 | var AnonymousSubject = (function (_super) {
|
2258 | __extends(AnonymousSubject, _super);
|
2259 | function AnonymousSubject(destination, source) {
|
2260 | var _this = _super.call(this) || this;
|
2261 | _this.destination = destination;
|
2262 | _this.source = source;
|
2263 | return _this;
|
2264 | }
|
2265 | AnonymousSubject.prototype.next = function (value) {
|
2266 | var _a, _b;
|
2267 | (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);
|
2268 | };
|
2269 | AnonymousSubject.prototype.error = function (err) {
|
2270 | var _a, _b;
|
2271 | (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
|
2272 | };
|
2273 | AnonymousSubject.prototype.complete = function () {
|
2274 | var _a, _b;
|
2275 | (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);
|
2276 | };
|
2277 | AnonymousSubject.prototype._subscribe = function (subscriber) {
|
2278 | var _a, _b;
|
2279 | return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
|
2280 | };
|
2281 | return AnonymousSubject;
|
2282 | }(Subject));
|
2283 |
|
2284 | var BehaviorSubject = (function (_super) {
|
2285 | __extends(BehaviorSubject, _super);
|
2286 | function BehaviorSubject(_value) {
|
2287 | var _this = _super.call(this) || this;
|
2288 | _this._value = _value;
|
2289 | return _this;
|
2290 | }
|
2291 | Object.defineProperty(BehaviorSubject.prototype, "value", {
|
2292 | get: function () {
|
2293 | return this.getValue();
|
2294 | },
|
2295 | enumerable: false,
|
2296 | configurable: true
|
2297 | });
|
2298 | BehaviorSubject.prototype._subscribe = function (subscriber) {
|
2299 | var subscription = _super.prototype._subscribe.call(this, subscriber);
|
2300 | !subscription.closed && subscriber.next(this._value);
|
2301 | return subscription;
|
2302 | };
|
2303 | BehaviorSubject.prototype.getValue = function () {
|
2304 | var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;
|
2305 | if (hasError) {
|
2306 | throw thrownError;
|
2307 | }
|
2308 | this._throwIfClosed();
|
2309 | return _value;
|
2310 | };
|
2311 | BehaviorSubject.prototype.next = function (value) {
|
2312 | _super.prototype.next.call(this, (this._value = value));
|
2313 | };
|
2314 | return BehaviorSubject;
|
2315 | }(Subject));
|
2316 |
|
2317 | var dateTimestampProvider = {
|
2318 | now: function () {
|
2319 | return (dateTimestampProvider.delegate || Date).now();
|
2320 | },
|
2321 | delegate: undefined,
|
2322 | };
|
2323 |
|
2324 | var ReplaySubject = (function (_super) {
|
2325 | __extends(ReplaySubject, _super);
|
2326 | function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {
|
2327 | if (_bufferSize === void 0) { _bufferSize = Infinity; }
|
2328 | if (_windowTime === void 0) { _windowTime = Infinity; }
|
2329 | if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }
|
2330 | var _this = _super.call(this) || this;
|
2331 | _this._bufferSize = _bufferSize;
|
2332 | _this._windowTime = _windowTime;
|
2333 | _this._timestampProvider = _timestampProvider;
|
2334 | _this._buffer = [];
|
2335 | _this._infiniteTimeWindow = true;
|
2336 | _this._infiniteTimeWindow = _windowTime === Infinity;
|
2337 | _this._bufferSize = Math.max(1, _bufferSize);
|
2338 | _this._windowTime = Math.max(1, _windowTime);
|
2339 | return _this;
|
2340 | }
|
2341 | ReplaySubject.prototype.next = function (value) {
|
2342 | var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;
|
2343 | if (!isStopped) {
|
2344 | _buffer.push(value);
|
2345 | !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
|
2346 | }
|
2347 | this._trimBuffer();
|
2348 | _super.prototype.next.call(this, value);
|
2349 | };
|
2350 | ReplaySubject.prototype._subscribe = function (subscriber) {
|
2351 | this._throwIfClosed();
|
2352 | this._trimBuffer();
|
2353 | var subscription = this._innerSubscribe(subscriber);
|
2354 | var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;
|
2355 | var copy = _buffer.slice();
|
2356 | for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {
|
2357 | subscriber.next(copy[i]);
|
2358 | }
|
2359 | this._checkFinalizedStatuses(subscriber);
|
2360 | return subscription;
|
2361 | };
|
2362 | ReplaySubject.prototype._trimBuffer = function () {
|
2363 | var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;
|
2364 | var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
|
2365 | _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
|
2366 | if (!_infiniteTimeWindow) {
|
2367 | var now = _timestampProvider.now();
|
2368 | var last = 0;
|
2369 | for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
|
2370 | last = i;
|
2371 | }
|
2372 | last && _buffer.splice(0, last + 1);
|
2373 | }
|
2374 | };
|
2375 | return ReplaySubject;
|
2376 | }(Subject));
|
2377 |
|
2378 | var Action = (function (_super) {
|
2379 | __extends(Action, _super);
|
2380 | function Action(scheduler, work) {
|
2381 | return _super.call(this) || this;
|
2382 | }
|
2383 | Action.prototype.schedule = function (state, delay) {
|
2384 | return this;
|
2385 | };
|
2386 | return Action;
|
2387 | }(Subscription));
|
2388 |
|
2389 | var intervalProvider = {
|
2390 | setInterval: function (handler, timeout) {
|
2391 | var args = [];
|
2392 | for (var _i = 2; _i < arguments.length; _i++) {
|
2393 | args[_i - 2] = arguments[_i];
|
2394 | }
|
2395 | return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));
|
2396 | },
|
2397 | clearInterval: function (handle) {
|
2398 | var delegate = intervalProvider.delegate;
|
2399 | return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);
|
2400 | },
|
2401 | delegate: undefined,
|
2402 | };
|
2403 |
|
2404 | var AsyncAction = (function (_super) {
|
2405 | __extends(AsyncAction, _super);
|
2406 | function AsyncAction(scheduler, work) {
|
2407 | var _this = _super.call(this, scheduler, work) || this;
|
2408 | _this.scheduler = scheduler;
|
2409 | _this.work = work;
|
2410 | _this.pending = false;
|
2411 | return _this;
|
2412 | }
|
2413 | AsyncAction.prototype.schedule = function (state, delay) {
|
2414 | var _a;
|
2415 | if (delay === void 0) { delay = 0; }
|
2416 | if (this.closed) {
|
2417 | return this;
|
2418 | }
|
2419 | this.state = state;
|
2420 | var id = this.id;
|
2421 | var scheduler = this.scheduler;
|
2422 | if (id != null) {
|
2423 | this.id = this.recycleAsyncId(scheduler, id, delay);
|
2424 | }
|
2425 | this.pending = true;
|
2426 | this.delay = delay;
|
2427 | this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);
|
2428 | return this;
|
2429 | };
|
2430 | AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {
|
2431 | if (delay === void 0) { delay = 0; }
|
2432 | return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);
|
2433 | };
|
2434 | AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {
|
2435 | if (delay === void 0) { delay = 0; }
|
2436 | if (delay != null && this.delay === delay && this.pending === false) {
|
2437 | return id;
|
2438 | }
|
2439 | if (id != null) {
|
2440 | intervalProvider.clearInterval(id);
|
2441 | }
|
2442 | return undefined;
|
2443 | };
|
2444 | AsyncAction.prototype.execute = function (state, delay) {
|
2445 | if (this.closed) {
|
2446 | return new Error('executing a cancelled action');
|
2447 | }
|
2448 | this.pending = false;
|
2449 | var error = this._execute(state, delay);
|
2450 | if (error) {
|
2451 | return error;
|
2452 | }
|
2453 | else if (this.pending === false && this.id != null) {
|
2454 | this.id = this.recycleAsyncId(this.scheduler, this.id, null);
|
2455 | }
|
2456 | };
|
2457 | AsyncAction.prototype._execute = function (state, _delay) {
|
2458 | var errored = false;
|
2459 | var errorValue;
|
2460 | try {
|
2461 | this.work(state);
|
2462 | }
|
2463 | catch (e) {
|
2464 | errored = true;
|
2465 | errorValue = e ? e : new Error('Scheduled action threw falsy error');
|
2466 | }
|
2467 | if (errored) {
|
2468 | this.unsubscribe();
|
2469 | return errorValue;
|
2470 | }
|
2471 | };
|
2472 | AsyncAction.prototype.unsubscribe = function () {
|
2473 | if (!this.closed) {
|
2474 | var _a = this, id = _a.id, scheduler = _a.scheduler;
|
2475 | var actions = scheduler.actions;
|
2476 | this.work = this.state = this.scheduler = null;
|
2477 | this.pending = false;
|
2478 | arrRemove(actions, this);
|
2479 | if (id != null) {
|
2480 | this.id = this.recycleAsyncId(scheduler, id, null);
|
2481 | }
|
2482 | this.delay = null;
|
2483 | _super.prototype.unsubscribe.call(this);
|
2484 | }
|
2485 | };
|
2486 | return AsyncAction;
|
2487 | }(Action));
|
2488 |
|
2489 | var nextHandle = 1;
|
2490 | var resolved;
|
2491 | var activeHandles = {};
|
2492 | function findAndClearHandle(handle) {
|
2493 | if (handle in activeHandles) {
|
2494 | delete activeHandles[handle];
|
2495 | return true;
|
2496 | }
|
2497 | return false;
|
2498 | }
|
2499 | var Immediate = {
|
2500 | setImmediate: function (cb) {
|
2501 | var handle = nextHandle++;
|
2502 | activeHandles[handle] = true;
|
2503 | if (!resolved) {
|
2504 | resolved = Promise.resolve();
|
2505 | }
|
2506 | resolved.then(function () { return findAndClearHandle(handle) && cb(); });
|
2507 | return handle;
|
2508 | },
|
2509 | clearImmediate: function (handle) {
|
2510 | findAndClearHandle(handle);
|
2511 | },
|
2512 | };
|
2513 |
|
2514 | var setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;
|
2515 | var immediateProvider = {
|
2516 | setImmediate: function () {
|
2517 | var args = [];
|
2518 | for (var _i = 0; _i < arguments.length; _i++) {
|
2519 | args[_i] = arguments[_i];
|
2520 | }
|
2521 | return (setImmediate).apply(void 0, __spreadArray([], __read(args)));
|
2522 | },
|
2523 | clearImmediate: function (handle) {
|
2524 | var delegate = immediateProvider.delegate;
|
2525 | return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);
|
2526 | },
|
2527 | delegate: undefined,
|
2528 | };
|
2529 |
|
2530 | var AsapAction = (function (_super) {
|
2531 | __extends(AsapAction, _super);
|
2532 | function AsapAction(scheduler, work) {
|
2533 | var _this = _super.call(this, scheduler, work) || this;
|
2534 | _this.scheduler = scheduler;
|
2535 | _this.work = work;
|
2536 | return _this;
|
2537 | }
|
2538 | AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {
|
2539 | if (delay === void 0) { delay = 0; }
|
2540 | if (delay !== null && delay > 0) {
|
2541 | return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
|
2542 | }
|
2543 | scheduler.actions.push(this);
|
2544 | return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));
|
2545 | };
|
2546 | AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
|
2547 | var _a;
|
2548 | if (delay === void 0) { delay = 0; }
|
2549 | if (delay != null ? delay > 0 : this.delay > 0) {
|
2550 | return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
|
2551 | }
|
2552 | var actions = scheduler.actions;
|
2553 | if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {
|
2554 | immediateProvider.clearImmediate(id);
|
2555 | if (scheduler._scheduled === id) {
|
2556 | scheduler._scheduled = undefined;
|
2557 | }
|
2558 | }
|
2559 | return undefined;
|
2560 | };
|
2561 | return AsapAction;
|
2562 | }(AsyncAction));
|
2563 |
|
2564 | var Scheduler = (function () {
|
2565 | function Scheduler(schedulerActionCtor, now) {
|
2566 | if (now === void 0) { now = Scheduler.now; }
|
2567 | this.schedulerActionCtor = schedulerActionCtor;
|
2568 | this.now = now;
|
2569 | }
|
2570 | Scheduler.prototype.schedule = function (work, delay, state) {
|
2571 | if (delay === void 0) { delay = 0; }
|
2572 | return new this.schedulerActionCtor(this, work).schedule(state, delay);
|
2573 | };
|
2574 | Scheduler.now = dateTimestampProvider.now;
|
2575 | return Scheduler;
|
2576 | }());
|
2577 |
|
2578 | var AsyncScheduler = (function (_super) {
|
2579 | __extends(AsyncScheduler, _super);
|
2580 | function AsyncScheduler(SchedulerAction, now) {
|
2581 | if (now === void 0) { now = Scheduler.now; }
|
2582 | var _this = _super.call(this, SchedulerAction, now) || this;
|
2583 | _this.actions = [];
|
2584 | _this._active = false;
|
2585 | return _this;
|
2586 | }
|
2587 | AsyncScheduler.prototype.flush = function (action) {
|
2588 | var actions = this.actions;
|
2589 | if (this._active) {
|
2590 | actions.push(action);
|
2591 | return;
|
2592 | }
|
2593 | var error;
|
2594 | this._active = true;
|
2595 | do {
|
2596 | if ((error = action.execute(action.state, action.delay))) {
|
2597 | break;
|
2598 | }
|
2599 | } while ((action = actions.shift()));
|
2600 | this._active = false;
|
2601 | if (error) {
|
2602 | while ((action = actions.shift())) {
|
2603 | action.unsubscribe();
|
2604 | }
|
2605 | throw error;
|
2606 | }
|
2607 | };
|
2608 | return AsyncScheduler;
|
2609 | }(Scheduler));
|
2610 |
|
2611 | var AsapScheduler = (function (_super) {
|
2612 | __extends(AsapScheduler, _super);
|
2613 | function AsapScheduler() {
|
2614 | return _super !== null && _super.apply(this, arguments) || this;
|
2615 | }
|
2616 | AsapScheduler.prototype.flush = function (action) {
|
2617 | this._active = true;
|
2618 | var flushId = this._scheduled;
|
2619 | this._scheduled = undefined;
|
2620 | var actions = this.actions;
|
2621 | var error;
|
2622 | action = action || actions.shift();
|
2623 | do {
|
2624 | if ((error = action.execute(action.state, action.delay))) {
|
2625 | break;
|
2626 | }
|
2627 | } while ((action = actions[0]) && action.id === flushId && actions.shift());
|
2628 | this._active = false;
|
2629 | if (error) {
|
2630 | while ((action = actions[0]) && action.id === flushId && actions.shift()) {
|
2631 | action.unsubscribe();
|
2632 | }
|
2633 | throw error;
|
2634 | }
|
2635 | };
|
2636 | return AsapScheduler;
|
2637 | }(AsyncScheduler));
|
2638 |
|
2639 | var asapScheduler = new AsapScheduler(AsapAction);
|
2640 |
|
2641 | var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });
|
2642 |
|
2643 | function isScheduler(value) {
|
2644 | return value && isFunction(value.schedule);
|
2645 | }
|
2646 |
|
2647 | function last(arr) {
|
2648 | return arr[arr.length - 1];
|
2649 | }
|
2650 | function popResultSelector(args) {
|
2651 | return isFunction(last(args)) ? args.pop() : undefined;
|
2652 | }
|
2653 | function popScheduler(args) {
|
2654 | return isScheduler(last(args)) ? args.pop() : undefined;
|
2655 | }
|
2656 |
|
2657 | var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
|
2658 |
|
2659 | function isPromise(value) {
|
2660 | return isFunction(value === null || value === void 0 ? void 0 : value.then);
|
2661 | }
|
2662 |
|
2663 | function isInteropObservable(input) {
|
2664 | return isFunction(input[observable]);
|
2665 | }
|
2666 |
|
2667 | function isAsyncIterable(obj) {
|
2668 | return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
|
2669 | }
|
2670 |
|
2671 | function createInvalidObservableTypeError(input) {
|
2672 | return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
|
2673 | }
|
2674 |
|
2675 | function getSymbolIterator() {
|
2676 | if (typeof Symbol !== 'function' || !Symbol.iterator) {
|
2677 | return '@@iterator';
|
2678 | }
|
2679 | return Symbol.iterator;
|
2680 | }
|
2681 | var iterator = getSymbolIterator();
|
2682 |
|
2683 | function isIterable(input) {
|
2684 | return isFunction(input === null || input === void 0 ? void 0 : input[iterator]);
|
2685 | }
|
2686 |
|
2687 | function readableStreamLikeToAsyncGenerator(readableStream) {
|
2688 | return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
|
2689 | var reader, _a, value, done;
|
2690 | return __generator(this, function (_b) {
|
2691 | switch (_b.label) {
|
2692 | case 0:
|
2693 | reader = readableStream.getReader();
|
2694 | _b.label = 1;
|
2695 | case 1:
|
2696 | _b.trys.push([1, , 9, 10]);
|
2697 | _b.label = 2;
|
2698 | case 2:
|
2699 | return [4, __await(reader.read())];
|
2700 | case 3:
|
2701 | _a = _b.sent(), value = _a.value, done = _a.done;
|
2702 | if (!done) return [3, 5];
|
2703 | return [4, __await(void 0)];
|
2704 | case 4: return [2, _b.sent()];
|
2705 | case 5: return [4, __await(value)];
|
2706 | case 6: return [4, _b.sent()];
|
2707 | case 7:
|
2708 | _b.sent();
|
2709 | return [3, 2];
|
2710 | case 8: return [3, 10];
|
2711 | case 9:
|
2712 | reader.releaseLock();
|
2713 | return [7];
|
2714 | case 10: return [2];
|
2715 | }
|
2716 | });
|
2717 | });
|
2718 | }
|
2719 | function isReadableStreamLike(obj) {
|
2720 | return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);
|
2721 | }
|
2722 |
|
2723 | function innerFrom(input) {
|
2724 | if (input instanceof Observable) {
|
2725 | return input;
|
2726 | }
|
2727 | if (input != null) {
|
2728 | if (isInteropObservable(input)) {
|
2729 | return fromInteropObservable(input);
|
2730 | }
|
2731 | if (isArrayLike(input)) {
|
2732 | return fromArrayLike(input);
|
2733 | }
|
2734 | if (isPromise(input)) {
|
2735 | return fromPromise(input);
|
2736 | }
|
2737 | if (isAsyncIterable(input)) {
|
2738 | return fromAsyncIterable(input);
|
2739 | }
|
2740 | if (isIterable(input)) {
|
2741 | return fromIterable(input);
|
2742 | }
|
2743 | if (isReadableStreamLike(input)) {
|
2744 | return fromReadableStreamLike(input);
|
2745 | }
|
2746 | }
|
2747 | throw createInvalidObservableTypeError(input);
|
2748 | }
|
2749 | function fromInteropObservable(obj) {
|
2750 | return new Observable(function (subscriber) {
|
2751 | var obs = obj[observable]();
|
2752 | if (isFunction(obs.subscribe)) {
|
2753 | return obs.subscribe(subscriber);
|
2754 | }
|
2755 | throw new TypeError('Provided object does not correctly implement Symbol.observable');
|
2756 | });
|
2757 | }
|
2758 | function fromArrayLike(array) {
|
2759 | return new Observable(function (subscriber) {
|
2760 | for (var i = 0; i < array.length && !subscriber.closed; i++) {
|
2761 | subscriber.next(array[i]);
|
2762 | }
|
2763 | subscriber.complete();
|
2764 | });
|
2765 | }
|
2766 | function fromPromise(promise) {
|
2767 | return new Observable(function (subscriber) {
|
2768 | promise
|
2769 | .then(function (value) {
|
2770 | if (!subscriber.closed) {
|
2771 | subscriber.next(value);
|
2772 | subscriber.complete();
|
2773 | }
|
2774 | }, function (err) { return subscriber.error(err); })
|
2775 | .then(null, reportUnhandledError);
|
2776 | });
|
2777 | }
|
2778 | function fromIterable(iterable) {
|
2779 | return new Observable(function (subscriber) {
|
2780 | var e_1, _a;
|
2781 | try {
|
2782 | for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
|
2783 | var value = iterable_1_1.value;
|
2784 | subscriber.next(value);
|
2785 | if (subscriber.closed) {
|
2786 | return;
|
2787 | }
|
2788 | }
|
2789 | }
|
2790 | catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
2791 | finally {
|
2792 | try {
|
2793 | if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);
|
2794 | }
|
2795 | finally { if (e_1) throw e_1.error; }
|
2796 | }
|
2797 | subscriber.complete();
|
2798 | });
|
2799 | }
|
2800 | function fromAsyncIterable(asyncIterable) {
|
2801 | return new Observable(function (subscriber) {
|
2802 | process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });
|
2803 | });
|
2804 | }
|
2805 | function fromReadableStreamLike(readableStream) {
|
2806 | return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));
|
2807 | }
|
2808 | function process(asyncIterable, subscriber) {
|
2809 | var asyncIterable_1, asyncIterable_1_1;
|
2810 | var e_2, _a;
|
2811 | return __awaiter(this, void 0, void 0, function () {
|
2812 | var value, e_2_1;
|
2813 | return __generator(this, function (_b) {
|
2814 | switch (_b.label) {
|
2815 | case 0:
|
2816 | _b.trys.push([0, 5, 6, 11]);
|
2817 | asyncIterable_1 = __asyncValues(asyncIterable);
|
2818 | _b.label = 1;
|
2819 | case 1: return [4, asyncIterable_1.next()];
|
2820 | case 2:
|
2821 | if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];
|
2822 | value = asyncIterable_1_1.value;
|
2823 | subscriber.next(value);
|
2824 | if (subscriber.closed) {
|
2825 | return [2];
|
2826 | }
|
2827 | _b.label = 3;
|
2828 | case 3: return [3, 1];
|
2829 | case 4: return [3, 11];
|
2830 | case 5:
|
2831 | e_2_1 = _b.sent();
|
2832 | e_2 = { error: e_2_1 };
|
2833 | return [3, 11];
|
2834 | case 6:
|
2835 | _b.trys.push([6, , 9, 10]);
|
2836 | if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];
|
2837 | return [4, _a.call(asyncIterable_1)];
|
2838 | case 7:
|
2839 | _b.sent();
|
2840 | _b.label = 8;
|
2841 | case 8: return [3, 10];
|
2842 | case 9:
|
2843 | if (e_2) throw e_2.error;
|
2844 | return [7];
|
2845 | case 10: return [7];
|
2846 | case 11:
|
2847 | subscriber.complete();
|
2848 | return [2];
|
2849 | }
|
2850 | });
|
2851 | });
|
2852 | }
|
2853 |
|
2854 | function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
|
2855 | if (delay === void 0) { delay = 0; }
|
2856 | if (repeat === void 0) { repeat = false; }
|
2857 | var scheduleSubscription = scheduler.schedule(function () {
|
2858 | work();
|
2859 | if (repeat) {
|
2860 | parentSubscription.add(this.schedule(null, delay));
|
2861 | }
|
2862 | else {
|
2863 | this.unsubscribe();
|
2864 | }
|
2865 | }, delay);
|
2866 | parentSubscription.add(scheduleSubscription);
|
2867 | if (!repeat) {
|
2868 | return scheduleSubscription;
|
2869 | }
|
2870 | }
|
2871 |
|
2872 | function observeOn(scheduler, delay) {
|
2873 | if (delay === void 0) { delay = 0; }
|
2874 | return operate(function (source, subscriber) {
|
2875 | source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));
|
2876 | });
|
2877 | }
|
2878 |
|
2879 | function subscribeOn(scheduler, delay) {
|
2880 | if (delay === void 0) { delay = 0; }
|
2881 | return operate(function (source, subscriber) {
|
2882 | subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));
|
2883 | });
|
2884 | }
|
2885 |
|
2886 | function scheduleObservable(input, scheduler) {
|
2887 | return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
|
2888 | }
|
2889 |
|
2890 | function schedulePromise(input, scheduler) {
|
2891 | return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
|
2892 | }
|
2893 |
|
2894 | function scheduleArray(input, scheduler) {
|
2895 | return new Observable(function (subscriber) {
|
2896 | var i = 0;
|
2897 | return scheduler.schedule(function () {
|
2898 | if (i === input.length) {
|
2899 | subscriber.complete();
|
2900 | }
|
2901 | else {
|
2902 | subscriber.next(input[i++]);
|
2903 | if (!subscriber.closed) {
|
2904 | this.schedule();
|
2905 | }
|
2906 | }
|
2907 | });
|
2908 | });
|
2909 | }
|
2910 |
|
2911 | function scheduleIterable(input, scheduler) {
|
2912 | return new Observable(function (subscriber) {
|
2913 | var iterator$1;
|
2914 | executeSchedule(subscriber, scheduler, function () {
|
2915 | iterator$1 = input[iterator]();
|
2916 | executeSchedule(subscriber, scheduler, function () {
|
2917 | var _a;
|
2918 | var value;
|
2919 | var done;
|
2920 | try {
|
2921 | (_a = iterator$1.next(), value = _a.value, done = _a.done);
|
2922 | }
|
2923 | catch (err) {
|
2924 | subscriber.error(err);
|
2925 | return;
|
2926 | }
|
2927 | if (done) {
|
2928 | subscriber.complete();
|
2929 | }
|
2930 | else {
|
2931 | subscriber.next(value);
|
2932 | }
|
2933 | }, 0, true);
|
2934 | });
|
2935 | return function () { return isFunction(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return(); };
|
2936 | });
|
2937 | }
|
2938 |
|
2939 | function scheduleAsyncIterable(input, scheduler) {
|
2940 | if (!input) {
|
2941 | throw new Error('Iterable cannot be null');
|
2942 | }
|
2943 | return new Observable(function (subscriber) {
|
2944 | executeSchedule(subscriber, scheduler, function () {
|
2945 | var iterator = input[Symbol.asyncIterator]();
|
2946 | executeSchedule(subscriber, scheduler, function () {
|
2947 | iterator.next().then(function (result) {
|
2948 | if (result.done) {
|
2949 | subscriber.complete();
|
2950 | }
|
2951 | else {
|
2952 | subscriber.next(result.value);
|
2953 | }
|
2954 | });
|
2955 | }, 0, true);
|
2956 | });
|
2957 | });
|
2958 | }
|
2959 |
|
2960 | function scheduleReadableStreamLike(input, scheduler) {
|
2961 | return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);
|
2962 | }
|
2963 |
|
2964 | function scheduled(input, scheduler) {
|
2965 | if (input != null) {
|
2966 | if (isInteropObservable(input)) {
|
2967 | return scheduleObservable(input, scheduler);
|
2968 | }
|
2969 | if (isArrayLike(input)) {
|
2970 | return scheduleArray(input, scheduler);
|
2971 | }
|
2972 | if (isPromise(input)) {
|
2973 | return schedulePromise(input, scheduler);
|
2974 | }
|
2975 | if (isAsyncIterable(input)) {
|
2976 | return scheduleAsyncIterable(input, scheduler);
|
2977 | }
|
2978 | if (isIterable(input)) {
|
2979 | return scheduleIterable(input, scheduler);
|
2980 | }
|
2981 | if (isReadableStreamLike(input)) {
|
2982 | return scheduleReadableStreamLike(input, scheduler);
|
2983 | }
|
2984 | }
|
2985 | throw createInvalidObservableTypeError(input);
|
2986 | }
|
2987 |
|
2988 | function from(input, scheduler) {
|
2989 | return scheduler ? scheduled(input, scheduler) : innerFrom(input);
|
2990 | }
|
2991 |
|
2992 | function of() {
|
2993 | var args = [];
|
2994 | for (var _i = 0; _i < arguments.length; _i++) {
|
2995 | args[_i] = arguments[_i];
|
2996 | }
|
2997 | var scheduler = popScheduler(args);
|
2998 | return from(args, scheduler);
|
2999 | }
|
3000 |
|
3001 | var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {
|
3002 | _super(this);
|
3003 | this.name = 'EmptyError';
|
3004 | this.message = 'no elements in sequence';
|
3005 | }; });
|
3006 |
|
3007 | function firstValueFrom(source, config) {
|
3008 | var hasConfig = typeof config === 'object';
|
3009 | return new Promise(function (resolve, reject) {
|
3010 | var subscriber = new SafeSubscriber({
|
3011 | next: function (value) {
|
3012 | resolve(value);
|
3013 | subscriber.unsubscribe();
|
3014 | },
|
3015 | error: reject,
|
3016 | complete: function () {
|
3017 | if (hasConfig) {
|
3018 | resolve(config.defaultValue);
|
3019 | }
|
3020 | else {
|
3021 | reject(new EmptyError());
|
3022 | }
|
3023 | },
|
3024 | });
|
3025 | source.subscribe(subscriber);
|
3026 | });
|
3027 | }
|
3028 |
|
3029 | function map(project, thisArg) {
|
3030 | return operate(function (source, subscriber) {
|
3031 | var index = 0;
|
3032 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3033 | subscriber.next(project.call(thisArg, value, index++));
|
3034 | }));
|
3035 | });
|
3036 | }
|
3037 |
|
3038 | var isArray$1 = Array.isArray;
|
3039 | function callOrApply(fn, args) {
|
3040 | return isArray$1(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);
|
3041 | }
|
3042 | function mapOneOrManyArgs(fn) {
|
3043 | return map(function (args) { return callOrApply(fn, args); });
|
3044 | }
|
3045 |
|
3046 | var isArray = Array.isArray;
|
3047 | var getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;
|
3048 | function argsArgArrayOrObject(args) {
|
3049 | if (args.length === 1) {
|
3050 | var first_1 = args[0];
|
3051 | if (isArray(first_1)) {
|
3052 | return { args: first_1, keys: null };
|
3053 | }
|
3054 | if (isPOJO(first_1)) {
|
3055 | var keys = getKeys(first_1);
|
3056 | return {
|
3057 | args: keys.map(function (key) { return first_1[key]; }),
|
3058 | keys: keys,
|
3059 | };
|
3060 | }
|
3061 | }
|
3062 | return { args: args, keys: null };
|
3063 | }
|
3064 | function isPOJO(obj) {
|
3065 | return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;
|
3066 | }
|
3067 |
|
3068 | function createObject(keys, values) {
|
3069 | return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});
|
3070 | }
|
3071 |
|
3072 | function combineLatest() {
|
3073 | var args = [];
|
3074 | for (var _i = 0; _i < arguments.length; _i++) {
|
3075 | args[_i] = arguments[_i];
|
3076 | }
|
3077 | var scheduler = popScheduler(args);
|
3078 | var resultSelector = popResultSelector(args);
|
3079 | var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;
|
3080 | if (observables.length === 0) {
|
3081 | return from([], scheduler);
|
3082 | }
|
3083 | var result = new Observable(combineLatestInit(observables, scheduler, keys
|
3084 | ?
|
3085 | function (values) { return createObject(keys, values); }
|
3086 | :
|
3087 | identity$1));
|
3088 | return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;
|
3089 | }
|
3090 | function combineLatestInit(observables, scheduler, valueTransform) {
|
3091 | if (valueTransform === void 0) { valueTransform = identity$1; }
|
3092 | return function (subscriber) {
|
3093 | maybeSchedule(scheduler, function () {
|
3094 | var length = observables.length;
|
3095 | var values = new Array(length);
|
3096 | var active = length;
|
3097 | var remainingFirstValues = length;
|
3098 | var _loop_1 = function (i) {
|
3099 | maybeSchedule(scheduler, function () {
|
3100 | var source = from(observables[i], scheduler);
|
3101 | var hasFirstValue = false;
|
3102 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3103 | values[i] = value;
|
3104 | if (!hasFirstValue) {
|
3105 | hasFirstValue = true;
|
3106 | remainingFirstValues--;
|
3107 | }
|
3108 | if (!remainingFirstValues) {
|
3109 | subscriber.next(valueTransform(values.slice()));
|
3110 | }
|
3111 | }, function () {
|
3112 | if (!--active) {
|
3113 | subscriber.complete();
|
3114 | }
|
3115 | }));
|
3116 | }, subscriber);
|
3117 | };
|
3118 | for (var i = 0; i < length; i++) {
|
3119 | _loop_1(i);
|
3120 | }
|
3121 | }, subscriber);
|
3122 | };
|
3123 | }
|
3124 | function maybeSchedule(scheduler, execute, subscription) {
|
3125 | if (scheduler) {
|
3126 | executeSchedule(subscription, scheduler, execute);
|
3127 | }
|
3128 | else {
|
3129 | execute();
|
3130 | }
|
3131 | }
|
3132 |
|
3133 | function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {
|
3134 | var buffer = [];
|
3135 | var active = 0;
|
3136 | var index = 0;
|
3137 | var isComplete = false;
|
3138 | var checkComplete = function () {
|
3139 | if (isComplete && !buffer.length && !active) {
|
3140 | subscriber.complete();
|
3141 | }
|
3142 | };
|
3143 | var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };
|
3144 | var doInnerSub = function (value) {
|
3145 | expand && subscriber.next(value);
|
3146 | active++;
|
3147 | var innerComplete = false;
|
3148 | innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {
|
3149 | onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
|
3150 | if (expand) {
|
3151 | outerNext(innerValue);
|
3152 | }
|
3153 | else {
|
3154 | subscriber.next(innerValue);
|
3155 | }
|
3156 | }, function () {
|
3157 | innerComplete = true;
|
3158 | }, undefined, function () {
|
3159 | if (innerComplete) {
|
3160 | try {
|
3161 | active--;
|
3162 | var _loop_1 = function () {
|
3163 | var bufferedValue = buffer.shift();
|
3164 | if (innerSubScheduler) {
|
3165 | executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });
|
3166 | }
|
3167 | else {
|
3168 | doInnerSub(bufferedValue);
|
3169 | }
|
3170 | };
|
3171 | while (buffer.length && active < concurrent) {
|
3172 | _loop_1();
|
3173 | }
|
3174 | checkComplete();
|
3175 | }
|
3176 | catch (err) {
|
3177 | subscriber.error(err);
|
3178 | }
|
3179 | }
|
3180 | }));
|
3181 | };
|
3182 | source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {
|
3183 | isComplete = true;
|
3184 | checkComplete();
|
3185 | }));
|
3186 | return function () {
|
3187 | additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
|
3188 | };
|
3189 | }
|
3190 |
|
3191 | function mergeMap(project, resultSelector, concurrent) {
|
3192 | if (concurrent === void 0) { concurrent = Infinity; }
|
3193 | if (isFunction(resultSelector)) {
|
3194 | return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);
|
3195 | }
|
3196 | else if (typeof resultSelector === 'number') {
|
3197 | concurrent = resultSelector;
|
3198 | }
|
3199 | return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });
|
3200 | }
|
3201 |
|
3202 | function mergeAll(concurrent) {
|
3203 | if (concurrent === void 0) { concurrent = Infinity; }
|
3204 | return mergeMap(identity$1, concurrent);
|
3205 | }
|
3206 |
|
3207 | function concatAll() {
|
3208 | return mergeAll(1);
|
3209 | }
|
3210 |
|
3211 | function concat() {
|
3212 | var args = [];
|
3213 | for (var _i = 0; _i < arguments.length; _i++) {
|
3214 | args[_i] = arguments[_i];
|
3215 | }
|
3216 | return concatAll()(from(args, popScheduler(args)));
|
3217 | }
|
3218 |
|
3219 | function filter(predicate, thisArg) {
|
3220 | return operate(function (source, subscriber) {
|
3221 | var index = 0;
|
3222 | source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));
|
3223 | });
|
3224 | }
|
3225 |
|
3226 | function catchError(selector) {
|
3227 | return operate(function (source, subscriber) {
|
3228 | var innerSub = null;
|
3229 | var syncUnsub = false;
|
3230 | var handledResult;
|
3231 | innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {
|
3232 | handledResult = innerFrom(selector(err, catchError(selector)(source)));
|
3233 | if (innerSub) {
|
3234 | innerSub.unsubscribe();
|
3235 | innerSub = null;
|
3236 | handledResult.subscribe(subscriber);
|
3237 | }
|
3238 | else {
|
3239 | syncUnsub = true;
|
3240 | }
|
3241 | }));
|
3242 | if (syncUnsub) {
|
3243 | innerSub.unsubscribe();
|
3244 | innerSub = null;
|
3245 | handledResult.subscribe(subscriber);
|
3246 | }
|
3247 | });
|
3248 | }
|
3249 |
|
3250 | function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {
|
3251 | return function (source, subscriber) {
|
3252 | var hasState = hasSeed;
|
3253 | var state = seed;
|
3254 | var index = 0;
|
3255 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3256 | var i = index++;
|
3257 | state = hasState
|
3258 | ?
|
3259 | accumulator(state, value, i)
|
3260 | :
|
3261 | ((hasState = true), value);
|
3262 | emitOnNext && subscriber.next(state);
|
3263 | }, emitBeforeComplete &&
|
3264 | (function () {
|
3265 | hasState && subscriber.next(state);
|
3266 | subscriber.complete();
|
3267 | })));
|
3268 | };
|
3269 | }
|
3270 |
|
3271 | function reduce(accumulator, seed) {
|
3272 | return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));
|
3273 | }
|
3274 |
|
3275 | var arrReducer = function (arr, value) { return (arr.push(value), arr); };
|
3276 | function toArray() {
|
3277 | return operate(function (source, subscriber) {
|
3278 | reduce(arrReducer, [])(source).subscribe(subscriber);
|
3279 | });
|
3280 | }
|
3281 |
|
3282 | function fromSubscribable(subscribable) {
|
3283 | return new Observable(function (subscriber) { return subscribable.subscribe(subscriber); });
|
3284 | }
|
3285 |
|
3286 | var DEFAULT_CONFIG = {
|
3287 | connector: function () { return new Subject(); },
|
3288 | };
|
3289 | function connect(selector, config) {
|
3290 | if (config === void 0) { config = DEFAULT_CONFIG; }
|
3291 | var connector = config.connector;
|
3292 | return operate(function (source, subscriber) {
|
3293 | var subject = connector();
|
3294 | innerFrom(selector(fromSubscribable(subject))).subscribe(subscriber);
|
3295 | subscriber.add(source.subscribe(subject));
|
3296 | });
|
3297 | }
|
3298 |
|
3299 | function defaultIfEmpty(defaultValue) {
|
3300 | return operate(function (source, subscriber) {
|
3301 | var hasValue = false;
|
3302 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3303 | hasValue = true;
|
3304 | subscriber.next(value);
|
3305 | }, function () {
|
3306 | if (!hasValue) {
|
3307 | subscriber.next(defaultValue);
|
3308 | }
|
3309 | subscriber.complete();
|
3310 | }));
|
3311 | });
|
3312 | }
|
3313 |
|
3314 | function take(count) {
|
3315 | return count <= 0
|
3316 | ?
|
3317 | function () { return EMPTY; }
|
3318 | : operate(function (source, subscriber) {
|
3319 | var seen = 0;
|
3320 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3321 | if (++seen <= count) {
|
3322 | subscriber.next(value);
|
3323 | if (count <= seen) {
|
3324 | subscriber.complete();
|
3325 | }
|
3326 | }
|
3327 | }));
|
3328 | });
|
3329 | }
|
3330 |
|
3331 | function distinctUntilChanged(comparator, keySelector) {
|
3332 | if (keySelector === void 0) { keySelector = identity$1; }
|
3333 | comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;
|
3334 | return operate(function (source, subscriber) {
|
3335 | var previousKey;
|
3336 | var first = true;
|
3337 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3338 | var currentKey = keySelector(value);
|
3339 | if (first || !comparator(previousKey, currentKey)) {
|
3340 | first = false;
|
3341 | previousKey = currentKey;
|
3342 | subscriber.next(value);
|
3343 | }
|
3344 | }));
|
3345 | });
|
3346 | }
|
3347 | function defaultCompare(a, b) {
|
3348 | return a === b;
|
3349 | }
|
3350 |
|
3351 | function throwIfEmpty(errorFactory) {
|
3352 | if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }
|
3353 | return operate(function (source, subscriber) {
|
3354 | var hasValue = false;
|
3355 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3356 | hasValue = true;
|
3357 | subscriber.next(value);
|
3358 | }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));
|
3359 | });
|
3360 | }
|
3361 | function defaultErrorFactory() {
|
3362 | return new EmptyError();
|
3363 | }
|
3364 |
|
3365 | function first(predicate, defaultValue) {
|
3366 | var hasDefaultValue = arguments.length >= 2;
|
3367 | return function (source) {
|
3368 | return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity$1, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));
|
3369 | };
|
3370 | }
|
3371 |
|
3372 | function multicast(subjectOrSubjectFactory, selector) {
|
3373 | var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };
|
3374 | if (isFunction(selector)) {
|
3375 | return connect(selector, {
|
3376 | connector: subjectFactory,
|
3377 | });
|
3378 | }
|
3379 | return function (source) { return new ConnectableObservable(source, subjectFactory); };
|
3380 | }
|
3381 |
|
3382 | function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {
|
3383 | if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {
|
3384 | timestampProvider = selectorOrScheduler;
|
3385 | }
|
3386 | var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;
|
3387 | return function (source) { return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };
|
3388 | }
|
3389 |
|
3390 | function startWith() {
|
3391 | var values = [];
|
3392 | for (var _i = 0; _i < arguments.length; _i++) {
|
3393 | values[_i] = arguments[_i];
|
3394 | }
|
3395 | var scheduler = popScheduler(values);
|
3396 | return operate(function (source, subscriber) {
|
3397 | (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);
|
3398 | });
|
3399 | }
|
3400 |
|
3401 | function switchMap(project, resultSelector) {
|
3402 | return operate(function (source, subscriber) {
|
3403 | var innerSubscriber = null;
|
3404 | var index = 0;
|
3405 | var isComplete = false;
|
3406 | var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };
|
3407 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3408 | innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();
|
3409 | var innerIndex = 0;
|
3410 | var outerIndex = index++;
|
3411 | innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {
|
3412 | innerSubscriber = null;
|
3413 | checkComplete();
|
3414 | })));
|
3415 | }, function () {
|
3416 | isComplete = true;
|
3417 | checkComplete();
|
3418 | }));
|
3419 | });
|
3420 | }
|
3421 |
|
3422 | function tap(observerOrNext, error, complete) {
|
3423 | var tapObserver = isFunction(observerOrNext) || error || complete
|
3424 | ?
|
3425 | { next: observerOrNext, error: error, complete: complete }
|
3426 | : observerOrNext;
|
3427 | return tapObserver
|
3428 | ? operate(function (source, subscriber) {
|
3429 | var _a;
|
3430 | (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
|
3431 | var isUnsub = true;
|
3432 | source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
3433 | var _a;
|
3434 | (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);
|
3435 | subscriber.next(value);
|
3436 | }, function () {
|
3437 | var _a;
|
3438 | isUnsub = false;
|
3439 | (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
|
3440 | subscriber.complete();
|
3441 | }, function (err) {
|
3442 | var _a;
|
3443 | isUnsub = false;
|
3444 | (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);
|
3445 | subscriber.error(err);
|
3446 | }, function () {
|
3447 | var _a, _b;
|
3448 | if (isUnsub) {
|
3449 | (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
|
3450 | }
|
3451 | (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
|
3452 | }));
|
3453 | })
|
3454 | :
|
3455 | identity$1;
|
3456 | }
|
3457 |
|
3458 | const l$4 = util.logger('api/util');
|
3459 |
|
3460 | function filterEvents(txHash, { block: { extrinsics, header } }, allEvents, status) {
|
3461 | for (const [txIndex, x] of extrinsics.entries()) {
|
3462 | if (x.hash.eq(txHash)) {
|
3463 | return {
|
3464 | blockNumber: util.isCompact(header.number) ? header.number.unwrap() : header.number,
|
3465 | events: allEvents.filter(({ phase }) => phase.isApplyExtrinsic &&
|
3466 | phase.asApplyExtrinsic.eqn(txIndex)),
|
3467 | txIndex
|
3468 | };
|
3469 | }
|
3470 | }
|
3471 | if (status.isInBlock) {
|
3472 | const allHashes = extrinsics.map((x) => x.hash.toHex());
|
3473 | l$4.warn(`block ${header.hash.toHex()}: Unable to find extrinsic ${txHash.toHex()} inside ${allHashes.join(', ')}`);
|
3474 | }
|
3475 | return {};
|
3476 | }
|
3477 |
|
3478 | function isKeyringPair(account) {
|
3479 | return util.isFunction(account.sign);
|
3480 | }
|
3481 |
|
3482 | function refCountDelay(delay = 1750) {
|
3483 | return (source) => {
|
3484 | let [state, refCount, connection, scheduler] = [0, 0, Subscription.EMPTY, Subscription.EMPTY];
|
3485 | return new Observable((ob) => {
|
3486 | source.subscribe(ob);
|
3487 | if (refCount++ === 0) {
|
3488 | if (state === 1) {
|
3489 | scheduler.unsubscribe();
|
3490 | }
|
3491 | else {
|
3492 | connection = source.connect();
|
3493 | }
|
3494 | state = 3;
|
3495 | }
|
3496 | return () => {
|
3497 | if (--refCount === 0) {
|
3498 | if (state === 2) {
|
3499 | state = 0;
|
3500 | scheduler.unsubscribe();
|
3501 | }
|
3502 | else {
|
3503 | state = 1;
|
3504 | scheduler = asapScheduler.schedule(() => {
|
3505 | state = 0;
|
3506 | connection.unsubscribe();
|
3507 | }, delay);
|
3508 | }
|
3509 | }
|
3510 | };
|
3511 | });
|
3512 | };
|
3513 | }
|
3514 |
|
3515 | function CMP(a, b) {
|
3516 | return util.stringify({ t: a }) === util.stringify({ t: b });
|
3517 | }
|
3518 | function ERR(error) {
|
3519 | throw error;
|
3520 | }
|
3521 | function NOOP() {
|
3522 | }
|
3523 | function drr({ delay, skipChange = false, skipTimeout = false } = {}) {
|
3524 | return (source$) => source$.pipe(catchError(ERR), skipChange
|
3525 | ? tap(NOOP)
|
3526 | : distinctUntilChanged(CMP),
|
3527 | publishReplay(1), skipTimeout
|
3528 | ? refCount()
|
3529 | : refCountDelay(delay));
|
3530 | }
|
3531 |
|
3532 | function memo(instanceId, inner) {
|
3533 | const options = { getInstanceId: () => instanceId };
|
3534 | const cached = util.memoize((...params) => new Observable((observer) => {
|
3535 | const subscription = inner(...params).subscribe(observer);
|
3536 | return () => {
|
3537 | cached.unmemoize(...params);
|
3538 | subscription.unsubscribe();
|
3539 | };
|
3540 | }).pipe(drr()), options);
|
3541 | return cached;
|
3542 | }
|
3543 |
|
3544 | const l$3 = util.logger('rpc-core');
|
3545 | const EMPTY_META = {
|
3546 | fallback: undefined,
|
3547 | modifier: { isOptional: true },
|
3548 | type: {
|
3549 | asMap: { linked: { isTrue: false } },
|
3550 | isMap: false
|
3551 | }
|
3552 | };
|
3553 | function logErrorMessage(method, { noErrorLog, params, type }, error) {
|
3554 | if (noErrorLog) {
|
3555 | return;
|
3556 | }
|
3557 | l$3.error(`${method}(${params.map(({ isOptional, name, type }) => `${name}${isOptional ? '?' : ''}: ${type}`).join(', ')}): ${type}:: ${error.message}`);
|
3558 | }
|
3559 | function isTreatAsHex(key) {
|
3560 | return ['0x3a636f6465'].includes(key.toHex());
|
3561 | }
|
3562 | class RpcCore {
|
3563 | __internal__instanceId;
|
3564 | __internal__isPedantic;
|
3565 | __internal__registryDefault;
|
3566 | __internal__storageCache = new Map();
|
3567 | __internal__storageCacheHits = 0;
|
3568 | __internal__storageCacheSize = 0;
|
3569 | __internal__getBlockRegistry;
|
3570 | __internal__getBlockHash;
|
3571 | mapping = new Map();
|
3572 | provider;
|
3573 | sections = [];
|
3574 | constructor(instanceId, registry, { isPedantic = true, provider, userRpc = {} }) {
|
3575 | if (!provider || !util.isFunction(provider.send)) {
|
3576 | throw new Error('Expected Provider to API create');
|
3577 | }
|
3578 | this.__internal__instanceId = instanceId;
|
3579 | this.__internal__isPedantic = isPedantic;
|
3580 | this.__internal__registryDefault = registry;
|
3581 | this.provider = provider;
|
3582 | const sectionNames = Object.keys(types.rpcDefinitions);
|
3583 | this.sections.push(...sectionNames);
|
3584 | this.addUserInterfaces(userRpc);
|
3585 | }
|
3586 | get isConnected() {
|
3587 | return this.provider.isConnected;
|
3588 | }
|
3589 | connect() {
|
3590 | return this.provider.connect();
|
3591 | }
|
3592 | disconnect() {
|
3593 | return this.provider.disconnect();
|
3594 | }
|
3595 | get stats() {
|
3596 | const stats = this.provider.stats;
|
3597 | return stats
|
3598 | ? {
|
3599 | ...stats,
|
3600 | core: {
|
3601 | cacheHits: this.__internal__storageCacheHits,
|
3602 | cacheSize: this.__internal__storageCacheSize
|
3603 | }
|
3604 | }
|
3605 | : undefined;
|
3606 | }
|
3607 | setRegistrySwap(registrySwap) {
|
3608 | this.__internal__getBlockRegistry = util.memoize(registrySwap, {
|
3609 | getInstanceId: () => this.__internal__instanceId
|
3610 | });
|
3611 | }
|
3612 | setResolveBlockHash(resolveBlockHash) {
|
3613 | this.__internal__getBlockHash = util.memoize(resolveBlockHash, {
|
3614 | getInstanceId: () => this.__internal__instanceId
|
3615 | });
|
3616 | }
|
3617 | addUserInterfaces(userRpc) {
|
3618 | this.sections.push(...Object.keys(userRpc).filter((k) => !this.sections.includes(k)));
|
3619 | for (let s = 0, scount = this.sections.length; s < scount; s++) {
|
3620 | const section = this.sections[s];
|
3621 | const defs = util.objectSpread({}, types.rpcDefinitions[section], userRpc[section]);
|
3622 | const methods = Object.keys(defs);
|
3623 | for (let m = 0, mcount = methods.length; m < mcount; m++) {
|
3624 | const method = methods[m];
|
3625 | const def = defs[method];
|
3626 | const jsonrpc = def.endpoint || `${section}_${method}`;
|
3627 | if (!this.mapping.has(jsonrpc)) {
|
3628 | const isSubscription = !!def.pubsub;
|
3629 | if (!this[section]) {
|
3630 | this[section] = {};
|
3631 | }
|
3632 | this.mapping.set(jsonrpc, util.objectSpread({}, def, { isSubscription, jsonrpc, method, section }));
|
3633 | util.lazyMethod(this[section], method, () => isSubscription
|
3634 | ? this._createMethodSubscribe(section, method, def)
|
3635 | : this._createMethodSend(section, method, def));
|
3636 | }
|
3637 | }
|
3638 | }
|
3639 | }
|
3640 | _memomize(creator, def) {
|
3641 | const memoOpts = { getInstanceId: () => this.__internal__instanceId };
|
3642 | const memoized = util.memoize(creator(true), memoOpts);
|
3643 | memoized.raw = util.memoize(creator(false), memoOpts);
|
3644 | memoized.meta = def;
|
3645 | return memoized;
|
3646 | }
|
3647 | _formatResult(isScale, registry, blockHash, method, def, params, result) {
|
3648 | return isScale
|
3649 | ? this._formatOutput(registry, blockHash, method, def, params, result)
|
3650 | : result;
|
3651 | }
|
3652 | _createMethodSend(section, method, def) {
|
3653 | const rpcName = def.endpoint || `${section}_${method}`;
|
3654 | const hashIndex = def.params.findIndex(({ isHistoric }) => isHistoric);
|
3655 | let memoized = null;
|
3656 | const callWithRegistry = async (isScale, values) => {
|
3657 | const blockId = hashIndex === -1
|
3658 | ? null
|
3659 | : values[hashIndex];
|
3660 | const blockHash = blockId && def.params[hashIndex].type === 'BlockNumber'
|
3661 | ? await this.__internal__getBlockHash?.(blockId)
|
3662 | : blockId;
|
3663 | const { registry } = isScale && blockHash && this.__internal__getBlockRegistry
|
3664 | ? await this.__internal__getBlockRegistry(util.u8aToU8a(blockHash))
|
3665 | : { registry: this.__internal__registryDefault };
|
3666 | const params = this._formatParams(registry, null, def, values);
|
3667 | const result = await this.provider.send(rpcName, params.map((p) => p.toJSON()), !!blockHash);
|
3668 | return this._formatResult(isScale, registry, blockHash, method, def, params, result);
|
3669 | };
|
3670 | const creator = (isScale) => (...values) => {
|
3671 | const isDelayed = isScale && hashIndex !== -1 && !!values[hashIndex];
|
3672 | return new Observable((observer) => {
|
3673 | callWithRegistry(isScale, values)
|
3674 | .then((value) => {
|
3675 | observer.next(value);
|
3676 | observer.complete();
|
3677 | })
|
3678 | .catch((error) => {
|
3679 | logErrorMessage(method, def, error);
|
3680 | observer.error(error);
|
3681 | observer.complete();
|
3682 | });
|
3683 | return () => {
|
3684 | if (isScale) {
|
3685 | memoized?.unmemoize(...values);
|
3686 | }
|
3687 | else {
|
3688 | memoized?.raw.unmemoize(...values);
|
3689 | }
|
3690 | };
|
3691 | }).pipe(
|
3692 | publishReplay(1),
|
3693 | isDelayed
|
3694 | ? refCountDelay()
|
3695 | : refCount());
|
3696 | };
|
3697 | memoized = this._memomize(creator, def);
|
3698 | return memoized;
|
3699 | }
|
3700 | _createSubscriber({ paramsJson, subName, subType, update }, errorHandler) {
|
3701 | return new Promise((resolve, reject) => {
|
3702 | this.provider
|
3703 | .subscribe(subType, subName, paramsJson, update)
|
3704 | .then(resolve)
|
3705 | .catch((error) => {
|
3706 | errorHandler(error);
|
3707 | reject(error);
|
3708 | });
|
3709 | });
|
3710 | }
|
3711 | _createMethodSubscribe(section, method, def) {
|
3712 | const [updateType, subMethod, unsubMethod] = def.pubsub;
|
3713 | const subName = `${section}_${subMethod}`;
|
3714 | const unsubName = `${section}_${unsubMethod}`;
|
3715 | const subType = `${section}_${updateType}`;
|
3716 | let memoized = null;
|
3717 | const creator = (isScale) => (...values) => {
|
3718 | return new Observable((observer) => {
|
3719 | let subscriptionPromise = Promise.resolve(null);
|
3720 | const registry = this.__internal__registryDefault;
|
3721 | const errorHandler = (error) => {
|
3722 | logErrorMessage(method, def, error);
|
3723 | observer.error(error);
|
3724 | };
|
3725 | try {
|
3726 | const params = this._formatParams(registry, null, def, values);
|
3727 | const update = (error, result) => {
|
3728 | if (error) {
|
3729 | logErrorMessage(method, def, error);
|
3730 | return;
|
3731 | }
|
3732 | try {
|
3733 | observer.next(this._formatResult(isScale, registry, null, method, def, params, result));
|
3734 | }
|
3735 | catch (error) {
|
3736 | observer.error(error);
|
3737 | }
|
3738 | };
|
3739 | subscriptionPromise = this._createSubscriber({ paramsJson: params.map((p) => p.toJSON()), subName, subType, update }, errorHandler);
|
3740 | }
|
3741 | catch (error) {
|
3742 | errorHandler(error);
|
3743 | }
|
3744 | return () => {
|
3745 | if (isScale) {
|
3746 | memoized?.unmemoize(...values);
|
3747 | }
|
3748 | else {
|
3749 | memoized?.raw.unmemoize(...values);
|
3750 | }
|
3751 | subscriptionPromise
|
3752 | .then((subscriptionId) => util.isNull(subscriptionId)
|
3753 | ? Promise.resolve(false)
|
3754 | : this.provider.unsubscribe(subType, unsubName, subscriptionId))
|
3755 | .catch((error) => logErrorMessage(method, def, error));
|
3756 | };
|
3757 | }).pipe(drr());
|
3758 | };
|
3759 | memoized = this._memomize(creator, def);
|
3760 | return memoized;
|
3761 | }
|
3762 | _formatParams(registry, blockHash, def, inputs) {
|
3763 | const count = inputs.length;
|
3764 | const reqCount = def.params.filter(({ isOptional }) => !isOptional).length;
|
3765 | if (count < reqCount || count > def.params.length) {
|
3766 | throw new Error(`Expected ${def.params.length} parameters${reqCount === def.params.length ? '' : ` (${def.params.length - reqCount} optional)`}, ${count} found instead`);
|
3767 | }
|
3768 | const params = new Array(count);
|
3769 | for (let i = 0; i < count; i++) {
|
3770 | params[i] = registry.createTypeUnsafe(def.params[i].type, [inputs[i]], { blockHash });
|
3771 | }
|
3772 | return params;
|
3773 | }
|
3774 | _formatOutput(registry, blockHash, method, rpc, params, result) {
|
3775 | if (rpc.type === 'StorageData') {
|
3776 | const key = params[0];
|
3777 | return this._formatStorageData(registry, blockHash, key, result);
|
3778 | }
|
3779 | else if (rpc.type === 'StorageChangeSet') {
|
3780 | const keys = params[0];
|
3781 | return keys
|
3782 | ? this._formatStorageSet(registry, result.block, keys, result.changes)
|
3783 | : registry.createType('StorageChangeSet', result);
|
3784 | }
|
3785 | else if (rpc.type === 'Vec<StorageChangeSet>') {
|
3786 | const jsonSet = result;
|
3787 | const count = jsonSet.length;
|
3788 | const mapped = new Array(count);
|
3789 | for (let i = 0; i < count; i++) {
|
3790 | const { block, changes } = jsonSet[i];
|
3791 | mapped[i] = [
|
3792 | registry.createType('BlockHash', block),
|
3793 | this._formatStorageSet(registry, block, params[0], changes)
|
3794 | ];
|
3795 | }
|
3796 | return method === 'queryStorageAt'
|
3797 | ? mapped[0][1]
|
3798 | : mapped;
|
3799 | }
|
3800 | return registry.createTypeUnsafe(rpc.type, [result], { blockHash });
|
3801 | }
|
3802 | _formatStorageData(registry, blockHash, key, value) {
|
3803 | const isEmpty = util.isNull(value);
|
3804 | const input = isEmpty
|
3805 | ? null
|
3806 | : isTreatAsHex(key)
|
3807 | ? value
|
3808 | : util.u8aToU8a(value);
|
3809 | return this._newType(registry, blockHash, key, input, isEmpty);
|
3810 | }
|
3811 | _formatStorageSet(registry, blockHash, keys, changes) {
|
3812 | const count = keys.length;
|
3813 | const withCache = count !== 1;
|
3814 | const values = new Array(count);
|
3815 | for (let i = 0; i < count; i++) {
|
3816 | values[i] = this._formatStorageSetEntry(registry, blockHash, keys[i], changes, withCache, i);
|
3817 | }
|
3818 | return values;
|
3819 | }
|
3820 | _formatStorageSetEntry(registry, blockHash, key, changes, withCache, entryIndex) {
|
3821 | const hexKey = key.toHex();
|
3822 | const found = changes.find(([key]) => key === hexKey);
|
3823 | const isNotFound = util.isUndefined(found);
|
3824 | if (isNotFound && withCache) {
|
3825 | const cached = this.__internal__storageCache.get(hexKey);
|
3826 | if (cached) {
|
3827 | this.__internal__storageCacheHits++;
|
3828 | return cached;
|
3829 | }
|
3830 | }
|
3831 | const value = isNotFound
|
3832 | ? null
|
3833 | : found[1];
|
3834 | const isEmpty = util.isNull(value);
|
3835 | const input = isEmpty || isTreatAsHex(key)
|
3836 | ? value
|
3837 | : util.u8aToU8a(value);
|
3838 | const codec = this._newType(registry, blockHash, key, input, isEmpty, entryIndex);
|
3839 | this.__internal__storageCache.set(hexKey, codec);
|
3840 | this.__internal__storageCacheSize++;
|
3841 | return codec;
|
3842 | }
|
3843 | _newType(registry, blockHash, key, input, isEmpty, entryIndex = -1) {
|
3844 | const type = key.outputType || 'Raw';
|
3845 | const meta = key.meta || EMPTY_META;
|
3846 | const entryNum = entryIndex === -1
|
3847 | ? ''
|
3848 | : ` entry ${entryIndex}:`;
|
3849 | try {
|
3850 | return registry.createTypeUnsafe(type, [
|
3851 | isEmpty
|
3852 | ? meta.fallback
|
3853 | ? type.includes('Linkage<')
|
3854 | ? util.u8aConcat(util.hexToU8a(meta.fallback.toHex()), new Uint8Array(2))
|
3855 | : util.hexToU8a(meta.fallback.toHex())
|
3856 | : undefined
|
3857 | : meta.modifier.isOptional
|
3858 | ? registry.createTypeUnsafe(type, [input], { blockHash, isPedantic: this.__internal__isPedantic })
|
3859 | : input
|
3860 | ], { blockHash, isFallback: isEmpty && !!meta.fallback, isOptional: meta.modifier.isOptional, isPedantic: this.__internal__isPedantic && !meta.modifier.isOptional });
|
3861 | }
|
3862 | catch (error) {
|
3863 | throw new Error(`Unable to decode storage ${key.section || 'unknown'}.${key.method || 'unknown'}:${entryNum}: ${error.message}`);
|
3864 | }
|
3865 | }
|
3866 | }
|
3867 |
|
3868 | function unwrapBlockNumber(hdr) {
|
3869 | return util.isCompact(hdr.number)
|
3870 | ? hdr.number.unwrap()
|
3871 | : hdr.number;
|
3872 | }
|
3873 |
|
3874 | const deriveNoopCache = {
|
3875 | del: () => undefined,
|
3876 | forEach: () => undefined,
|
3877 | get: () => undefined,
|
3878 | set: (_, value) => value
|
3879 | };
|
3880 |
|
3881 | const CHACHE_EXPIRY = 7 * (24 * 60) * (60 * 1000);
|
3882 | let deriveCache;
|
3883 | function wrapCache(keyStart, cache) {
|
3884 | return {
|
3885 | del: (partial) => cache.del(`${keyStart}${partial}`),
|
3886 | forEach: cache.forEach,
|
3887 | get: (partial) => {
|
3888 | const key = `${keyStart}${partial}`;
|
3889 | const cached = cache.get(key);
|
3890 | if (cached) {
|
3891 | cached.x = Date.now();
|
3892 | cache.set(key, cached);
|
3893 | return cached.v;
|
3894 | }
|
3895 | return undefined;
|
3896 | },
|
3897 | set: (partial, v) => {
|
3898 | cache.set(`${keyStart}${partial}`, { v, x: Date.now() });
|
3899 | }
|
3900 | };
|
3901 | }
|
3902 | function clearCache(cache) {
|
3903 | const now = Date.now();
|
3904 | const all = [];
|
3905 | cache.forEach((key, { x }) => {
|
3906 | ((now - x) > CHACHE_EXPIRY) && all.push(key);
|
3907 | });
|
3908 | all.forEach((key) => cache.del(key));
|
3909 | }
|
3910 | function setDeriveCache(prefix = '', cache) {
|
3911 | deriveCache = cache
|
3912 | ? wrapCache(`derive:${prefix}:`, cache)
|
3913 | : deriveNoopCache;
|
3914 | if (cache) {
|
3915 | clearCache(cache);
|
3916 | }
|
3917 | }
|
3918 | setDeriveCache();
|
3919 |
|
3920 | function firstObservable(obs) {
|
3921 | return obs.pipe(map(([a]) => a));
|
3922 | }
|
3923 | function firstMemo(fn) {
|
3924 | return (instanceId, api) => memo(instanceId, (...args) => firstObservable(fn(api, ...args)));
|
3925 | }
|
3926 |
|
3927 | function lazyDeriveSection(result, section, getKeys, creator) {
|
3928 | util.lazyMethod(result, section, () => util.lazyMethods({}, getKeys(section), (method) => creator(section, method)));
|
3929 | }
|
3930 |
|
3931 | function accountId(instanceId, api) {
|
3932 | return memo(instanceId, (address) => {
|
3933 | const decoded = util.isU8a(address)
|
3934 | ? address
|
3935 | : utilCrypto.decodeAddress((address || '').toString());
|
3936 | if (decoded.length > 8) {
|
3937 | return of(api.registry.createType('AccountId', decoded));
|
3938 | }
|
3939 | const accountIndex = api.registry.createType('AccountIndex', decoded);
|
3940 | return api.derive.accounts.indexToId(accountIndex.toString()).pipe(map((a) => util.assertReturn(a, 'Unable to retrieve accountId')));
|
3941 | });
|
3942 | }
|
3943 |
|
3944 | function parseFlags(address, [electionsMembers, councilMembers, technicalCommitteeMembers, societyMembers, sudoKey]) {
|
3945 | const addrStr = address?.toString();
|
3946 | const isIncluded = (id) => id.toString() === addrStr;
|
3947 | return {
|
3948 | isCouncil: (electionsMembers?.map((r) => Array.isArray(r) ? r[0] : r.who) || councilMembers || []).some(isIncluded),
|
3949 | isSociety: (societyMembers || []).some(isIncluded),
|
3950 | isSudo: sudoKey?.toString() === addrStr,
|
3951 | isTechCommittee: (technicalCommitteeMembers || []).some(isIncluded)
|
3952 | };
|
3953 | }
|
3954 | function _flags(instanceId, api) {
|
3955 | return memo(instanceId, () => {
|
3956 | const results = [undefined, [], [], [], undefined];
|
3957 | const calls = [
|
3958 | (api.query.elections || api.query['phragmenElection'] || api.query['electionsPhragmen'])?.members,
|
3959 | api.query.council?.members,
|
3960 | api.query.technicalCommittee?.members,
|
3961 | api.query.society?.members,
|
3962 | api.query.sudo?.key
|
3963 | ];
|
3964 | const filtered = calls.filter((c) => c);
|
3965 | if (!filtered.length) {
|
3966 | return of(results);
|
3967 | }
|
3968 | return api.queryMulti(filtered).pipe(map((values) => {
|
3969 | let resultIndex = -1;
|
3970 | for (let i = 0, count = calls.length; i < count; i++) {
|
3971 | if (util.isFunction(calls[i])) {
|
3972 | results[i] = values[++resultIndex];
|
3973 | }
|
3974 | }
|
3975 | return results;
|
3976 | }));
|
3977 | });
|
3978 | }
|
3979 | function flags(instanceId, api) {
|
3980 | return memo(instanceId, (address) => api.derive.accounts._flags().pipe(map((r) => parseFlags(address, r))));
|
3981 | }
|
3982 |
|
3983 | function idAndIndex(instanceId, api) {
|
3984 | return memo(instanceId, (address) => {
|
3985 | try {
|
3986 | const decoded = util.isU8a(address)
|
3987 | ? address
|
3988 | : utilCrypto.decodeAddress((address || '').toString());
|
3989 | if (decoded.length > 8) {
|
3990 | const accountId = api.registry.createType('AccountId', decoded);
|
3991 | return api.derive.accounts.idToIndex(accountId).pipe(map((accountIndex) => [accountId, accountIndex]));
|
3992 | }
|
3993 | const accountIndex = api.registry.createType('AccountIndex', decoded);
|
3994 | return api.derive.accounts.indexToId(accountIndex.toString()).pipe(map((accountId) => [accountId, accountIndex]));
|
3995 | }
|
3996 | catch {
|
3997 | return of([undefined, undefined]);
|
3998 | }
|
3999 | });
|
4000 | }
|
4001 |
|
4002 | const UNDEF_HEX = { toHex: () => undefined };
|
4003 | function dataAsString(data) {
|
4004 | if (!data) {
|
4005 | return data;
|
4006 | }
|
4007 | return data.isRaw
|
4008 | ? util.u8aToString(data.asRaw.toU8a(true))
|
4009 | : data.isNone
|
4010 | ? undefined
|
4011 | : data.toHex();
|
4012 | }
|
4013 | function extractOther(additional) {
|
4014 | return additional.reduce((other, [_key, _value]) => {
|
4015 | const key = dataAsString(_key);
|
4016 | const value = dataAsString(_value);
|
4017 | if (key && value) {
|
4018 | other[key] = value;
|
4019 | }
|
4020 | return other;
|
4021 | }, {});
|
4022 | }
|
4023 | function identityCompat(identityOfOpt) {
|
4024 | const identity = identityOfOpt.unwrap();
|
4025 | return Array.isArray(identity)
|
4026 | ? identity[0]
|
4027 | : identity;
|
4028 | }
|
4029 | function extractIdentity(identityOfOpt, superOf) {
|
4030 | if (!identityOfOpt?.isSome) {
|
4031 | return { judgements: [] };
|
4032 | }
|
4033 | const { info, judgements } = identityCompat(identityOfOpt);
|
4034 | const topDisplay = dataAsString(info.display);
|
4035 | return {
|
4036 | discord: dataAsString(info.discord),
|
4037 | display: (superOf && dataAsString(superOf[1])) || topDisplay,
|
4038 | displayParent: superOf && topDisplay,
|
4039 | email: dataAsString(info.email),
|
4040 | github: dataAsString(info.github),
|
4041 | image: dataAsString(info.image),
|
4042 | judgements,
|
4043 | legal: dataAsString(info.legal),
|
4044 | matrix: dataAsString(info.matrix),
|
4045 | other: info.additional ? extractOther(info.additional) : {},
|
4046 | parent: superOf?.[0],
|
4047 | pgp: info.pgpFingerprint.unwrapOr(UNDEF_HEX).toHex(),
|
4048 | riot: dataAsString(info.riot),
|
4049 | twitter: dataAsString(info.twitter),
|
4050 | web: dataAsString(info.web)
|
4051 | };
|
4052 | }
|
4053 | function getParent(api, identityOfOpt, superOfOpt) {
|
4054 | if (identityOfOpt?.isSome) {
|
4055 | return of([identityOfOpt, undefined]);
|
4056 | }
|
4057 | else if (superOfOpt?.isSome) {
|
4058 | const superOf = superOfOpt.unwrap();
|
4059 | return combineLatest([
|
4060 | api.derive.accounts._identity(superOf[0]).pipe(map(([info]) => info)),
|
4061 | of(superOf)
|
4062 | ]);
|
4063 | }
|
4064 | return of([undefined, undefined]);
|
4065 | }
|
4066 | function _identity(instanceId, api) {
|
4067 | return memo(instanceId, (accountId) => accountId && api.query.identity?.identityOf
|
4068 | ? combineLatest([
|
4069 | api.query.identity.identityOf(accountId),
|
4070 | api.query.identity.superOf(accountId)
|
4071 | ])
|
4072 | : of([undefined, undefined]));
|
4073 | }
|
4074 | function identity(instanceId, api) {
|
4075 | return memo(instanceId, (accountId) => api.derive.accounts._identity(accountId).pipe(switchMap(([identityOfOpt, superOfOpt]) => getParent(api, identityOfOpt, superOfOpt)), map(([identityOfOpt, superOf]) => extractIdentity(identityOfOpt, superOf))));
|
4076 | }
|
4077 | const hasIdentity = firstMemo((api, accountId) => api.derive.accounts.hasIdentityMulti([accountId]));
|
4078 | function hasIdentityMulti(instanceId, api) {
|
4079 | return memo(instanceId, (accountIds) => api.query.identity?.identityOf
|
4080 | ? combineLatest([
|
4081 | api.query.identity.identityOf.multi(accountIds),
|
4082 | api.query.identity.superOf.multi(accountIds)
|
4083 | ]).pipe(map(([identities, supers]) => identities.map((identityOfOpt, index) => {
|
4084 | const superOfOpt = supers[index];
|
4085 | const parentId = superOfOpt && superOfOpt.isSome
|
4086 | ? superOfOpt.unwrap()[0].toString()
|
4087 | : undefined;
|
4088 | let display;
|
4089 | if (identityOfOpt && identityOfOpt.isSome) {
|
4090 | const value = dataAsString(identityCompat(identityOfOpt).info.display);
|
4091 | if (value && !util.isHex(value)) {
|
4092 | display = value;
|
4093 | }
|
4094 | }
|
4095 | return { display, hasIdentity: !!(display || parentId), parentId };
|
4096 | })))
|
4097 | : of(accountIds.map(() => ({ hasIdentity: false }))));
|
4098 | }
|
4099 |
|
4100 | function idToIndex(instanceId, api) {
|
4101 | return memo(instanceId, (accountId) => api.derive.accounts.indexes().pipe(map((indexes) => indexes[accountId.toString()])));
|
4102 | }
|
4103 |
|
4104 | let indicesCache = null;
|
4105 | function queryAccounts(api) {
|
4106 | return api.query.indices.accounts.entries().pipe(map((entries) => entries.reduce((indexes, [key, idOpt]) => {
|
4107 | if (idOpt.isSome) {
|
4108 | indexes[idOpt.unwrap()[0].toString()] = api.registry.createType('AccountIndex', key.args[0]);
|
4109 | }
|
4110 | return indexes;
|
4111 | }, {})));
|
4112 | }
|
4113 | function indexes$1(instanceId, api) {
|
4114 | return memo(instanceId, () => indicesCache
|
4115 | ? of(indicesCache)
|
4116 | : (api.query.indices
|
4117 | ? queryAccounts(api).pipe(startWith({}))
|
4118 | : of({})).pipe(map((indices) => {
|
4119 | indicesCache = indices;
|
4120 | return indices;
|
4121 | })));
|
4122 | }
|
4123 |
|
4124 | function indexToId(instanceId, api) {
|
4125 | return memo(instanceId, (accountIndex) => api.query.indices
|
4126 | ? api.query.indices.accounts(accountIndex).pipe(map((optResult) => optResult.unwrapOr([])[0]))
|
4127 | : of(undefined));
|
4128 | }
|
4129 |
|
4130 | function retrieveNick(api, accountId) {
|
4131 | return (accountId && api.query['nicks']?.['nameOf']
|
4132 | ? api.query['nicks']['nameOf'](accountId)
|
4133 | : of(undefined)).pipe(map((nameOf) => nameOf?.isSome
|
4134 | ? util.u8aToString(nameOf.unwrap()[0]).substring(0, api.consts['nicks']['maxLength'].toNumber())
|
4135 | : undefined));
|
4136 | }
|
4137 | function info$4(instanceId, api) {
|
4138 | return memo(instanceId, (address) => api.derive.accounts.idAndIndex(address).pipe(switchMap(([accountId, accountIndex]) => combineLatest([
|
4139 | of({ accountId, accountIndex }),
|
4140 | api.derive.accounts.identity(accountId),
|
4141 | retrieveNick(api, accountId)
|
4142 | ])), map(([{ accountId, accountIndex }, identity, nickname]) => ({
|
4143 | accountId, accountIndex, identity, nickname
|
4144 | }))));
|
4145 | }
|
4146 |
|
4147 | const accounts$1 = Object.freeze({
|
4148 | __proto__: null,
|
4149 | _flags: _flags,
|
4150 | _identity: _identity,
|
4151 | accountId: accountId,
|
4152 | flags: flags,
|
4153 | hasIdentity: hasIdentity,
|
4154 | hasIdentityMulti: hasIdentityMulti,
|
4155 | idAndIndex: idAndIndex,
|
4156 | idToIndex: idToIndex,
|
4157 | identity: identity,
|
4158 | indexToId: indexToId,
|
4159 | indexes: indexes$1,
|
4160 | info: info$4
|
4161 | });
|
4162 |
|
4163 | function getInstance(api, section) {
|
4164 | const instances = api.registry.getModuleInstances(api.runtimeVersion.specName, section);
|
4165 | const name = instances?.length
|
4166 | ? instances[0]
|
4167 | : section;
|
4168 | return api.query[name];
|
4169 | }
|
4170 | function withSection(section, fn) {
|
4171 | return (instanceId, api) => memo(instanceId, fn(getInstance(api, section), api, instanceId));
|
4172 | }
|
4173 | function callMethod(method, empty) {
|
4174 | return (section) => withSection(section, (query) => () => util.isFunction(query?.[method])
|
4175 | ? query[method]()
|
4176 | : of(empty));
|
4177 | }
|
4178 |
|
4179 | const members$5 = callMethod('members', []);
|
4180 |
|
4181 | function prime$4(section) {
|
4182 | return withSection(section, (query) => () => util.isFunction(query?.prime)
|
4183 | ? query.prime().pipe(map((o) => o.unwrapOr(null)))
|
4184 | : of(null));
|
4185 | }
|
4186 |
|
4187 | function parse$4(api, [hashes, proposals, votes]) {
|
4188 | return proposals.map((o, index) => ({
|
4189 | hash: api.registry.createType('Hash', hashes[index]),
|
4190 | proposal: o && o.isSome
|
4191 | ? o.unwrap()
|
4192 | : null,
|
4193 | votes: votes[index].unwrapOr(null)
|
4194 | }));
|
4195 | }
|
4196 | function _proposalsFrom(api, query, hashes) {
|
4197 | return (util.isFunction(query?.proposals) && hashes.length
|
4198 | ? combineLatest([
|
4199 | of(hashes),
|
4200 | query.proposalOf.multi(hashes).pipe(catchError(() => of(hashes.map(() => null)))),
|
4201 | query.voting.multi(hashes)
|
4202 | ])
|
4203 | : of([[], [], []])).pipe(map((r) => parse$4(api, r)));
|
4204 | }
|
4205 | function hasProposals$4(section) {
|
4206 | return withSection(section, (query) => () => of(util.isFunction(query?.proposals)));
|
4207 | }
|
4208 | function proposals$6(section) {
|
4209 | return withSection(section, (query, api) => () => api.derive[section].proposalHashes().pipe(switchMap((all) => _proposalsFrom(api, query, all))));
|
4210 | }
|
4211 | function proposal$4(section) {
|
4212 | return withSection(section, (query, api) => (hash) => util.isFunction(query?.proposals)
|
4213 | ? firstObservable(_proposalsFrom(api, query, [hash]))
|
4214 | : of(null));
|
4215 | }
|
4216 | const proposalCount$4 = callMethod('proposalCount', null);
|
4217 | const proposalHashes$4 = callMethod('proposals', []);
|
4218 |
|
4219 | const members$4 = members$5('allianceMotion');
|
4220 | const hasProposals$3 = hasProposals$4('allianceMotion');
|
4221 | const proposal$3 = proposal$4('allianceMotion');
|
4222 | const proposalCount$3 = proposalCount$4('allianceMotion');
|
4223 | const proposalHashes$3 = proposalHashes$4('allianceMotion');
|
4224 | const proposals$5 = proposals$6('allianceMotion');
|
4225 | const prime$3 = prime$4('allianceMotion');
|
4226 |
|
4227 | const alliance = Object.freeze({
|
4228 | __proto__: null,
|
4229 | hasProposals: hasProposals$3,
|
4230 | members: members$4,
|
4231 | prime: prime$3,
|
4232 | proposal: proposal$3,
|
4233 | proposalCount: proposalCount$3,
|
4234 | proposalHashes: proposalHashes$3,
|
4235 | proposals: proposals$5
|
4236 | });
|
4237 |
|
4238 | function getQueryInterface(api) {
|
4239 | return (
|
4240 | api.query.voterList ||
|
4241 | api.query['voterBagsList'] ||
|
4242 | api.query['bagsList']);
|
4243 | }
|
4244 |
|
4245 | function orderBags(ids, bags) {
|
4246 | const sorted = ids
|
4247 | .map((id, index) => ({
|
4248 | bag: bags[index].unwrapOr(null),
|
4249 | id,
|
4250 | key: id.toString()
|
4251 | }))
|
4252 | .sort((a, b) => b.id.cmp(a.id));
|
4253 | const max = sorted.length - 1;
|
4254 | return sorted.map((entry, index) => util.objectSpread(entry, {
|
4255 | bagLower: index === max
|
4256 | ? util.BN_ZERO
|
4257 | : sorted[index + 1].id,
|
4258 | bagUpper: entry.id,
|
4259 | index
|
4260 | }));
|
4261 | }
|
4262 | function _getIds(instanceId, api) {
|
4263 | const query = getQueryInterface(api);
|
4264 | return memo(instanceId, (_ids) => {
|
4265 | const ids = _ids.map((id) => util.bnToBn(id));
|
4266 | return ids.length
|
4267 | ? query.listBags.multi(ids).pipe(map((bags) => orderBags(ids, bags)))
|
4268 | : of([]);
|
4269 | });
|
4270 | }
|
4271 | function all$1(instanceId, api) {
|
4272 | const query = getQueryInterface(api);
|
4273 | return memo(instanceId, () => query.listBags.keys().pipe(switchMap((keys) => api.derive.bagsList._getIds(keys.map(({ args: [id] }) => id))), map((list) => list.filter(({ bag }) => bag))));
|
4274 | }
|
4275 | function get(instanceId, api) {
|
4276 | return memo(instanceId, (id) => api.derive.bagsList._getIds([util.bnToBn(id)]).pipe(map((bags) => bags[0])));
|
4277 | }
|
4278 |
|
4279 | function expand(instanceId, api) {
|
4280 | return memo(instanceId, (bag) => api.derive.bagsList.listNodes(bag.bag).pipe(map((nodes) => util.objectSpread({ nodes }, bag))));
|
4281 | }
|
4282 | function getExpanded(instanceId, api) {
|
4283 | return memo(instanceId, (id) => api.derive.bagsList.get(id).pipe(switchMap((bag) => api.derive.bagsList.expand(bag))));
|
4284 | }
|
4285 |
|
4286 | function traverseLinks(api, head) {
|
4287 | const subject = new BehaviorSubject(head);
|
4288 | const query = getQueryInterface(api);
|
4289 | return subject.pipe(switchMap((account) => query.listNodes(account)), tap((node) => {
|
4290 | util.nextTick(() => {
|
4291 | node.isSome && node.value.next.isSome
|
4292 | ? subject.next(node.unwrap().next.unwrap())
|
4293 | : subject.complete();
|
4294 | });
|
4295 | }), toArray(),
|
4296 | map((all) => all.map((o) => o.unwrap())));
|
4297 | }
|
4298 | function listNodes(instanceId, api) {
|
4299 | return memo(instanceId, (bag) => bag && bag.head.isSome
|
4300 | ? traverseLinks(api, bag.head.unwrap())
|
4301 | : of([]));
|
4302 | }
|
4303 |
|
4304 | const bagsList = Object.freeze({
|
4305 | __proto__: null,
|
4306 | _getIds: _getIds,
|
4307 | all: all$1,
|
4308 | expand: expand,
|
4309 | get: get,
|
4310 | getExpanded: getExpanded,
|
4311 | listNodes: listNodes
|
4312 | });
|
4313 |
|
4314 | const VESTING_ID = '0x76657374696e6720';
|
4315 | function calcLocked(api, bestNumber, locks) {
|
4316 | let lockedBalance = api.registry.createType('Balance');
|
4317 | let lockedBreakdown = [];
|
4318 | let vestingLocked = api.registry.createType('Balance');
|
4319 | let allLocked = false;
|
4320 | if (Array.isArray(locks)) {
|
4321 | lockedBreakdown = locks.filter(({ until }) => !until || (bestNumber && until.gt(bestNumber)));
|
4322 | allLocked = lockedBreakdown.some(({ amount }) => amount && amount.isMax());
|
4323 | vestingLocked = api.registry.createType('Balance', lockedBreakdown.filter(({ id }) => id.eq(VESTING_ID)).reduce((result, { amount }) => result.iadd(amount), new util.BN(0)));
|
4324 | const notAll = lockedBreakdown.filter(({ amount }) => amount && !amount.isMax());
|
4325 | if (notAll.length) {
|
4326 | lockedBalance = api.registry.createType('Balance', util.bnMax(...notAll.map(({ amount }) => amount)));
|
4327 | }
|
4328 | }
|
4329 | return { allLocked, lockedBalance, lockedBreakdown, vestingLocked };
|
4330 | }
|
4331 | function calcShared(api, bestNumber, data, locks) {
|
4332 | const { allLocked, lockedBalance, lockedBreakdown, vestingLocked } = calcLocked(api, bestNumber, locks);
|
4333 | return util.objectSpread({}, data, {
|
4334 | availableBalance: api.registry.createType('Balance', allLocked ? 0 : util.bnMax(new util.BN(0), data?.freeBalance ? data.freeBalance.sub(lockedBalance) : new util.BN(0))),
|
4335 | lockedBalance,
|
4336 | lockedBreakdown,
|
4337 | vestingLocked
|
4338 | });
|
4339 | }
|
4340 | function calcVesting(bestNumber, shared, _vesting) {
|
4341 | const vesting = _vesting || [];
|
4342 | const isVesting = !shared.vestingLocked.isZero();
|
4343 | const vestedBalances = vesting.map(({ locked, perBlock, startingBlock }) => bestNumber.gt(startingBlock)
|
4344 | ? util.bnMin(locked, perBlock.mul(bestNumber.sub(startingBlock)))
|
4345 | : util.BN_ZERO);
|
4346 | const vestedBalance = vestedBalances.reduce((all, value) => all.iadd(value), new util.BN(0));
|
4347 | const vestingTotal = vesting.reduce((all, { locked }) => all.iadd(locked), new util.BN(0));
|
4348 | return {
|
4349 | isVesting,
|
4350 | vestedBalance,
|
4351 | vestedClaimable: isVesting
|
4352 | ? shared.vestingLocked.sub(vestingTotal.sub(vestedBalance))
|
4353 | : util.BN_ZERO,
|
4354 | vesting: vesting
|
4355 | .map(({ locked, perBlock, startingBlock }, index) => ({
|
4356 | endBlock: locked.div(perBlock).iadd(startingBlock),
|
4357 | locked,
|
4358 | perBlock,
|
4359 | startingBlock,
|
4360 | vested: vestedBalances[index]
|
4361 | }))
|
4362 | .filter(({ locked }) => !locked.isZero()),
|
4363 | vestingTotal
|
4364 | };
|
4365 | }
|
4366 | function calcBalances$1(api, result) {
|
4367 | const [data, [vesting, allLocks, namedReserves], bestNumber] = result;
|
4368 | const shared = calcShared(api, bestNumber, data, allLocks[0]);
|
4369 | return util.objectSpread(shared, calcVesting(bestNumber, shared, vesting), {
|
4370 | accountId: data.accountId,
|
4371 | accountNonce: data.accountNonce,
|
4372 | additional: allLocks
|
4373 | .slice(1)
|
4374 | .map((l, index) => calcShared(api, bestNumber, data.additional[index], l)),
|
4375 | namedReserves
|
4376 | });
|
4377 | }
|
4378 | function queryOld(api, accountId) {
|
4379 | return combineLatest([
|
4380 | api.query.balances.locks(accountId),
|
4381 | api.query.balances['vesting'](accountId)
|
4382 | ]).pipe(map(([locks, optVesting]) => {
|
4383 | let vestingNew = null;
|
4384 | if (optVesting.isSome) {
|
4385 | const { offset: locked, perBlock, startingBlock } = optVesting.unwrap();
|
4386 | vestingNew = api.registry.createType('VestingInfo', { locked, perBlock, startingBlock });
|
4387 | }
|
4388 | return [
|
4389 | vestingNew
|
4390 | ? [vestingNew]
|
4391 | : null,
|
4392 | [locks],
|
4393 | []
|
4394 | ];
|
4395 | }));
|
4396 | }
|
4397 | const isNonNullable = (nullable) => !!nullable;
|
4398 | function createCalls(calls) {
|
4399 | return [
|
4400 | calls.map((c) => !c),
|
4401 | calls.filter(isNonNullable)
|
4402 | ];
|
4403 | }
|
4404 | function queryCurrent(api, accountId, balanceInstances = ['balances']) {
|
4405 | const [lockEmpty, lockQueries] = createCalls(balanceInstances.map((m) => api.derive[m]?.customLocks || api.query[m]?.locks));
|
4406 | const [reserveEmpty, reserveQueries] = createCalls(balanceInstances.map((m) => api.query[m]?.reserves));
|
4407 | return combineLatest([
|
4408 | api.query.vesting?.vesting
|
4409 | ? api.query.vesting.vesting(accountId)
|
4410 | : of(api.registry.createType('Option<VestingInfo>')),
|
4411 | lockQueries.length
|
4412 | ? combineLatest(lockQueries.map((c) => c(accountId)))
|
4413 | : of([]),
|
4414 | reserveQueries.length
|
4415 | ? combineLatest(reserveQueries.map((c) => c(accountId)))
|
4416 | : of([])
|
4417 | ]).pipe(map(([opt, locks, reserves]) => {
|
4418 | let offsetLock = -1;
|
4419 | let offsetReserve = -1;
|
4420 | const vesting = opt.unwrapOr(null);
|
4421 | return [
|
4422 | vesting
|
4423 | ? Array.isArray(vesting)
|
4424 | ? vesting
|
4425 | : [vesting]
|
4426 | : null,
|
4427 | lockEmpty.map((e) => e ? api.registry.createType('Vec<BalanceLock>') : locks[++offsetLock]),
|
4428 | reserveEmpty.map((e) => e ? api.registry.createType('Vec<PalletBalancesReserveData>') : reserves[++offsetReserve])
|
4429 | ];
|
4430 | }));
|
4431 | }
|
4432 | function all(instanceId, api) {
|
4433 | const balanceInstances = api.registry.getModuleInstances(api.runtimeVersion.specName, 'balances');
|
4434 | return memo(instanceId, (address) => combineLatest([
|
4435 | api.derive.balances.account(address),
|
4436 | util.isFunction(api.query.system?.account) || util.isFunction(api.query.balances?.account)
|
4437 | ? queryCurrent(api, address, balanceInstances)
|
4438 | : queryOld(api, address)
|
4439 | ]).pipe(switchMap(([account, locks]) => combineLatest([
|
4440 | of(account),
|
4441 | of(locks),
|
4442 | api.derive.chain.bestNumber()
|
4443 | ])), map((result) => calcBalances$1(api, result))));
|
4444 | }
|
4445 |
|
4446 | function zeroBalance(api) {
|
4447 | return api.registry.createType('Balance');
|
4448 | }
|
4449 | function getBalance(api, [freeBalance, reservedBalance, frozenFee, frozenMisc]) {
|
4450 | const votingBalance = api.registry.createType('Balance', freeBalance.toBn());
|
4451 | return {
|
4452 | freeBalance,
|
4453 | frozenFee,
|
4454 | frozenMisc,
|
4455 | reservedBalance,
|
4456 | votingBalance
|
4457 | };
|
4458 | }
|
4459 | function calcBalances(api, [accountId, [accountNonce, [primary, ...additional]]]) {
|
4460 | return util.objectSpread({
|
4461 | accountId,
|
4462 | accountNonce,
|
4463 | additional: additional.map((b) => getBalance(api, b))
|
4464 | }, getBalance(api, primary));
|
4465 | }
|
4466 | function queryBalancesFree(api, accountId) {
|
4467 | return combineLatest([
|
4468 | api.query.balances['freeBalance'](accountId),
|
4469 | api.query.balances['reservedBalance'](accountId),
|
4470 | api.query.system['accountNonce'](accountId)
|
4471 | ]).pipe(map(([freeBalance, reservedBalance, accountNonce]) => [
|
4472 | accountNonce,
|
4473 | [[freeBalance, reservedBalance, zeroBalance(api), zeroBalance(api)]]
|
4474 | ]));
|
4475 | }
|
4476 | function queryNonceOnly(api, accountId) {
|
4477 | const fill = (nonce) => [
|
4478 | nonce,
|
4479 | [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]]
|
4480 | ];
|
4481 | return util.isFunction(api.query.system.account)
|
4482 | ? api.query.system.account(accountId).pipe(map(({ nonce }) => fill(nonce)))
|
4483 | : util.isFunction(api.query.system['accountNonce'])
|
4484 | ? api.query.system['accountNonce'](accountId).pipe(map((nonce) => fill(nonce)))
|
4485 | : of(fill(api.registry.createType('Index')));
|
4486 | }
|
4487 | function queryBalancesAccount(api, accountId, modules = ['balances']) {
|
4488 | const balances = modules
|
4489 | .map((m) => api.derive[m]?.customAccount || api.query[m]?.account)
|
4490 | .filter((q) => util.isFunction(q));
|
4491 | const extract = (nonce, data) => [
|
4492 | nonce,
|
4493 | data.map(({ feeFrozen, free, miscFrozen, reserved }) => [free, reserved, feeFrozen, miscFrozen])
|
4494 | ];
|
4495 | return balances.length
|
4496 | ? util.isFunction(api.query.system.account)
|
4497 | ? combineLatest([
|
4498 | api.query.system.account(accountId),
|
4499 | ...balances.map((c) => c(accountId))
|
4500 | ]).pipe(map(([{ nonce }, ...balances]) => extract(nonce, balances)))
|
4501 | : combineLatest([
|
4502 | api.query.system['accountNonce'](accountId),
|
4503 | ...balances.map((c) => c(accountId))
|
4504 | ]).pipe(map(([nonce, ...balances]) => extract(nonce, balances)))
|
4505 | : queryNonceOnly(api, accountId);
|
4506 | }
|
4507 | function querySystemAccount(api, accountId) {
|
4508 | return api.query.system.account(accountId).pipe(map((infoOrTuple) => {
|
4509 | const data = infoOrTuple.nonce
|
4510 | ? infoOrTuple.data
|
4511 | : infoOrTuple[1];
|
4512 | const nonce = infoOrTuple.nonce || infoOrTuple[0];
|
4513 | if (!data || data.isEmpty) {
|
4514 | return [
|
4515 | nonce,
|
4516 | [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]]
|
4517 | ];
|
4518 | }
|
4519 | const { feeFrozen, free, miscFrozen, reserved } = data;
|
4520 | return [
|
4521 | nonce,
|
4522 | [[free, reserved, feeFrozen, miscFrozen]]
|
4523 | ];
|
4524 | }));
|
4525 | }
|
4526 | function account$1(instanceId, api) {
|
4527 | const balanceInstances = api.registry.getModuleInstances(api.runtimeVersion.specName, 'balances');
|
4528 | const nonDefaultBalances = balanceInstances && balanceInstances[0] !== 'balances';
|
4529 | return memo(instanceId, (address) => api.derive.accounts.accountId(address).pipe(switchMap((accountId) => (accountId
|
4530 | ? combineLatest([
|
4531 | of(accountId),
|
4532 | nonDefaultBalances
|
4533 | ? queryBalancesAccount(api, accountId, balanceInstances)
|
4534 | : util.isFunction(api.query.system?.account)
|
4535 | ? querySystemAccount(api, accountId)
|
4536 | : util.isFunction(api.query.balances?.account)
|
4537 | ? queryBalancesAccount(api, accountId)
|
4538 | : util.isFunction(api.query.balances?.['freeBalance'])
|
4539 | ? queryBalancesFree(api, accountId)
|
4540 | : queryNonceOnly(api, accountId)
|
4541 | ])
|
4542 | : of([api.registry.createType('AccountId'), [
|
4543 | api.registry.createType('Index'),
|
4544 | [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]]
|
4545 | ]]))), map((result) => calcBalances(api, result))));
|
4546 | }
|
4547 |
|
4548 | function votingBalances(instanceId, api) {
|
4549 | return memo(instanceId, (addresses) => !addresses?.length
|
4550 | ? of([])
|
4551 | : combineLatest(addresses.map((accountId) => api.derive.balances.account(accountId))));
|
4552 | }
|
4553 |
|
4554 | const votingBalance = all;
|
4555 |
|
4556 | const balances = Object.freeze({
|
4557 | __proto__: null,
|
4558 | account: account$1,
|
4559 | all: all,
|
4560 | votingBalance: votingBalance,
|
4561 | votingBalances: votingBalances
|
4562 | });
|
4563 |
|
4564 | function filterBountiesProposals(api, allProposals) {
|
4565 | const bountyTxBase = api.tx.bounties ? api.tx.bounties : api.tx.treasury;
|
4566 | const bountyProposalCalls = [bountyTxBase.approveBounty, bountyTxBase.closeBounty, bountyTxBase.proposeCurator, bountyTxBase.unassignCurator];
|
4567 | return allProposals.filter((proposal) => bountyProposalCalls.find((bountyCall) => proposal.proposal && bountyCall.is(proposal.proposal)));
|
4568 | }
|
4569 |
|
4570 | function parseResult$2([maybeBounties, maybeDescriptions, ids, bountyProposals]) {
|
4571 | const bounties = [];
|
4572 | maybeBounties.forEach((bounty, index) => {
|
4573 | if (bounty.isSome) {
|
4574 | bounties.push({
|
4575 | bounty: bounty.unwrap(),
|
4576 | description: maybeDescriptions[index].unwrapOrDefault().toUtf8(),
|
4577 | index: ids[index],
|
4578 | proposals: bountyProposals.filter((bountyProposal) => bountyProposal.proposal && ids[index].eq(bountyProposal.proposal.args[0]))
|
4579 | });
|
4580 | }
|
4581 | });
|
4582 | return bounties;
|
4583 | }
|
4584 | function bounties$1(instanceId, api) {
|
4585 | const bountyBase = api.query.bounties || api.query.treasury;
|
4586 | return memo(instanceId, () => bountyBase.bounties
|
4587 | ? combineLatest([
|
4588 | bountyBase.bountyCount(),
|
4589 | api.query.council
|
4590 | ? api.query.council.proposalCount()
|
4591 | : of(0)
|
4592 | ]).pipe(switchMap(() => combineLatest([
|
4593 | bountyBase.bounties.keys(),
|
4594 | api.derive.council
|
4595 | ? api.derive.council.proposals()
|
4596 | : of([])
|
4597 | ])), switchMap(([keys, proposals]) => {
|
4598 | const ids = keys.map(({ args: [id] }) => id);
|
4599 | return combineLatest([
|
4600 | bountyBase.bounties.multi(ids),
|
4601 | bountyBase.bountyDescriptions.multi(ids),
|
4602 | of(ids),
|
4603 | of(filterBountiesProposals(api, proposals))
|
4604 | ]);
|
4605 | }), map(parseResult$2))
|
4606 | : of(parseResult$2([[], [], [], []])));
|
4607 | }
|
4608 |
|
4609 | const bounties = Object.freeze({
|
4610 | __proto__: null,
|
4611 | bounties: bounties$1
|
4612 | });
|
4613 |
|
4614 | function createBlockNumberDerive(fn) {
|
4615 | return (instanceId, api) => memo(instanceId, () => fn(api).pipe(map(unwrapBlockNumber)));
|
4616 | }
|
4617 | function getAuthorDetailsWithAt(header, queryAt) {
|
4618 | const validators = queryAt.session?.validators
|
4619 | ? queryAt.session.validators()
|
4620 | : of(null);
|
4621 | const { logs: [log] } = header.digest;
|
4622 | const loggedAuthor = (log && ((log.isConsensus && log.asConsensus[0].isNimbus && log.asConsensus[1]) ||
|
4623 | (log.isPreRuntime && log.asPreRuntime[0].isNimbus && log.asPreRuntime[1])));
|
4624 | if (loggedAuthor) {
|
4625 | if (queryAt['authorMapping']?.['mappingWithDeposit']) {
|
4626 | return combineLatest([
|
4627 | of(header),
|
4628 | validators,
|
4629 | queryAt['authorMapping']['mappingWithDeposit'](loggedAuthor).pipe(map((o) => o.unwrapOr({ account: null }).account))
|
4630 | ]);
|
4631 | }
|
4632 | if (queryAt['parachainStaking']?.['selectedCandidates'] && queryAt.session?.nextKeys) {
|
4633 | const loggedHex = loggedAuthor.toHex();
|
4634 | return combineLatest([
|
4635 | of(header),
|
4636 | validators,
|
4637 | queryAt['parachainStaking']['selectedCandidates']().pipe(mergeMap((selectedCandidates) => combineLatest([
|
4638 | of(selectedCandidates),
|
4639 | queryAt.session.nextKeys.multi(selectedCandidates).pipe(map((nextKeys) => nextKeys.findIndex((o) => o.unwrapOrDefault().nimbus.toHex() === loggedHex)))
|
4640 | ])), map(([selectedCandidates, index]) => index === -1
|
4641 | ? null
|
4642 | : selectedCandidates[index]))
|
4643 | ]);
|
4644 | }
|
4645 | }
|
4646 | return combineLatest([
|
4647 | of(header),
|
4648 | validators,
|
4649 | of(null)
|
4650 | ]);
|
4651 | }
|
4652 | function getAuthorDetails(api, header, blockHash) {
|
4653 | return api.queryAt(header.parentHash.isEmpty
|
4654 | ? blockHash || header.hash
|
4655 | : header.parentHash).pipe(switchMap((queryAt) => getAuthorDetailsWithAt(header, queryAt)));
|
4656 | }
|
4657 |
|
4658 | const bestNumber = createBlockNumberDerive((api) => api.rpc.chain.subscribeNewHeads());
|
4659 |
|
4660 | const bestNumberFinalized = createBlockNumberDerive((api) => api.rpc.chain.subscribeFinalizedHeads());
|
4661 |
|
4662 | function bestNumberLag(instanceId, api) {
|
4663 | return memo(instanceId, () => combineLatest([
|
4664 | api.derive.chain.bestNumber(),
|
4665 | api.derive.chain.bestNumberFinalized()
|
4666 | ]).pipe(map(([bestNumber, bestNumberFinalized]) => api.registry.createType('BlockNumber', bestNumber.sub(bestNumberFinalized)))));
|
4667 | }
|
4668 |
|
4669 | function extractAuthor(digest, sessionValidators) {
|
4670 | const [citem] = digest.logs.filter((e) => e.isConsensus);
|
4671 | const [pitem] = digest.logs.filter((e) => e.isPreRuntime);
|
4672 | const [sitem] = digest.logs.filter((e) => e.isSeal);
|
4673 | let accountId;
|
4674 | try {
|
4675 | if (pitem) {
|
4676 | const [engine, data] = pitem.asPreRuntime;
|
4677 | accountId = engine.extractAuthor(data, sessionValidators);
|
4678 | }
|
4679 | if (!accountId && citem) {
|
4680 | const [engine, data] = citem.asConsensus;
|
4681 | accountId = engine.extractAuthor(data, sessionValidators);
|
4682 | }
|
4683 | if (!accountId && sitem) {
|
4684 | const [engine, data] = sitem.asSeal;
|
4685 | accountId = engine.extractAuthor(data, sessionValidators);
|
4686 | }
|
4687 | }
|
4688 | catch {
|
4689 | }
|
4690 | return accountId;
|
4691 | }
|
4692 |
|
4693 | function createHeaderExtended(registry, header, validators, author) {
|
4694 | const HeaderBase = registry.createClass('Header');
|
4695 | class Implementation extends HeaderBase {
|
4696 | __internal__author;
|
4697 | constructor(registry, header, validators, author) {
|
4698 | super(registry, header);
|
4699 | this.__internal__author = author || extractAuthor(this.digest, validators || []);
|
4700 | this.createdAtHash = header?.createdAtHash;
|
4701 | }
|
4702 | get author() {
|
4703 | return this.__internal__author;
|
4704 | }
|
4705 | }
|
4706 | return new Implementation(registry, header, validators, author);
|
4707 | }
|
4708 |
|
4709 | function mapExtrinsics(extrinsics, records) {
|
4710 | return extrinsics.map((extrinsic, index) => {
|
4711 | let dispatchError;
|
4712 | let dispatchInfo;
|
4713 | const events = records
|
4714 | .filter(({ phase }) => phase.isApplyExtrinsic && phase.asApplyExtrinsic.eq(index))
|
4715 | .map(({ event }) => {
|
4716 | if (event.section === 'system') {
|
4717 | if (event.method === 'ExtrinsicSuccess') {
|
4718 | dispatchInfo = event.data[0];
|
4719 | }
|
4720 | else if (event.method === 'ExtrinsicFailed') {
|
4721 | dispatchError = event.data[0];
|
4722 | dispatchInfo = event.data[1];
|
4723 | }
|
4724 | }
|
4725 | return event;
|
4726 | });
|
4727 | return { dispatchError, dispatchInfo, events, extrinsic };
|
4728 | });
|
4729 | }
|
4730 | function createSignedBlockExtended(registry, block, events, validators, author) {
|
4731 | const SignedBlockBase = registry.createClass('SignedBlock');
|
4732 | class Implementation extends SignedBlockBase {
|
4733 | __internal__author;
|
4734 | __internal__events;
|
4735 | __internal__extrinsics;
|
4736 | constructor(registry, block, events, validators, author) {
|
4737 | super(registry, block);
|
4738 | this.__internal__author = author || extractAuthor(this.block.header.digest, validators || []);
|
4739 | this.__internal__events = events || [];
|
4740 | this.__internal__extrinsics = mapExtrinsics(this.block.extrinsics, this.__internal__events);
|
4741 | this.createdAtHash = block?.createdAtHash;
|
4742 | }
|
4743 | get author() {
|
4744 | return this.__internal__author;
|
4745 | }
|
4746 | get events() {
|
4747 | return this.__internal__events;
|
4748 | }
|
4749 | get extrinsics() {
|
4750 | return this.__internal__extrinsics;
|
4751 | }
|
4752 | }
|
4753 | return new Implementation(registry, block, events, validators, author);
|
4754 | }
|
4755 |
|
4756 | function getBlock(instanceId, api) {
|
4757 | return memo(instanceId, (blockHash) => combineLatest([
|
4758 | api.rpc.chain.getBlock(blockHash),
|
4759 | api.queryAt(blockHash)
|
4760 | ]).pipe(switchMap(([signedBlock, queryAt]) => combineLatest([
|
4761 | of(signedBlock),
|
4762 | queryAt.system.events(),
|
4763 | getAuthorDetails(api, signedBlock.block.header, blockHash)
|
4764 | ])), map(([signedBlock, events, [, validators, author]]) => createSignedBlockExtended(events.registry, signedBlock, events, validators, author))));
|
4765 | }
|
4766 |
|
4767 | function getBlockByNumber(instanceId, api) {
|
4768 | return memo(instanceId, (blockNumber) => api.rpc.chain.getBlockHash(blockNumber).pipe(switchMap((h) => api.derive.chain.getBlock(h))));
|
4769 | }
|
4770 |
|
4771 | function getHeader(instanceId, api) {
|
4772 | return memo(instanceId, (blockHash) => api.rpc.chain.getHeader(blockHash).pipe(switchMap((header) => getAuthorDetails(api, header, blockHash)), map(([header, validators, author]) => createHeaderExtended((validators || header).registry, header, validators, author))));
|
4773 | }
|
4774 |
|
4775 | function subscribeFinalizedBlocks(instanceId, api) {
|
4776 | return memo(instanceId, () => api.derive.chain.subscribeFinalizedHeads().pipe(switchMap((header) => api.derive.chain.getBlock(header.createdAtHash || header.hash))));
|
4777 | }
|
4778 |
|
4779 | function _getHeaderRange(instanceId, api) {
|
4780 | return memo(instanceId, (startHash, endHash, prev = []) => api.rpc.chain.getHeader(startHash).pipe(switchMap((header) => header.parentHash.eq(endHash)
|
4781 | ? of([header, ...prev])
|
4782 | : api.derive.chain._getHeaderRange(header.parentHash, endHash, [header, ...prev]))));
|
4783 | }
|
4784 | function subscribeFinalizedHeads(instanceId, api) {
|
4785 | return memo(instanceId, () => {
|
4786 | let prevHash = null;
|
4787 | return api.rpc.chain.subscribeFinalizedHeads().pipe(switchMap((header) => {
|
4788 | const endHash = prevHash;
|
4789 | const startHash = header.parentHash;
|
4790 | prevHash = header.createdAtHash = header.hash;
|
4791 | return endHash === null || startHash.eq(endHash)
|
4792 | ? of(header)
|
4793 | : api.derive.chain._getHeaderRange(startHash, endHash, [header]).pipe(switchMap((headers) => from(headers)));
|
4794 | }));
|
4795 | });
|
4796 | }
|
4797 |
|
4798 | function subscribeNewBlocks(instanceId, api) {
|
4799 | return memo(instanceId, () => api.derive.chain.subscribeNewHeads().pipe(switchMap((header) => api.derive.chain.getBlock(header.createdAtHash || header.hash))));
|
4800 | }
|
4801 |
|
4802 | function subscribeNewHeads(instanceId, api) {
|
4803 | return memo(instanceId, () => api.rpc.chain.subscribeNewHeads().pipe(switchMap((header) => getAuthorDetails(api, header)), map(([header, validators, author]) => {
|
4804 | header.createdAtHash = header.hash;
|
4805 | return createHeaderExtended(header.registry, header, validators, author);
|
4806 | })));
|
4807 | }
|
4808 |
|
4809 | const chain = Object.freeze({
|
4810 | __proto__: null,
|
4811 | _getHeaderRange: _getHeaderRange,
|
4812 | bestNumber: bestNumber,
|
4813 | bestNumberFinalized: bestNumberFinalized,
|
4814 | bestNumberLag: bestNumberLag,
|
4815 | getBlock: getBlock,
|
4816 | getBlockByNumber: getBlockByNumber,
|
4817 | getHeader: getHeader,
|
4818 | subscribeFinalizedBlocks: subscribeFinalizedBlocks,
|
4819 | subscribeFinalizedHeads: subscribeFinalizedHeads,
|
4820 | subscribeNewBlocks: subscribeNewBlocks,
|
4821 | subscribeNewHeads: subscribeNewHeads
|
4822 | });
|
4823 |
|
4824 | function queryConstants(api) {
|
4825 | return of([
|
4826 | api.consts.contracts['callBaseFee'] || api.registry.createType('Balance'),
|
4827 | api.consts.contracts['contractFee'] || api.registry.createType('Balance'),
|
4828 | api.consts.contracts['creationFee'] || api.registry.createType('Balance'),
|
4829 | api.consts.contracts['transactionBaseFee'] || api.registry.createType('Balance'),
|
4830 | api.consts.contracts['transactionByteFee'] || api.registry.createType('Balance'),
|
4831 | api.consts.contracts['transferFee'] || api.registry.createType('Balance'),
|
4832 | api.consts.contracts['rentByteFee'] || api.registry.createType('Balance'),
|
4833 | api.consts.contracts['rentDepositOffset'] || api.registry.createType('Balance'),
|
4834 | api.consts.contracts['surchargeReward'] || api.registry.createType('Balance'),
|
4835 | api.consts.contracts['tombstoneDeposit'] || api.registry.createType('Balance')
|
4836 | ]);
|
4837 | }
|
4838 | function fees(instanceId, api) {
|
4839 | return memo(instanceId, () => {
|
4840 | return queryConstants(api).pipe(map(([callBaseFee, contractFee, creationFee, transactionBaseFee, transactionByteFee, transferFee, rentByteFee, rentDepositOffset, surchargeReward, tombstoneDeposit]) => ({
|
4841 | callBaseFee,
|
4842 | contractFee,
|
4843 | creationFee,
|
4844 | rentByteFee,
|
4845 | rentDepositOffset,
|
4846 | surchargeReward,
|
4847 | tombstoneDeposit,
|
4848 | transactionBaseFee,
|
4849 | transactionByteFee,
|
4850 | transferFee
|
4851 | })));
|
4852 | });
|
4853 | }
|
4854 |
|
4855 | const contracts = Object.freeze({
|
4856 | __proto__: null,
|
4857 | fees: fees
|
4858 | });
|
4859 |
|
4860 | function isVoter(value) {
|
4861 | return !Array.isArray(value);
|
4862 | }
|
4863 | function retrieveStakeOf(elections) {
|
4864 | return elections['stakeOf'].entries().pipe(map((entries) => entries.map(([{ args: [accountId] }, stake]) => [accountId, stake])));
|
4865 | }
|
4866 | function retrieveVoteOf(elections) {
|
4867 | return elections['votesOf'].entries().pipe(map((entries) => entries.map(([{ args: [accountId] }, votes]) => [accountId, votes])));
|
4868 | }
|
4869 | function retrievePrev(api, elections) {
|
4870 | return combineLatest([
|
4871 | retrieveStakeOf(elections),
|
4872 | retrieveVoteOf(elections)
|
4873 | ]).pipe(map(([stakes, votes]) => {
|
4874 | const result = [];
|
4875 | votes.forEach(([voter, votes]) => {
|
4876 | result.push([voter, { stake: api.registry.createType('Balance'), votes }]);
|
4877 | });
|
4878 | stakes.forEach(([staker, stake]) => {
|
4879 | const entry = result.find(([voter]) => voter.eq(staker));
|
4880 | if (entry) {
|
4881 | entry[1].stake = stake;
|
4882 | }
|
4883 | else {
|
4884 | result.push([staker, { stake, votes: [] }]);
|
4885 | }
|
4886 | });
|
4887 | return result;
|
4888 | }));
|
4889 | }
|
4890 | function retrieveCurrent(elections) {
|
4891 | return elections.voting.entries().pipe(map((entries) => entries.map(([{ args: [accountId] }, value]) => [
|
4892 | accountId,
|
4893 | isVoter(value)
|
4894 | ? { stake: value.stake, votes: value.votes }
|
4895 | : { stake: value[0], votes: value[1] }
|
4896 | ])));
|
4897 | }
|
4898 | function votes(instanceId, api) {
|
4899 | const elections = api.query.elections || api.query['phragmenElection'] || api.query['electionsPhragmen'];
|
4900 | return memo(instanceId, () => elections
|
4901 | ? elections['stakeOf']
|
4902 | ? retrievePrev(api, elections)
|
4903 | : retrieveCurrent(elections)
|
4904 | : of([]));
|
4905 | }
|
4906 |
|
4907 | function votesOf(instanceId, api) {
|
4908 | return memo(instanceId, (accountId) => api.derive.council.votes().pipe(map((votes) => (votes.find(([from]) => from.eq(accountId)) ||
|
4909 | [null, { stake: api.registry.createType('Balance'), votes: [] }])[1])));
|
4910 | }
|
4911 |
|
4912 | const members$3 = members$5('council');
|
4913 | const hasProposals$2 = hasProposals$4('council');
|
4914 | const proposal$2 = proposal$4('council');
|
4915 | const proposalCount$2 = proposalCount$4('council');
|
4916 | const proposalHashes$2 = proposalHashes$4('council');
|
4917 | const proposals$4 = proposals$6('council');
|
4918 | const prime$2 = prime$4('council');
|
4919 |
|
4920 | const council = Object.freeze({
|
4921 | __proto__: null,
|
4922 | hasProposals: hasProposals$2,
|
4923 | members: members$3,
|
4924 | prime: prime$2,
|
4925 | proposal: proposal$2,
|
4926 | proposalCount: proposalCount$2,
|
4927 | proposalHashes: proposalHashes$2,
|
4928 | proposals: proposals$4,
|
4929 | votes: votes,
|
4930 | votesOf: votesOf
|
4931 | });
|
4932 |
|
4933 | function createChildKey(info) {
|
4934 | return util.u8aToHex(util.u8aConcat(':child_storage:default:', utilCrypto.blake2AsU8a(util.u8aConcat('crowdloan', (info.fundIndex || info.trieIndex).toU8a()))));
|
4935 | }
|
4936 | function childKey(instanceId, api) {
|
4937 | return memo(instanceId, (paraId) => api.query['crowdloan']['funds'](paraId).pipe(map((optInfo) => optInfo.isSome
|
4938 | ? createChildKey(optInfo.unwrap())
|
4939 | : null)));
|
4940 | }
|
4941 |
|
4942 | function extractContributed(paraId, events) {
|
4943 | const added = [];
|
4944 | const removed = [];
|
4945 | return events
|
4946 | .filter(({ event: { data: [, eventParaId], method, section } }) => section === 'crowdloan' &&
|
4947 | ['Contributed', 'Withdrew'].includes(method) &&
|
4948 | eventParaId.eq(paraId))
|
4949 | .reduce((result, { event: { data: [accountId], method } }) => {
|
4950 | if (method === 'Contributed') {
|
4951 | result.added.push(accountId.toHex());
|
4952 | }
|
4953 | else {
|
4954 | result.removed.push(accountId.toHex());
|
4955 | }
|
4956 | return result;
|
4957 | }, { added, blockHash: events.createdAtHash?.toHex() || '-', removed });
|
4958 | }
|
4959 |
|
4960 | const PAGE_SIZE_K$1 = 1000;
|
4961 | function _getUpdates(api, paraId) {
|
4962 | let added = [];
|
4963 | let removed = [];
|
4964 | return api.query.system.events().pipe(switchMap((events) => {
|
4965 | const changes = extractContributed(paraId, events);
|
4966 | if (changes.added.length || changes.removed.length) {
|
4967 | added = added.concat(...changes.added);
|
4968 | removed = removed.concat(...changes.removed);
|
4969 | return of({ added, addedDelta: changes.added, blockHash: events.createdAtHash?.toHex() || '-', removed, removedDelta: changes.removed });
|
4970 | }
|
4971 | return EMPTY;
|
4972 | }), startWith({ added, addedDelta: [], blockHash: '-', removed, removedDelta: [] }));
|
4973 | }
|
4974 | function _eventTriggerAll(api, paraId) {
|
4975 | return api.query.system.events().pipe(switchMap((events) => {
|
4976 | const items = events.filter(({ event: { data: [eventParaId], method, section } }) => section === 'crowdloan' &&
|
4977 | ['AllRefunded', 'Dissolved', 'PartiallyRefunded'].includes(method) &&
|
4978 | eventParaId.eq(paraId));
|
4979 | return items.length
|
4980 | ? of(events.createdAtHash?.toHex() || '-')
|
4981 | : EMPTY;
|
4982 | }), startWith('-'));
|
4983 | }
|
4984 | function _getKeysPaged(api, childKey) {
|
4985 | const subject = new BehaviorSubject(undefined);
|
4986 | return subject.pipe(switchMap((startKey) => api.rpc.childstate.getKeysPaged(childKey, '0x', PAGE_SIZE_K$1, startKey)), tap((keys) => {
|
4987 | util.nextTick(() => {
|
4988 | keys.length === PAGE_SIZE_K$1
|
4989 | ? subject.next(keys[PAGE_SIZE_K$1 - 1].toHex())
|
4990 | : subject.complete();
|
4991 | });
|
4992 | }), toArray(),
|
4993 | map((keyArr) => util.arrayFlatten(keyArr)));
|
4994 | }
|
4995 | function _getAll(api, paraId, childKey) {
|
4996 | return _eventTriggerAll(api, paraId).pipe(switchMap(() => util.isFunction(api.rpc.childstate.getKeysPaged)
|
4997 | ? _getKeysPaged(api, childKey)
|
4998 | : api.rpc.childstate.getKeys(childKey, '0x')), map((keys) => keys.map((k) => k.toHex())));
|
4999 | }
|
5000 | function _contributions$1(api, paraId, childKey) {
|
5001 | return combineLatest([
|
5002 | _getAll(api, paraId, childKey),
|
5003 | _getUpdates(api, paraId)
|
5004 | ]).pipe(map(([keys, { added, blockHash, removed }]) => {
|
5005 | const contributorsMap = {};
|
5006 | keys.forEach((k) => {
|
5007 | contributorsMap[k] = true;
|
5008 | });
|
5009 | added.forEach((k) => {
|
5010 | contributorsMap[k] = true;
|
5011 | });
|
5012 | removed.forEach((k) => {
|
5013 | delete contributorsMap[k];
|
5014 | });
|
5015 | return {
|
5016 | blockHash,
|
5017 | contributorsHex: Object.keys(contributorsMap)
|
5018 | };
|
5019 | }));
|
5020 | }
|
5021 | function contributions(instanceId, api) {
|
5022 | return memo(instanceId, (paraId) => api.derive.crowdloan.childKey(paraId).pipe(switchMap((childKey) => childKey
|
5023 | ? _contributions$1(api, paraId, childKey)
|
5024 | : of({ blockHash: '-', contributorsHex: [] }))));
|
5025 | }
|
5026 |
|
5027 | function _getValues(api, childKey, keys) {
|
5028 | return combineLatest(keys.map((k) => api.rpc.childstate.getStorage(childKey, k))).pipe(map((values) => values
|
5029 | .map((v) => api.registry.createType('Option<StorageData>', v))
|
5030 | .map((o) => o.isSome
|
5031 | ? api.registry.createType('Balance', o.unwrap())
|
5032 | : api.registry.createType('Balance'))
|
5033 | .reduce((all, b, index) => util.objectSpread(all, { [keys[index]]: b }), {})));
|
5034 | }
|
5035 | function _watchOwnChanges(api, paraId, childkey, keys) {
|
5036 | return api.query.system.events().pipe(switchMap((events) => {
|
5037 | const changes = extractContributed(paraId, events);
|
5038 | const filtered = keys.filter((k) => changes.added.includes(k) ||
|
5039 | changes.removed.includes(k));
|
5040 | return filtered.length
|
5041 | ? _getValues(api, childkey, filtered)
|
5042 | : EMPTY;
|
5043 | }), startWith({}));
|
5044 | }
|
5045 | function _contributions(api, paraId, childKey, keys) {
|
5046 | return combineLatest([
|
5047 | _getValues(api, childKey, keys),
|
5048 | _watchOwnChanges(api, paraId, childKey, keys)
|
5049 | ]).pipe(map(([all, latest]) => util.objectSpread({}, all, latest)));
|
5050 | }
|
5051 | function ownContributions(instanceId, api) {
|
5052 | return memo(instanceId, (paraId, keys) => api.derive.crowdloan.childKey(paraId).pipe(switchMap((childKey) => childKey && keys.length
|
5053 | ? _contributions(api, paraId, childKey, keys)
|
5054 | : of({}))));
|
5055 | }
|
5056 |
|
5057 | const crowdloan = Object.freeze({
|
5058 | __proto__: null,
|
5059 | childKey: childKey,
|
5060 | contributions: contributions,
|
5061 | ownContributions: ownContributions
|
5062 | });
|
5063 |
|
5064 | function isOldInfo(info) {
|
5065 | return !!info.proposalHash;
|
5066 | }
|
5067 | function isCurrentStatus(status) {
|
5068 | return !!status.tally;
|
5069 | }
|
5070 | function compareRationals(n1, d1, n2, d2) {
|
5071 | while (true) {
|
5072 | const q1 = n1.div(d1);
|
5073 | const q2 = n2.div(d2);
|
5074 | if (q1.lt(q2)) {
|
5075 | return true;
|
5076 | }
|
5077 | else if (q2.lt(q1)) {
|
5078 | return false;
|
5079 | }
|
5080 | const r1 = n1.mod(d1);
|
5081 | const r2 = n2.mod(d2);
|
5082 | if (r2.isZero()) {
|
5083 | return false;
|
5084 | }
|
5085 | else if (r1.isZero()) {
|
5086 | return true;
|
5087 | }
|
5088 | n1 = d2;
|
5089 | n2 = d1;
|
5090 | d1 = r2;
|
5091 | d2 = r1;
|
5092 | }
|
5093 | }
|
5094 | function calcPassingOther(threshold, sqrtElectorate, { votedAye, votedNay, votedTotal }) {
|
5095 | const sqrtVoters = util.bnSqrt(votedTotal);
|
5096 | return sqrtVoters.isZero()
|
5097 | ? false
|
5098 | : threshold.isSuperMajorityApprove
|
5099 | ? compareRationals(votedNay, sqrtVoters, votedAye, sqrtElectorate)
|
5100 | : compareRationals(votedNay, sqrtElectorate, votedAye, sqrtVoters);
|
5101 | }
|
5102 | function calcPassing(threshold, sqrtElectorate, state) {
|
5103 | return threshold.isSimpleMajority
|
5104 | ? state.votedAye.gt(state.votedNay)
|
5105 | : calcPassingOther(threshold, sqrtElectorate, state);
|
5106 | }
|
5107 | function calcVotesPrev(votesFor) {
|
5108 | return votesFor.reduce((state, derived) => {
|
5109 | const { balance, vote } = derived;
|
5110 | const isDefault = vote.conviction.index === 0;
|
5111 | const counted = balance
|
5112 | .muln(isDefault ? 1 : vote.conviction.index)
|
5113 | .divn(isDefault ? 10 : 1);
|
5114 | if (vote.isAye) {
|
5115 | state.allAye.push(derived);
|
5116 | state.voteCountAye++;
|
5117 | state.votedAye.iadd(counted);
|
5118 | }
|
5119 | else {
|
5120 | state.allNay.push(derived);
|
5121 | state.voteCountNay++;
|
5122 | state.votedNay.iadd(counted);
|
5123 | }
|
5124 | state.voteCount++;
|
5125 | state.votedTotal.iadd(counted);
|
5126 | return state;
|
5127 | }, { allAye: [], allNay: [], voteCount: 0, voteCountAye: 0, voteCountNay: 0, votedAye: new util.BN(0), votedNay: new util.BN(0), votedTotal: new util.BN(0) });
|
5128 | }
|
5129 | function calcVotesCurrent(tally, votes) {
|
5130 | const allAye = [];
|
5131 | const allNay = [];
|
5132 | votes.forEach((derived) => {
|
5133 | if (derived.vote.isAye) {
|
5134 | allAye.push(derived);
|
5135 | }
|
5136 | else {
|
5137 | allNay.push(derived);
|
5138 | }
|
5139 | });
|
5140 | return {
|
5141 | allAye,
|
5142 | allNay,
|
5143 | voteCount: allAye.length + allNay.length,
|
5144 | voteCountAye: allAye.length,
|
5145 | voteCountNay: allNay.length,
|
5146 | votedAye: tally.ayes,
|
5147 | votedNay: tally.nays,
|
5148 | votedTotal: tally.turnout
|
5149 | };
|
5150 | }
|
5151 | function calcVotes(sqrtElectorate, referendum, votes) {
|
5152 | const state = isCurrentStatus(referendum.status)
|
5153 | ? calcVotesCurrent(referendum.status.tally, votes)
|
5154 | : calcVotesPrev(votes);
|
5155 | return util.objectSpread({}, state, {
|
5156 | isPassing: calcPassing(referendum.status.threshold, sqrtElectorate, state),
|
5157 | votes
|
5158 | });
|
5159 | }
|
5160 | function getStatus(info) {
|
5161 | if (info.isNone) {
|
5162 | return null;
|
5163 | }
|
5164 | const unwrapped = info.unwrap();
|
5165 | return isOldInfo(unwrapped)
|
5166 | ? unwrapped
|
5167 | : unwrapped.isOngoing
|
5168 | ? unwrapped.asOngoing
|
5169 | : null;
|
5170 | }
|
5171 | function getImageHashBounded(hash) {
|
5172 | return hash.isLegacy
|
5173 | ? hash.asLegacy.hash_.toHex()
|
5174 | : hash.isLookup
|
5175 | ? hash.asLookup.hash_.toHex()
|
5176 | : hash.isInline
|
5177 | ? hash.asInline.hash.toHex()
|
5178 | : util.isString(hash)
|
5179 | ? util.isHex(hash)
|
5180 | ? hash
|
5181 | : util.stringToHex(hash)
|
5182 | : util.isU8a(hash)
|
5183 | ? util.u8aToHex(hash)
|
5184 | : hash.toHex();
|
5185 | }
|
5186 | function getImageHash(status) {
|
5187 | return getImageHashBounded(status.proposal ||
|
5188 | status.proposalHash);
|
5189 | }
|
5190 |
|
5191 | const DEMOCRACY_ID = util.stringToHex('democrac');
|
5192 | function isMaybeHashedOrBounded(call) {
|
5193 | return call instanceof types.Enum;
|
5194 | }
|
5195 | function isBounded(call) {
|
5196 | return call.isInline || call.isLegacy || call.isLookup;
|
5197 | }
|
5198 | function queryQueue(api) {
|
5199 | return api.query.democracy['dispatchQueue']().pipe(switchMap((dispatches) => combineLatest([
|
5200 | of(dispatches),
|
5201 | api.derive.democracy.preimages(dispatches.map(([, hash]) => hash))
|
5202 | ])), map(([dispatches, images]) => dispatches.map(([at, imageHash, index], dispatchIndex) => ({
|
5203 | at,
|
5204 | image: images[dispatchIndex],
|
5205 | imageHash: getImageHashBounded(imageHash),
|
5206 | index
|
5207 | }))));
|
5208 | }
|
5209 | function schedulerEntries(api) {
|
5210 | return api.derive.democracy.referendumsFinished().pipe(switchMap(() => api.query.scheduler.agenda.keys()), switchMap((keys) => {
|
5211 | const blockNumbers = keys.map(({ args: [blockNumber] }) => blockNumber);
|
5212 | return blockNumbers.length
|
5213 | ? combineLatest([
|
5214 | of(blockNumbers),
|
5215 | api.query.scheduler.agenda.multi(blockNumbers).pipe(catchError(() => of(blockNumbers.map(() => []))))
|
5216 | ])
|
5217 | : of([[], []]);
|
5218 | }));
|
5219 | }
|
5220 | function queryScheduler(api) {
|
5221 | return schedulerEntries(api).pipe(switchMap(([blockNumbers, agendas]) => {
|
5222 | const result = [];
|
5223 | blockNumbers.forEach((at, index) => {
|
5224 | (agendas[index] || []).filter((o) => o.isSome).forEach((o) => {
|
5225 | const scheduled = o.unwrap();
|
5226 | if (scheduled.maybeId.isSome) {
|
5227 | const id = scheduled.maybeId.unwrap().toHex();
|
5228 | if (id.startsWith(DEMOCRACY_ID)) {
|
5229 | const imageHash = isMaybeHashedOrBounded(scheduled.call)
|
5230 | ? isBounded(scheduled.call)
|
5231 | ? getImageHashBounded(scheduled.call)
|
5232 | : scheduled.call.isHash
|
5233 | ? scheduled.call.asHash.toHex()
|
5234 | : scheduled.call.asValue.args[0].toHex()
|
5235 | : scheduled.call.args[0].toHex();
|
5236 | result.push({ at, imageHash, index: api.registry.createType('(u64, ReferendumIndex)', id)[1] });
|
5237 | }
|
5238 | }
|
5239 | });
|
5240 | });
|
5241 | return combineLatest([
|
5242 | of(result),
|
5243 | result.length
|
5244 | ? api.derive.democracy.preimages(result.map(({ imageHash }) => imageHash))
|
5245 | : of([])
|
5246 | ]);
|
5247 | }), map(([infos, images]) => infos.map((info, index) => util.objectSpread({ image: images[index] }, info))));
|
5248 | }
|
5249 | function dispatchQueue(instanceId, api) {
|
5250 | return memo(instanceId, () => util.isFunction(api.query.scheduler?.agenda)
|
5251 | ? queryScheduler(api)
|
5252 | : api.query.democracy['dispatchQueue']
|
5253 | ? queryQueue(api)
|
5254 | : of([]));
|
5255 | }
|
5256 |
|
5257 | const LOCKUPS = [0, 1, 2, 4, 8, 16, 32];
|
5258 | function parseEnd(api, vote, { approved, end }) {
|
5259 | return [
|
5260 | end,
|
5261 | (approved.isTrue && vote.isAye) || (approved.isFalse && vote.isNay)
|
5262 | ? end.add((api.consts.democracy.voteLockingPeriod ||
|
5263 | api.consts.democracy.enactmentPeriod).muln(LOCKUPS[vote.conviction.index]))
|
5264 | : util.BN_ZERO
|
5265 | ];
|
5266 | }
|
5267 | function parseLock(api, [referendumId, accountVote], referendum) {
|
5268 | const { balance, vote } = accountVote.asStandard;
|
5269 | const [referendumEnd, unlockAt] = referendum.isFinished
|
5270 | ? parseEnd(api, vote, referendum.asFinished)
|
5271 | : [util.BN_ZERO, util.BN_ZERO];
|
5272 | return { balance, isDelegated: false, isFinished: referendum.isFinished, referendumEnd, referendumId, unlockAt, vote };
|
5273 | }
|
5274 | function delegateLocks(api, { balance, conviction, target }) {
|
5275 | return api.derive.democracy.locks(target).pipe(map((available) => available.map(({ isFinished, referendumEnd, referendumId, unlockAt, vote }) => ({
|
5276 | balance,
|
5277 | isDelegated: true,
|
5278 | isFinished,
|
5279 | referendumEnd,
|
5280 | referendumId,
|
5281 | unlockAt: unlockAt.isZero()
|
5282 | ? unlockAt
|
5283 | : referendumEnd.add((api.consts.democracy.voteLockingPeriod ||
|
5284 | api.consts.democracy.enactmentPeriod).muln(LOCKUPS[conviction.index])),
|
5285 | vote: api.registry.createType('Vote', { aye: vote.isAye, conviction })
|
5286 | }))));
|
5287 | }
|
5288 | function directLocks(api, { votes }) {
|
5289 | if (!votes.length) {
|
5290 | return of([]);
|
5291 | }
|
5292 | return api.query.democracy.referendumInfoOf.multi(votes.map(([referendumId]) => referendumId)).pipe(map((referendums) => votes
|
5293 | .map((vote, index) => [vote, referendums[index].unwrapOr(null)])
|
5294 | .filter((item) => !!item[1] && util.isUndefined(item[1].end) && item[0][1].isStandard)
|
5295 | .map(([directVote, referendum]) => parseLock(api, directVote, referendum))));
|
5296 | }
|
5297 | function locks(instanceId, api) {
|
5298 | return memo(instanceId, (accountId) => api.query.democracy.votingOf
|
5299 | ? api.query.democracy.votingOf(accountId).pipe(switchMap((voting) => voting.isDirect
|
5300 | ? directLocks(api, voting.asDirect)
|
5301 | : voting.isDelegating
|
5302 | ? delegateLocks(api, voting.asDelegating)
|
5303 | : of([])))
|
5304 | : of([]));
|
5305 | }
|
5306 |
|
5307 | function withImage(api, nextOpt) {
|
5308 | if (nextOpt.isNone) {
|
5309 | return of(null);
|
5310 | }
|
5311 | const [hash, threshold] = nextOpt.unwrap();
|
5312 | return api.derive.democracy.preimage(hash).pipe(map((image) => ({
|
5313 | image,
|
5314 | imageHash: getImageHashBounded(hash),
|
5315 | threshold
|
5316 | })));
|
5317 | }
|
5318 | function nextExternal(instanceId, api) {
|
5319 | return memo(instanceId, () => api.query.democracy?.nextExternal
|
5320 | ? api.query.democracy.nextExternal().pipe(switchMap((nextOpt) => withImage(api, nextOpt)))
|
5321 | : of(null));
|
5322 | }
|
5323 |
|
5324 | function getUnrequestedTicket(status) {
|
5325 | return status.ticket || status.deposit;
|
5326 | }
|
5327 | function getRequestedTicket(status) {
|
5328 | return (status.maybeTicket || status.deposit).unwrapOrDefault();
|
5329 | }
|
5330 | function isDemocracyPreimage(api, imageOpt) {
|
5331 | return !!imageOpt && !api.query.democracy['dispatchQueue'];
|
5332 | }
|
5333 | function constructProposal(api, [bytes, proposer, balance, at]) {
|
5334 | let proposal;
|
5335 | try {
|
5336 | proposal = api.registry.createType('Call', bytes.toU8a(true));
|
5337 | }
|
5338 | catch (error) {
|
5339 | console.error(error);
|
5340 | }
|
5341 | return { at, balance, proposal, proposer };
|
5342 | }
|
5343 | function parseDemocracy(api, imageOpt) {
|
5344 | if (imageOpt.isNone) {
|
5345 | return;
|
5346 | }
|
5347 | if (isDemocracyPreimage(api, imageOpt)) {
|
5348 | const status = imageOpt.unwrap();
|
5349 | if (status.isMissing) {
|
5350 | return;
|
5351 | }
|
5352 | const { data, deposit, provider, since } = status.asAvailable;
|
5353 | return constructProposal(api, [data, provider, deposit, since]);
|
5354 | }
|
5355 | return constructProposal(api, imageOpt.unwrap());
|
5356 | }
|
5357 | function parseImage(api, [proposalHash, status, bytes]) {
|
5358 | if (!status) {
|
5359 | return undefined;
|
5360 | }
|
5361 | const [proposer, balance] = status.isUnrequested
|
5362 | ? getUnrequestedTicket(status.asUnrequested)
|
5363 | : getRequestedTicket(status.asRequested);
|
5364 | let proposal;
|
5365 | if (bytes) {
|
5366 | try {
|
5367 | proposal = api.registry.createType('Call', bytes.toU8a(true));
|
5368 | }
|
5369 | catch (error) {
|
5370 | console.error(error);
|
5371 | }
|
5372 | }
|
5373 | return { at: util.BN_ZERO, balance, proposal, proposalHash, proposer };
|
5374 | }
|
5375 | function getDemocracyImages(api, bounded) {
|
5376 | const hashes = bounded.map((b) => getImageHashBounded(b));
|
5377 | return api.query.democracy['preimages'].multi(hashes).pipe(map((images) => images.map((imageOpt) => parseDemocracy(api, imageOpt))));
|
5378 | }
|
5379 | function getImages(api, bounded) {
|
5380 | const hashes = bounded.map((b) => getImageHashBounded(b));
|
5381 | const bytesType = api.registry.lookup.getTypeDef(api.query.preimage.preimageFor.creator.meta.type.asMap.key).type;
|
5382 | return api.query.preimage.statusFor.multi(hashes).pipe(switchMap((optStatus) => {
|
5383 | const statuses = optStatus.map((o) => o.unwrapOr(null));
|
5384 | const keys = statuses
|
5385 | .map((s, i) => s
|
5386 | ? bytesType === 'H256'
|
5387 | ? hashes[i]
|
5388 | : s.isRequested
|
5389 | ? [hashes[i], s.asRequested.len.unwrapOr(0)]
|
5390 | : [hashes[i], s.asUnrequested.len]
|
5391 | : null)
|
5392 | .filter((p) => !!p);
|
5393 | return api.query.preimage.preimageFor.multi(keys).pipe(map((optBytes) => {
|
5394 | let ptr = -1;
|
5395 | return statuses
|
5396 | .map((s, i) => s
|
5397 | ? [hashes[i], s, optBytes[++ptr].unwrapOr(null)]
|
5398 | : [hashes[i], null, null])
|
5399 | .map((v) => parseImage(api, v));
|
5400 | }));
|
5401 | }));
|
5402 | }
|
5403 | function preimages(instanceId, api) {
|
5404 | return memo(instanceId, (hashes) => hashes.length
|
5405 | ? util.isFunction(api.query.democracy['preimages'])
|
5406 | ? getDemocracyImages(api, hashes)
|
5407 | : util.isFunction(api.query.preimage.preimageFor)
|
5408 | ? getImages(api, hashes)
|
5409 | : of([])
|
5410 | : of([]));
|
5411 | }
|
5412 | const preimage = firstMemo((api, hash) => api.derive.democracy.preimages([hash]));
|
5413 |
|
5414 | function isNewDepositors(depositors) {
|
5415 | return util.isFunction(depositors[1].mul);
|
5416 | }
|
5417 | function parse$3([proposals, images, optDepositors]) {
|
5418 | return proposals
|
5419 | .filter(([, , proposer], index) => !!(optDepositors[index]?.isSome) && !proposer.isEmpty)
|
5420 | .map(([index, hash, proposer], proposalIndex) => {
|
5421 | const depositors = optDepositors[proposalIndex].unwrap();
|
5422 | return util.objectSpread({
|
5423 | image: images[proposalIndex],
|
5424 | imageHash: getImageHashBounded(hash),
|
5425 | index,
|
5426 | proposer
|
5427 | }, isNewDepositors(depositors)
|
5428 | ? { balance: depositors[1], seconds: depositors[0] }
|
5429 | : { balance: depositors[0], seconds: depositors[1] });
|
5430 | });
|
5431 | }
|
5432 | function proposals$3(instanceId, api) {
|
5433 | return memo(instanceId, () => util.isFunction(api.query.democracy?.publicProps)
|
5434 | ? api.query.democracy.publicProps().pipe(switchMap((proposals) => proposals.length
|
5435 | ? combineLatest([
|
5436 | of(proposals),
|
5437 | api.derive.democracy.preimages(proposals.map(([, hash]) => hash)),
|
5438 | api.query.democracy.depositOf.multi(proposals.map(([index]) => index))
|
5439 | ])
|
5440 | : of([[], [], []])), map(parse$3))
|
5441 | : of([]));
|
5442 | }
|
5443 |
|
5444 | function referendumIds(instanceId, api) {
|
5445 | return memo(instanceId, () => api.query.democracy?.lowestUnbaked
|
5446 | ? api.queryMulti([
|
5447 | api.query.democracy.lowestUnbaked,
|
5448 | api.query.democracy.referendumCount
|
5449 | ]).pipe(map(([first, total]) => total.gt(first)
|
5450 | ? [...Array(total.sub(first).toNumber())].map((_, i) => first.addn(i))
|
5451 | : []))
|
5452 | : of([]));
|
5453 | }
|
5454 |
|
5455 | function referendums(instanceId, api) {
|
5456 | return memo(instanceId, () => api.derive.democracy.referendumsActive().pipe(switchMap((referendums) => referendums.length
|
5457 | ? combineLatest([
|
5458 | of(referendums),
|
5459 | api.derive.democracy._referendumsVotes(referendums)
|
5460 | ])
|
5461 | : of([[], []])), map(([referendums, votes]) => referendums.map((referendum, index) => util.objectSpread({}, referendum, votes[index])))));
|
5462 | }
|
5463 |
|
5464 | function referendumsActive(instanceId, api) {
|
5465 | return memo(instanceId, () => api.derive.democracy.referendumIds().pipe(switchMap((ids) => ids.length
|
5466 | ? api.derive.democracy.referendumsInfo(ids)
|
5467 | : of([]))));
|
5468 | }
|
5469 |
|
5470 | function referendumsFinished(instanceId, api) {
|
5471 | return memo(instanceId, () => api.derive.democracy.referendumIds().pipe(switchMap((ids) => api.query.democracy.referendumInfoOf.multi(ids)), map((infos) => infos
|
5472 | .map((o) => o.unwrapOr(null))
|
5473 | .filter((info) => !!info && info.isFinished)
|
5474 | .map((info) => info.asFinished))));
|
5475 | }
|
5476 |
|
5477 | function votesPrev(api, referendumId) {
|
5478 | return api.query.democracy['votersFor'](referendumId).pipe(switchMap((votersFor) => combineLatest([
|
5479 | of(votersFor),
|
5480 | votersFor.length
|
5481 | ? api.query.democracy['voteOf'].multi(votersFor.map((accountId) => [referendumId, accountId]))
|
5482 | : of([]),
|
5483 | api.derive.balances.votingBalances(votersFor)
|
5484 | ])), map(([votersFor, votes, balances]) => votersFor.map((accountId, index) => ({
|
5485 | accountId,
|
5486 | balance: balances[index].votingBalance || api.registry.createType('Balance'),
|
5487 | isDelegating: false,
|
5488 | vote: votes[index] || api.registry.createType('Vote')
|
5489 | }))));
|
5490 | }
|
5491 | function extractVotes(mapped, referendumId) {
|
5492 | return mapped
|
5493 | .filter(([, voting]) => voting.isDirect)
|
5494 | .map(([accountId, voting]) => [
|
5495 | accountId,
|
5496 | voting.asDirect.votes.filter(([idx]) => idx.eq(referendumId))
|
5497 | ])
|
5498 | .filter(([, directVotes]) => !!directVotes.length)
|
5499 | .reduce((result, [accountId, votes]) =>
|
5500 | votes.reduce((result, [, vote]) => {
|
5501 | if (vote.isStandard) {
|
5502 | result.push(util.objectSpread({
|
5503 | accountId,
|
5504 | isDelegating: false
|
5505 | }, vote.asStandard));
|
5506 | }
|
5507 | return result;
|
5508 | }, result), []);
|
5509 | }
|
5510 | function votesCurr(api, referendumId) {
|
5511 | return api.query.democracy.votingOf.entries().pipe(map((allVoting) => {
|
5512 | const mapped = allVoting.map(([{ args: [accountId] }, voting]) => [accountId, voting]);
|
5513 | const votes = extractVotes(mapped, referendumId);
|
5514 | const delegations = mapped
|
5515 | .filter(([, voting]) => voting.isDelegating)
|
5516 | .map(([accountId, voting]) => [accountId, voting.asDelegating]);
|
5517 | delegations.forEach(([accountId, { balance, conviction, target }]) => {
|
5518 | const toDelegator = delegations.find(([accountId]) => accountId.eq(target));
|
5519 | const to = votes.find(({ accountId }) => accountId.eq(toDelegator ? toDelegator[0] : target));
|
5520 | if (to) {
|
5521 | votes.push({
|
5522 | accountId,
|
5523 | balance,
|
5524 | isDelegating: true,
|
5525 | vote: api.registry.createType('Vote', { aye: to.vote.isAye, conviction })
|
5526 | });
|
5527 | }
|
5528 | });
|
5529 | return votes;
|
5530 | }));
|
5531 | }
|
5532 | function _referendumVotes(instanceId, api) {
|
5533 | return memo(instanceId, (referendum) => combineLatest([
|
5534 | api.derive.democracy.sqrtElectorate(),
|
5535 | util.isFunction(api.query.democracy.votingOf)
|
5536 | ? votesCurr(api, referendum.index)
|
5537 | : votesPrev(api, referendum.index)
|
5538 | ]).pipe(map(([sqrtElectorate, votes]) => calcVotes(sqrtElectorate, referendum, votes))));
|
5539 | }
|
5540 | function _referendumsVotes(instanceId, api) {
|
5541 | return memo(instanceId, (referendums) => referendums.length
|
5542 | ? combineLatest(referendums.map((referendum) => api.derive.democracy._referendumVotes(referendum)))
|
5543 | : of([]));
|
5544 | }
|
5545 | function _referendumInfo(instanceId, api) {
|
5546 | return memo(instanceId, (index, info) => {
|
5547 | const status = getStatus(info);
|
5548 | return status
|
5549 | ? api.derive.democracy.preimage(status.proposal ||
|
5550 | status.proposalHash).pipe(map((image) => ({
|
5551 | image,
|
5552 | imageHash: getImageHash(status),
|
5553 | index: api.registry.createType('ReferendumIndex', index),
|
5554 | status
|
5555 | })))
|
5556 | : of(null);
|
5557 | });
|
5558 | }
|
5559 | function referendumsInfo(instanceId, api) {
|
5560 | return memo(instanceId, (ids) => ids.length
|
5561 | ? api.query.democracy.referendumInfoOf.multi(ids).pipe(switchMap((infos) => combineLatest(ids.map((id, index) => api.derive.democracy._referendumInfo(id, infos[index])))), map((infos) => infos.filter((r) => !!r)))
|
5562 | : of([]));
|
5563 | }
|
5564 |
|
5565 | function sqrtElectorate(instanceId, api) {
|
5566 | return memo(instanceId, () => api.query.balances.totalIssuance().pipe(map(util.bnSqrt)));
|
5567 | }
|
5568 |
|
5569 | const democracy = Object.freeze({
|
5570 | __proto__: null,
|
5571 | _referendumInfo: _referendumInfo,
|
5572 | _referendumVotes: _referendumVotes,
|
5573 | _referendumsVotes: _referendumsVotes,
|
5574 | dispatchQueue: dispatchQueue,
|
5575 | locks: locks,
|
5576 | nextExternal: nextExternal,
|
5577 | preimage: preimage,
|
5578 | preimages: preimages,
|
5579 | proposals: proposals$3,
|
5580 | referendumIds: referendumIds,
|
5581 | referendums: referendums,
|
5582 | referendumsActive: referendumsActive,
|
5583 | referendumsFinished: referendumsFinished,
|
5584 | referendumsInfo: referendumsInfo,
|
5585 | sqrtElectorate: sqrtElectorate
|
5586 | });
|
5587 |
|
5588 | function isSeatHolder(value) {
|
5589 | return !Array.isArray(value);
|
5590 | }
|
5591 | function isCandidateTuple(value) {
|
5592 | return Array.isArray(value);
|
5593 | }
|
5594 | function getAccountTuple(value) {
|
5595 | return isSeatHolder(value)
|
5596 | ? [value.who, value.stake]
|
5597 | : value;
|
5598 | }
|
5599 | function getCandidate(value) {
|
5600 | return isCandidateTuple(value)
|
5601 | ? value[0]
|
5602 | : value;
|
5603 | }
|
5604 | function sortAccounts([, balanceA], [, balanceB]) {
|
5605 | return balanceB.cmp(balanceA);
|
5606 | }
|
5607 | function getConstants(api, elections) {
|
5608 | return elections
|
5609 | ? {
|
5610 | candidacyBond: api.consts[elections].candidacyBond,
|
5611 | desiredRunnersUp: api.consts[elections].desiredRunnersUp,
|
5612 | desiredSeats: api.consts[elections].desiredMembers,
|
5613 | termDuration: api.consts[elections].termDuration,
|
5614 | votingBond: api.consts[elections]['votingBond'],
|
5615 | votingBondBase: api.consts[elections].votingBondBase,
|
5616 | votingBondFactor: api.consts[elections].votingBondFactor
|
5617 | }
|
5618 | : {};
|
5619 | }
|
5620 | function getModules(api) {
|
5621 | const [council] = api.registry.getModuleInstances(api.runtimeVersion.specName, 'council') || ['council'];
|
5622 | const elections = api.query['phragmenElection']
|
5623 | ? 'phragmenElection'
|
5624 | : api.query['electionsPhragmen']
|
5625 | ? 'electionsPhragmen'
|
5626 | : api.query.elections
|
5627 | ? 'elections'
|
5628 | : null;
|
5629 | const resolvedCouncil = api.query[council] ? council : 'council';
|
5630 | return [resolvedCouncil, elections];
|
5631 | }
|
5632 | function queryAll(api, council, elections) {
|
5633 | return api.queryMulti([
|
5634 | api.query[council].members,
|
5635 | api.query[elections].candidates,
|
5636 | api.query[elections].members,
|
5637 | api.query[elections].runnersUp
|
5638 | ]);
|
5639 | }
|
5640 | function queryCouncil(api, council) {
|
5641 | return combineLatest([
|
5642 | api.query[council].members(),
|
5643 | of([]),
|
5644 | of([]),
|
5645 | of([])
|
5646 | ]);
|
5647 | }
|
5648 | function info$3(instanceId, api) {
|
5649 | return memo(instanceId, () => {
|
5650 | const [council, elections] = getModules(api);
|
5651 | return (elections
|
5652 | ? queryAll(api, council, elections)
|
5653 | : queryCouncil(api, council)).pipe(map(([councilMembers, candidates, members, runnersUp]) => util.objectSpread({}, getConstants(api, elections), {
|
5654 | candidateCount: api.registry.createType('u32', candidates.length),
|
5655 | candidates: candidates.map(getCandidate),
|
5656 | members: members.length
|
5657 | ? members.map(getAccountTuple).sort(sortAccounts)
|
5658 | : councilMembers.map((a) => [a, api.registry.createType('Balance')]),
|
5659 | runnersUp: runnersUp.map(getAccountTuple).sort(sortAccounts)
|
5660 | })));
|
5661 | });
|
5662 | }
|
5663 |
|
5664 | const elections = Object.freeze({
|
5665 | __proto__: null,
|
5666 | info: info$3
|
5667 | });
|
5668 |
|
5669 | function mapResult([result, validators, heartbeats, numBlocks]) {
|
5670 | validators.forEach((validator, index) => {
|
5671 | const validatorId = validator.toString();
|
5672 | const blockCount = numBlocks[index];
|
5673 | const hasMessage = !heartbeats[index].isEmpty;
|
5674 | const prev = result[validatorId];
|
5675 | if (!prev || prev.hasMessage !== hasMessage || !prev.blockCount.eq(blockCount)) {
|
5676 | result[validatorId] = {
|
5677 | blockCount,
|
5678 | hasMessage,
|
5679 | isOnline: hasMessage || blockCount.gt(util.BN_ZERO)
|
5680 | };
|
5681 | }
|
5682 | });
|
5683 | return result;
|
5684 | }
|
5685 | function receivedHeartbeats(instanceId, api) {
|
5686 | return memo(instanceId, () => api.query.imOnline?.receivedHeartbeats
|
5687 | ? api.derive.staking.overview().pipe(switchMap(({ currentIndex, validators }) => combineLatest([
|
5688 | of({}),
|
5689 | of(validators),
|
5690 | api.query.imOnline.receivedHeartbeats.multi(validators.map((_address, index) => [currentIndex, index])),
|
5691 | api.query.imOnline.authoredBlocks.multi(validators.map((address) => [currentIndex, address]))
|
5692 | ])), map(mapResult))
|
5693 | : of({}));
|
5694 | }
|
5695 |
|
5696 | const imOnline = Object.freeze({
|
5697 | __proto__: null,
|
5698 | receivedHeartbeats: receivedHeartbeats
|
5699 | });
|
5700 |
|
5701 | const members$2 = members$5('membership');
|
5702 | const hasProposals$1 = hasProposals$4('membership');
|
5703 | const proposal$1 = proposal$4('membership');
|
5704 | const proposalCount$1 = proposalCount$4('membership');
|
5705 | const proposalHashes$1 = proposalHashes$4('membership');
|
5706 | const proposals$2 = proposals$6('membership');
|
5707 | const prime$1 = prime$4('membership');
|
5708 |
|
5709 | const membership = Object.freeze({
|
5710 | __proto__: null,
|
5711 | hasProposals: hasProposals$1,
|
5712 | members: members$2,
|
5713 | prime: prime$1,
|
5714 | proposal: proposal$1,
|
5715 | proposalCount: proposalCount$1,
|
5716 | proposalHashes: proposalHashes$1,
|
5717 | proposals: proposals$2
|
5718 | });
|
5719 |
|
5720 | function didUpdateToBool(didUpdate, id) {
|
5721 | return didUpdate.isSome
|
5722 | ? didUpdate.unwrap().some((paraId) => paraId.eq(id))
|
5723 | : false;
|
5724 | }
|
5725 |
|
5726 | function parseActive(id, active) {
|
5727 | const found = active.find(([paraId]) => paraId === id);
|
5728 | if (found && found[1].isSome) {
|
5729 | const [collatorId, retriable] = found[1].unwrap();
|
5730 | return util.objectSpread({ collatorId }, retriable.isWithRetries
|
5731 | ? {
|
5732 | isRetriable: true,
|
5733 | retries: retriable.asWithRetries.toNumber()
|
5734 | }
|
5735 | : {
|
5736 | isRetriable: false,
|
5737 | retries: 0
|
5738 | });
|
5739 | }
|
5740 | return null;
|
5741 | }
|
5742 | function parseCollators(id, collatorQueue) {
|
5743 | return collatorQueue.map((queue) => {
|
5744 | const found = queue.find(([paraId]) => paraId === id);
|
5745 | return found ? found[1] : null;
|
5746 | });
|
5747 | }
|
5748 | function parse$2(id, [active, retryQueue, selectedThreads, didUpdate, info, pendingSwap, heads, relayDispatchQueue]) {
|
5749 | if (info.isNone) {
|
5750 | return null;
|
5751 | }
|
5752 | return {
|
5753 | active: parseActive(id, active),
|
5754 | didUpdate: didUpdateToBool(didUpdate, id),
|
5755 | heads,
|
5756 | id,
|
5757 | info: util.objectSpread({ id }, info.unwrap()),
|
5758 | pendingSwapId: pendingSwap.unwrapOr(null),
|
5759 | relayDispatchQueue,
|
5760 | retryCollators: parseCollators(id, retryQueue),
|
5761 | selectedCollators: parseCollators(id, selectedThreads)
|
5762 | };
|
5763 | }
|
5764 | function info$2(instanceId, api) {
|
5765 | return memo(instanceId, (id) => api.query['registrar'] && api.query['parachains']
|
5766 | ? api.queryMulti([
|
5767 | api.query['registrar']['active'],
|
5768 | api.query['registrar']['retryQueue'],
|
5769 | api.query['registrar']['selectedThreads'],
|
5770 | api.query['parachains']['didUpdate'],
|
5771 | [api.query['registrar']['paras'], id],
|
5772 | [api.query['registrar']['pendingSwap'], id],
|
5773 | [api.query['parachains']['heads'], id],
|
5774 | [api.query['parachains']['relayDispatchQueue'], id]
|
5775 | ])
|
5776 | .pipe(map((result) => parse$2(api.registry.createType('ParaId', id), result)))
|
5777 | : of(null));
|
5778 | }
|
5779 |
|
5780 | function parse$1([ids, didUpdate, relayDispatchQueueSizes, infos, pendingSwaps]) {
|
5781 | return ids.map((id, index) => ({
|
5782 | didUpdate: didUpdateToBool(didUpdate, id),
|
5783 | id,
|
5784 | info: util.objectSpread({ id }, infos[index].unwrapOr(null)),
|
5785 | pendingSwapId: pendingSwaps[index].unwrapOr(null),
|
5786 | relayDispatchQueueSize: relayDispatchQueueSizes[index][0].toNumber()
|
5787 | }));
|
5788 | }
|
5789 | function overview$1(instanceId, api) {
|
5790 | return memo(instanceId, () => api.query['registrar']?.['parachains'] && api.query['parachains']
|
5791 | ? api.query['registrar']['parachains']().pipe(switchMap((paraIds) => combineLatest([
|
5792 | of(paraIds),
|
5793 | api.query['parachains']['didUpdate'](),
|
5794 | api.query['parachains']['relayDispatchQueueSize'].multi(paraIds),
|
5795 | api.query['registrar']['paras'].multi(paraIds),
|
5796 | api.query['registrar']['pendingSwap'].multi(paraIds)
|
5797 | ])), map(parse$1))
|
5798 | : of([]));
|
5799 | }
|
5800 |
|
5801 | const parachains = Object.freeze({
|
5802 | __proto__: null,
|
5803 | info: info$2,
|
5804 | overview: overview$1
|
5805 | });
|
5806 |
|
5807 | function parse([currentIndex, activeEra, activeEraStart, currentEra, validatorCount]) {
|
5808 | return {
|
5809 | activeEra,
|
5810 | activeEraStart,
|
5811 | currentEra,
|
5812 | currentIndex,
|
5813 | validatorCount
|
5814 | };
|
5815 | }
|
5816 | function queryStaking(api) {
|
5817 | return api.queryMulti([
|
5818 | api.query.session.currentIndex,
|
5819 | api.query.staking.activeEra,
|
5820 | api.query.staking.currentEra,
|
5821 | api.query.staking.validatorCount
|
5822 | ]).pipe(map(([currentIndex, activeOpt, currentEra, validatorCount]) => {
|
5823 | const { index, start } = activeOpt.unwrapOrDefault();
|
5824 | return parse([
|
5825 | currentIndex,
|
5826 | index,
|
5827 | start,
|
5828 | currentEra.unwrapOrDefault(),
|
5829 | validatorCount
|
5830 | ]);
|
5831 | }));
|
5832 | }
|
5833 | function querySession(api) {
|
5834 | return api.query.session.currentIndex().pipe(map((currentIndex) => parse([
|
5835 | currentIndex,
|
5836 | api.registry.createType('EraIndex'),
|
5837 | api.registry.createType('Option<Moment>'),
|
5838 | api.registry.createType('EraIndex'),
|
5839 | api.registry.createType('u32')
|
5840 | ])));
|
5841 | }
|
5842 | function empty(api) {
|
5843 | return of(parse([
|
5844 | api.registry.createType('SessionIndex', 1),
|
5845 | api.registry.createType('EraIndex'),
|
5846 | api.registry.createType('Option<Moment>'),
|
5847 | api.registry.createType('EraIndex'),
|
5848 | api.registry.createType('u32')
|
5849 | ]));
|
5850 | }
|
5851 | function indexes(instanceId, api) {
|
5852 | return memo(instanceId, () => api.query.session
|
5853 | ? api.query.staking
|
5854 | ? queryStaking(api)
|
5855 | : querySession(api)
|
5856 | : empty(api));
|
5857 | }
|
5858 |
|
5859 | function info$1(instanceId, api) {
|
5860 | return memo(instanceId, () => api.derive.session.indexes().pipe(map((indexes) => {
|
5861 | const sessionLength = api.consts?.babe?.epochDuration || api.registry.createType('u64', 1);
|
5862 | const sessionsPerEra = api.consts?.staking?.sessionsPerEra || api.registry.createType('SessionIndex', 1);
|
5863 | return util.objectSpread({
|
5864 | eraLength: api.registry.createType('BlockNumber', sessionsPerEra.mul(sessionLength)),
|
5865 | isEpoch: !!api.query.babe,
|
5866 | sessionLength,
|
5867 | sessionsPerEra
|
5868 | }, indexes);
|
5869 | })));
|
5870 | }
|
5871 |
|
5872 | function withProgressField(field) {
|
5873 | return (instanceId, api) => memo(instanceId, () => api.derive.session.progress().pipe(map((info) => info[field])));
|
5874 | }
|
5875 | function createDerive(api, info, [currentSlot, epochIndex, epochOrGenesisStartSlot, activeEraStartSessionIndex]) {
|
5876 | const epochStartSlot = epochIndex.mul(info.sessionLength).iadd(epochOrGenesisStartSlot);
|
5877 | const sessionProgress = currentSlot.sub(epochStartSlot);
|
5878 | const eraProgress = info.currentIndex.sub(activeEraStartSessionIndex).imul(info.sessionLength).iadd(sessionProgress);
|
5879 | return util.objectSpread({
|
5880 | eraProgress: api.registry.createType('BlockNumber', eraProgress),
|
5881 | sessionProgress: api.registry.createType('BlockNumber', sessionProgress)
|
5882 | }, info);
|
5883 | }
|
5884 | function queryAura(api) {
|
5885 | return api.derive.session.info().pipe(map((info) => util.objectSpread({
|
5886 | eraProgress: api.registry.createType('BlockNumber'),
|
5887 | sessionProgress: api.registry.createType('BlockNumber')
|
5888 | }, info)));
|
5889 | }
|
5890 | function queryBabe(api) {
|
5891 | return api.derive.session.info().pipe(switchMap((info) => combineLatest([
|
5892 | of(info),
|
5893 | api.query.staking?.erasStartSessionIndex
|
5894 | ? api.queryMulti([
|
5895 | api.query.babe.currentSlot,
|
5896 | api.query.babe.epochIndex,
|
5897 | api.query.babe.genesisSlot,
|
5898 | [api.query.staking.erasStartSessionIndex, info.activeEra]
|
5899 | ])
|
5900 | : api.queryMulti([
|
5901 | api.query.babe.currentSlot,
|
5902 | api.query.babe.epochIndex,
|
5903 | api.query.babe.genesisSlot
|
5904 | ])
|
5905 | ])), map(([info, [currentSlot, epochIndex, genesisSlot, optStartIndex]]) => [
|
5906 | info, [currentSlot, epochIndex, genesisSlot, optStartIndex && optStartIndex.isSome ? optStartIndex.unwrap() : api.registry.createType('SessionIndex', 1)]
|
5907 | ]));
|
5908 | }
|
5909 | function progress(instanceId, api) {
|
5910 | return memo(instanceId, () => api.query.babe
|
5911 | ? queryBabe(api).pipe(map(([info, slots]) => createDerive(api, info, slots)))
|
5912 | : queryAura(api));
|
5913 | }
|
5914 | const eraLength = withProgressField('eraLength');
|
5915 | const eraProgress = withProgressField('eraProgress');
|
5916 | const sessionProgress = withProgressField('sessionProgress');
|
5917 |
|
5918 | const session = Object.freeze({
|
5919 | __proto__: null,
|
5920 | eraLength: eraLength,
|
5921 | eraProgress: eraProgress,
|
5922 | indexes: indexes,
|
5923 | info: info$1,
|
5924 | progress: progress,
|
5925 | sessionProgress: sessionProgress
|
5926 | });
|
5927 |
|
5928 | function getPrev(api) {
|
5929 | return api.query.society.candidates().pipe(switchMap((candidates) => combineLatest([
|
5930 | of(candidates),
|
5931 | api.query.society['suspendedCandidates'].multi(candidates.map(({ who }) => who))
|
5932 | ])), map(([candidates, suspended]) => candidates.map(({ kind, value, who }, index) => ({
|
5933 | accountId: who,
|
5934 | isSuspended: suspended[index].isSome,
|
5935 | kind,
|
5936 | value
|
5937 | }))));
|
5938 | }
|
5939 | function getCurr(api) {
|
5940 | return api.query.society.candidates.entries().pipe(map((entries) => entries
|
5941 | .filter(([, opt]) => opt.isSome)
|
5942 | .map(([{ args: [accountId] }, opt]) => [accountId, opt.unwrap()])
|
5943 | .map(([accountId, { bid, kind }]) => ({
|
5944 | accountId,
|
5945 | isSuspended: false,
|
5946 | kind,
|
5947 | value: bid
|
5948 | }))));
|
5949 | }
|
5950 | function candidates(instanceId, api) {
|
5951 | return memo(instanceId, () => api.query.society['suspendedCandidates'] && api.query.society.candidates.creator.meta.type.isPlain
|
5952 | ? getPrev(api)
|
5953 | : getCurr(api));
|
5954 | }
|
5955 |
|
5956 | function info(instanceId, api) {
|
5957 | return memo(instanceId, () => combineLatest([
|
5958 | api.query.society.bids(),
|
5959 | api.query.society['defender']
|
5960 | ? api.query.society['defender']()
|
5961 | : of(undefined),
|
5962 | api.query.society.founder(),
|
5963 | api.query.society.head(),
|
5964 | api.query.society['maxMembers']
|
5965 | ? api.query.society['maxMembers']()
|
5966 | : of(undefined),
|
5967 | api.query.society.pot()
|
5968 | ]).pipe(map(([bids, defender, founder, head, maxMembers, pot]) => ({
|
5969 | bids,
|
5970 | defender: defender?.unwrapOr(undefined),
|
5971 | founder: founder.unwrapOr(undefined),
|
5972 | hasDefender: (defender?.isSome && head.isSome && !head.eq(defender)) || false,
|
5973 | head: head.unwrapOr(undefined),
|
5974 | maxMembers,
|
5975 | pot
|
5976 | }))));
|
5977 | }
|
5978 |
|
5979 | function member(instanceId, api) {
|
5980 | return memo(instanceId, (accountId) => api.derive.society._members([accountId]).pipe(map(([result]) => result)));
|
5981 | }
|
5982 |
|
5983 | function _membersPrev(api, accountIds) {
|
5984 | return combineLatest([
|
5985 | of(accountIds),
|
5986 | api.query.society.payouts.multi(accountIds),
|
5987 | api.query.society['strikes'].multi(accountIds),
|
5988 | api.query.society.defenderVotes.multi(accountIds),
|
5989 | api.query.society.suspendedMembers.multi(accountIds),
|
5990 | api.query.society['vouching'].multi(accountIds)
|
5991 | ]).pipe(map(([accountIds, payouts, strikes, defenderVotes, suspended, vouching]) => accountIds.map((accountId, index) => ({
|
5992 | accountId,
|
5993 | isDefenderVoter: defenderVotes[index].isSome,
|
5994 | isSuspended: suspended[index].isTrue,
|
5995 | payouts: payouts[index],
|
5996 | strikes: strikes[index],
|
5997 | vote: defenderVotes[index].unwrapOr(undefined),
|
5998 | vouching: vouching[index].unwrapOr(undefined)
|
5999 | }))));
|
6000 | }
|
6001 | function _membersCurr(api, accountIds) {
|
6002 | return combineLatest([
|
6003 | of(accountIds),
|
6004 | api.query.society.members.multi(accountIds),
|
6005 | api.query.society.payouts.multi(accountIds),
|
6006 | api.query.society.challengeRoundCount().pipe(switchMap((round) => api.query.society.defenderVotes.multi(accountIds.map((accountId) => [round, accountId])))),
|
6007 | api.query.society.suspendedMembers.multi(accountIds)
|
6008 | ]).pipe(map(([accountIds, members, payouts, defenderVotes, suspendedMembers]) => accountIds
|
6009 | .map((accountId, index) => members[index].isSome
|
6010 | ? {
|
6011 | accountId,
|
6012 | isDefenderVoter: defenderVotes[index].isSome,
|
6013 | isSuspended: suspendedMembers[index].isSome,
|
6014 | member: members[index].unwrap(),
|
6015 | payouts: payouts[index].payouts
|
6016 | }
|
6017 | : null)
|
6018 | .filter((m) => !!m)
|
6019 | .map(({ accountId, isDefenderVoter, isSuspended, member, payouts }) => ({
|
6020 | accountId,
|
6021 | isDefenderVoter,
|
6022 | isSuspended,
|
6023 | payouts,
|
6024 | strikes: member.strikes,
|
6025 | vouching: member.vouching.unwrapOr(undefined)
|
6026 | }))));
|
6027 | }
|
6028 | function _members(instanceId, api) {
|
6029 | return memo(instanceId, (accountIds) => api.query.society.members.creator.meta.type.isMap
|
6030 | ? _membersCurr(api, accountIds)
|
6031 | : _membersPrev(api, accountIds));
|
6032 | }
|
6033 | function members$1(instanceId, api) {
|
6034 | return memo(instanceId, () => api.query.society.members.creator.meta.type.isMap
|
6035 | ? api.query.society.members.keys().pipe(switchMap((keys) => api.derive.society._members(keys.map(({ args: [accountId] }) => accountId))))
|
6036 | : api.query.society.members().pipe(switchMap((members) => api.derive.society._members(members))));
|
6037 | }
|
6038 |
|
6039 | const society = Object.freeze({
|
6040 | __proto__: null,
|
6041 | _members: _members,
|
6042 | candidates: candidates,
|
6043 | info: info,
|
6044 | member: member,
|
6045 | members: members$1
|
6046 | });
|
6047 |
|
6048 | const QUERY_OPTS = {
|
6049 | withDestination: true,
|
6050 | withLedger: true,
|
6051 | withNominations: true,
|
6052 | withPrefs: true
|
6053 | };
|
6054 | function groupByEra(list) {
|
6055 | return list.reduce((map, { era, value }) => {
|
6056 | const key = era.toString();
|
6057 | map[key] = (map[key] || util.BN_ZERO).add(value.unwrap());
|
6058 | return map;
|
6059 | }, {});
|
6060 | }
|
6061 | function calculateUnlocking(api, stakingLedger, sessionInfo) {
|
6062 | const results = Object
|
6063 | .entries(groupByEra((stakingLedger?.unlocking || []).filter(({ era }) => era.unwrap().gt(sessionInfo.activeEra))))
|
6064 | .map(([eraString, value]) => ({
|
6065 | remainingEras: new util.BN(eraString).isub(sessionInfo.activeEra),
|
6066 | value: api.registry.createType('Balance', value)
|
6067 | }));
|
6068 | return results.length
|
6069 | ? results
|
6070 | : undefined;
|
6071 | }
|
6072 | function redeemableSum(api, stakingLedger, sessionInfo) {
|
6073 | return api.registry.createType('Balance', (stakingLedger?.unlocking || []).reduce((total, { era, value }) => {
|
6074 | return era.unwrap().gt(sessionInfo.currentEra)
|
6075 | ? total
|
6076 | : total.iadd(value.unwrap());
|
6077 | }, new util.BN(0)));
|
6078 | }
|
6079 | function parseResult$1(api, sessionInfo, keys, query) {
|
6080 | return util.objectSpread({}, keys, query, {
|
6081 | redeemable: redeemableSum(api, query.stakingLedger, sessionInfo),
|
6082 | unlocking: calculateUnlocking(api, query.stakingLedger, sessionInfo)
|
6083 | });
|
6084 | }
|
6085 | function accounts(instanceId, api) {
|
6086 | return memo(instanceId, (accountIds, opts = QUERY_OPTS) => api.derive.session.info().pipe(switchMap((sessionInfo) => combineLatest([
|
6087 | api.derive.staking.keysMulti(accountIds),
|
6088 | api.derive.staking.queryMulti(accountIds, opts)
|
6089 | ]).pipe(map(([keys, queries]) => queries.map((q, index) => parseResult$1(api, sessionInfo, keys[index], q)))))));
|
6090 | }
|
6091 | const account = firstMemo((api, accountId, opts) => api.derive.staking.accounts([accountId], opts));
|
6092 |
|
6093 | function currentPoints(instanceId, api) {
|
6094 | return memo(instanceId, () => api.derive.session.indexes().pipe(switchMap(({ activeEra }) => api.query.staking.erasRewardPoints(activeEra))));
|
6095 | }
|
6096 |
|
6097 | const DEFAULT_FLAGS$1 = { withController: true, withExposure: true, withPrefs: true };
|
6098 | function combineAccounts(nextElected, validators) {
|
6099 | return util.arrayFlatten([nextElected, validators.filter((v) => !nextElected.find((n) => n.eq(v)))]);
|
6100 | }
|
6101 | function electedInfo(instanceId, api) {
|
6102 | return memo(instanceId, (flags = DEFAULT_FLAGS$1, page = 0) => api.derive.staking.validators().pipe(switchMap(({ nextElected, validators }) => api.derive.staking.queryMulti(combineAccounts(nextElected, validators), flags, page).pipe(map((info) => ({
|
6103 | info,
|
6104 | nextElected,
|
6105 | validators
|
6106 | }))))));
|
6107 | }
|
6108 |
|
6109 | function getEraCache(CACHE_KEY, era, withActive) {
|
6110 | const cacheKey = `${CACHE_KEY}-${era.toString()}`;
|
6111 | return [
|
6112 | cacheKey,
|
6113 | withActive
|
6114 | ? undefined
|
6115 | : deriveCache.get(cacheKey)
|
6116 | ];
|
6117 | }
|
6118 | function getEraMultiCache(CACHE_KEY, eras, withActive) {
|
6119 | const cached = withActive
|
6120 | ? []
|
6121 | : eras
|
6122 | .map((e) => deriveCache.get(`${CACHE_KEY}-${e.toString()}`))
|
6123 | .filter((v) => !!v);
|
6124 | return cached;
|
6125 | }
|
6126 | function setEraCache(cacheKey, withActive, value) {
|
6127 | !withActive && deriveCache.set(cacheKey, value);
|
6128 | return value;
|
6129 | }
|
6130 | function setEraMultiCache(CACHE_KEY, withActive, values) {
|
6131 | !withActive && values.forEach((v) => deriveCache.set(`${CACHE_KEY}-${v.era.toString()}`, v));
|
6132 | return values;
|
6133 | }
|
6134 | function filterCachedEras(eras, cached, query) {
|
6135 | return eras
|
6136 | .map((e) => cached.find(({ era }) => e.eq(era)) ||
|
6137 | query.find(({ era }) => e.eq(era)))
|
6138 | .filter((e) => !!e);
|
6139 | }
|
6140 |
|
6141 | const ERA_CHUNK_SIZE = 14;
|
6142 | function chunkEras(eras, fn) {
|
6143 | const chunked = util.arrayChunk(eras, ERA_CHUNK_SIZE);
|
6144 | let index = 0;
|
6145 | const subject = new BehaviorSubject(chunked[index]);
|
6146 | return subject.pipe(switchMap(fn), tap(() => {
|
6147 | util.nextTick(() => {
|
6148 | index++;
|
6149 | index === chunked.length
|
6150 | ? subject.complete()
|
6151 | : subject.next(chunked[index]);
|
6152 | });
|
6153 | }), toArray(), map(util.arrayFlatten));
|
6154 | }
|
6155 | function filterEras(eras, list) {
|
6156 | return eras.filter((e) => !list.some(({ era }) => e.eq(era)));
|
6157 | }
|
6158 | function erasHistoricApply(fn) {
|
6159 | return (instanceId, api) =>
|
6160 | memo(instanceId, (withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((e) => api.derive.staking[fn](e, withActive))));
|
6161 | }
|
6162 | function erasHistoricApplyAccount(fn) {
|
6163 | return (instanceId, api) =>
|
6164 | memo(instanceId, (accountId, withActive = false, page) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((e) => api.derive.staking[fn](accountId, e, withActive, page || 0))));
|
6165 | }
|
6166 | function singleEra(fn) {
|
6167 | return (instanceId, api) =>
|
6168 | memo(instanceId, (era) => api.derive.staking[fn](era, true));
|
6169 | }
|
6170 | function combineEras(fn) {
|
6171 | return (instanceId, api) =>
|
6172 | memo(instanceId, (eras, withActive) => !eras.length
|
6173 | ? of([])
|
6174 | : chunkEras(eras, (eras) => combineLatest(eras.map((e) => api.derive.staking[fn](e, withActive)))));
|
6175 | }
|
6176 |
|
6177 | const CACHE_KEY$4 = 'eraExposure';
|
6178 | function mapStakersClipped(era, stakers) {
|
6179 | const nominators = {};
|
6180 | const validators = {};
|
6181 | stakers.forEach(([key, exposure]) => {
|
6182 | const validatorId = key.args[1].toString();
|
6183 | validators[validatorId] = exposure;
|
6184 | exposure.others.forEach(({ who }, validatorIndex) => {
|
6185 | const nominatorId = who.toString();
|
6186 | nominators[nominatorId] = nominators[nominatorId] || [];
|
6187 | nominators[nominatorId].push({ validatorId, validatorIndex });
|
6188 | });
|
6189 | });
|
6190 | return { era, nominators, validators };
|
6191 | }
|
6192 | function mapStakersPaged(era, stakers) {
|
6193 | const nominators = {};
|
6194 | const validators = {};
|
6195 | stakers.forEach(([key, exposureOpt]) => {
|
6196 | if (exposureOpt.isSome) {
|
6197 | const validatorId = key.args[1].toString();
|
6198 | const exposure = exposureOpt.unwrap();
|
6199 | validators[validatorId] = exposure;
|
6200 | exposure.others.forEach(({ who }, validatorIndex) => {
|
6201 | const nominatorId = who.toString();
|
6202 | nominators[nominatorId] = nominators[nominatorId] || [];
|
6203 | nominators[nominatorId].push({ validatorId, validatorIndex });
|
6204 | });
|
6205 | }
|
6206 | });
|
6207 | return { era, nominators, validators };
|
6208 | }
|
6209 | function _eraExposure(instanceId, api) {
|
6210 | return memo(instanceId, (era, withActive = false) => {
|
6211 | const [cacheKey, cached] = getEraCache(CACHE_KEY$4, era, withActive);
|
6212 | return cached
|
6213 | ? of(cached)
|
6214 | : api.query.staking.erasStakersPaged
|
6215 | ? api.query.staking.erasStakersPaged.entries(era).pipe(map((r) => setEraCache(cacheKey, withActive, mapStakersPaged(era, r))))
|
6216 | : api.query.staking.erasStakersClipped.entries(era).pipe(map((r) => setEraCache(cacheKey, withActive, mapStakersClipped(era, r))));
|
6217 | });
|
6218 | }
|
6219 | const eraExposure = singleEra('_eraExposure');
|
6220 | const _erasExposure = combineEras('_eraExposure');
|
6221 | const erasExposure = erasHistoricApply('_erasExposure');
|
6222 |
|
6223 | function erasHistoric(instanceId, api) {
|
6224 | return memo(instanceId, (withActive) => combineLatest([
|
6225 | api.query.staking.activeEra(),
|
6226 | api.consts.staking.historyDepth
|
6227 | ? of(api.consts.staking.historyDepth)
|
6228 | : api.query.staking['historyDepth']()
|
6229 | ]).pipe(map(([activeEraOpt, historyDepth]) => {
|
6230 | const result = [];
|
6231 | const max = historyDepth.toNumber();
|
6232 | const activeEra = activeEraOpt.unwrapOrDefault().index;
|
6233 | let lastEra = activeEra;
|
6234 | while (lastEra.gte(util.BN_ZERO) && (result.length < max)) {
|
6235 | if ((lastEra !== activeEra) || (withActive === true)) {
|
6236 | result.push(api.registry.createType('EraIndex', lastEra));
|
6237 | }
|
6238 | lastEra = lastEra.sub(util.BN_ONE);
|
6239 | }
|
6240 | return result.reverse();
|
6241 | })));
|
6242 | }
|
6243 |
|
6244 | const CACHE_KEY$3 = 'eraPoints';
|
6245 | function mapValidators({ individual }) {
|
6246 | return [...individual.entries()]
|
6247 | .filter(([, points]) => points.gt(util.BN_ZERO))
|
6248 | .reduce((result, [validatorId, points]) => {
|
6249 | result[validatorId.toString()] = points;
|
6250 | return result;
|
6251 | }, {});
|
6252 | }
|
6253 | function mapPoints(eras, points) {
|
6254 | return eras.map((era, index) => ({
|
6255 | era,
|
6256 | eraPoints: points[index].total,
|
6257 | validators: mapValidators(points[index])
|
6258 | }));
|
6259 | }
|
6260 | function _erasPoints(instanceId, api) {
|
6261 | return memo(instanceId, (eras, withActive) => {
|
6262 | if (!eras.length) {
|
6263 | return of([]);
|
6264 | }
|
6265 | const cached = getEraMultiCache(CACHE_KEY$3, eras, withActive);
|
6266 | const remaining = filterEras(eras, cached);
|
6267 | return !remaining.length
|
6268 | ? of(cached)
|
6269 | : api.query.staking.erasRewardPoints.multi(remaining).pipe(map((p) => filterCachedEras(eras, cached, setEraMultiCache(CACHE_KEY$3, withActive, mapPoints(remaining, p)))));
|
6270 | });
|
6271 | }
|
6272 | const erasPoints = erasHistoricApply('_erasPoints');
|
6273 |
|
6274 | const CACHE_KEY$2 = 'eraPrefs';
|
6275 | function mapPrefs(era, all) {
|
6276 | const validators = {};
|
6277 | all.forEach(([key, prefs]) => {
|
6278 | validators[key.args[1].toString()] = prefs;
|
6279 | });
|
6280 | return { era, validators };
|
6281 | }
|
6282 | function _eraPrefs(instanceId, api) {
|
6283 | return memo(instanceId, (era, withActive) => {
|
6284 | const [cacheKey, cached] = getEraCache(CACHE_KEY$2, era, withActive);
|
6285 | return cached
|
6286 | ? of(cached)
|
6287 | : api.query.staking.erasValidatorPrefs.entries(era).pipe(map((r) => setEraCache(cacheKey, withActive, mapPrefs(era, r))));
|
6288 | });
|
6289 | }
|
6290 | const eraPrefs = singleEra('_eraPrefs');
|
6291 | const _erasPrefs = combineEras('_eraPrefs');
|
6292 | const erasPrefs = erasHistoricApply('_erasPrefs');
|
6293 |
|
6294 | const CACHE_KEY$1 = 'eraRewards';
|
6295 | function mapRewards(eras, optRewards) {
|
6296 | return eras.map((era, index) => ({
|
6297 | era,
|
6298 | eraReward: optRewards[index].unwrapOrDefault()
|
6299 | }));
|
6300 | }
|
6301 | function _erasRewards(instanceId, api) {
|
6302 | return memo(instanceId, (eras, withActive) => {
|
6303 | if (!eras.length) {
|
6304 | return of([]);
|
6305 | }
|
6306 | const cached = getEraMultiCache(CACHE_KEY$1, eras, withActive);
|
6307 | const remaining = filterEras(eras, cached);
|
6308 | if (!remaining.length) {
|
6309 | return of(cached);
|
6310 | }
|
6311 | return api.query.staking.erasValidatorReward.multi(remaining).pipe(map((r) => filterCachedEras(eras, cached, setEraMultiCache(CACHE_KEY$1, withActive, mapRewards(remaining, r)))));
|
6312 | });
|
6313 | }
|
6314 | const erasRewards = erasHistoricApply('_erasRewards');
|
6315 |
|
6316 | const CACHE_KEY = 'eraSlashes';
|
6317 | function mapSlashes(era, noms, vals) {
|
6318 | const nominators = {};
|
6319 | const validators = {};
|
6320 | noms.forEach(([key, optBalance]) => {
|
6321 | nominators[key.args[1].toString()] = optBalance.unwrap();
|
6322 | });
|
6323 | vals.forEach(([key, optRes]) => {
|
6324 | validators[key.args[1].toString()] = optRes.unwrapOrDefault()[1];
|
6325 | });
|
6326 | return { era, nominators, validators };
|
6327 | }
|
6328 | function _eraSlashes(instanceId, api) {
|
6329 | return memo(instanceId, (era, withActive) => {
|
6330 | const [cacheKey, cached] = getEraCache(CACHE_KEY, era, withActive);
|
6331 | return cached
|
6332 | ? of(cached)
|
6333 | : combineLatest([
|
6334 | api.query.staking.nominatorSlashInEra.entries(era),
|
6335 | api.query.staking.validatorSlashInEra.entries(era)
|
6336 | ]).pipe(map(([n, v]) => setEraCache(cacheKey, withActive, mapSlashes(era, n, v))));
|
6337 | });
|
6338 | }
|
6339 | const eraSlashes = singleEra('_eraSlashes');
|
6340 | const _erasSlashes = combineEras('_eraSlashes');
|
6341 | const erasSlashes = erasHistoricApply('_erasSlashes');
|
6342 |
|
6343 | function extractsIds(stashId, queuedKeys, nextKeys) {
|
6344 | const sessionIds = (queuedKeys.find(([currentId]) => currentId.eq(stashId)) || [undefined, []])[1];
|
6345 | const nextSessionIds = nextKeys.unwrapOr([]);
|
6346 | return {
|
6347 | nextSessionIds: Array.isArray(nextSessionIds)
|
6348 | ? nextSessionIds
|
6349 | : [...nextSessionIds.values()],
|
6350 | sessionIds: Array.isArray(sessionIds)
|
6351 | ? sessionIds
|
6352 | : [...sessionIds.values()]
|
6353 | };
|
6354 | }
|
6355 | const keys = firstMemo((api, stashId) => api.derive.staking.keysMulti([stashId]));
|
6356 | function keysMulti(instanceId, api) {
|
6357 | return memo(instanceId, (stashIds) => stashIds.length
|
6358 | ? api.query.session.queuedKeys().pipe(switchMap((queuedKeys) => combineLatest([
|
6359 | of(queuedKeys),
|
6360 | api.consts['session']?.['dedupKeyPrefix']
|
6361 | ? api.query.session.nextKeys.multi(stashIds.map((s) => [api.consts['session']['dedupKeyPrefix'], s]))
|
6362 | : combineLatest(stashIds.map((s) => api.query.session.nextKeys(s)))
|
6363 | ])), map(([queuedKeys, nextKeys]) => stashIds.map((stashId, index) => extractsIds(stashId, queuedKeys, nextKeys[index]))))
|
6364 | : of([]));
|
6365 | }
|
6366 |
|
6367 | function overview(instanceId, api) {
|
6368 | return memo(instanceId, () => combineLatest([
|
6369 | api.derive.session.indexes(),
|
6370 | api.derive.staking.validators()
|
6371 | ]).pipe(map(([indexes, { nextElected, validators }]) => util.objectSpread({}, indexes, {
|
6372 | nextElected,
|
6373 | validators
|
6374 | }))));
|
6375 | }
|
6376 |
|
6377 | function _ownExposures(instanceId, api) {
|
6378 | return memo(instanceId, (accountId, eras, _withActive, page) => {
|
6379 | const emptyStakingExposure = api.registry.createType('Exposure');
|
6380 | const emptyOptionPage = api.registry.createType('Option<Null>');
|
6381 | const emptyOptionMeta = api.registry.createType('Option<Null>');
|
6382 | return eras.length
|
6383 | ? combineLatest([
|
6384 | api.query.staking.erasStakersClipped
|
6385 | ? combineLatest(eras.map((e) => api.query.staking.erasStakersClipped(e, accountId)))
|
6386 | : of(eras.map((_) => emptyStakingExposure)),
|
6387 | api.query.staking.erasStakers
|
6388 | ? combineLatest(eras.map((e) => api.query.staking.erasStakers(e, accountId)))
|
6389 | : of(eras.map((_) => emptyStakingExposure)),
|
6390 | api.query.staking.erasStakersPaged
|
6391 | ? combineLatest(eras.map((e) => api.query.staking.erasStakersPaged(e, accountId, page)))
|
6392 | : of(eras.map((_) => emptyOptionPage)),
|
6393 | api.query.staking.erasStakersOverview
|
6394 | ? combineLatest(eras.map((e) => api.query.staking.erasStakersOverview(e, accountId)))
|
6395 | : of(eras.map((_) => emptyOptionMeta))
|
6396 | ]).pipe(map(([clp, exp, paged, expMeta]) => eras.map((era, index) => ({ clipped: clp[index], era, exposure: exp[index], exposureMeta: expMeta[index], exposurePaged: paged[index] }))))
|
6397 | : of([]);
|
6398 | });
|
6399 | }
|
6400 | const ownExposure = firstMemo((api, accountId, era, page) => api.derive.staking._ownExposures(accountId, [era], true, page || 0));
|
6401 | const ownExposures = erasHistoricApplyAccount('_ownExposures');
|
6402 |
|
6403 | function _ownSlashes(instanceId, api) {
|
6404 | return memo(instanceId, (accountId, eras, _withActive) => eras.length
|
6405 | ? combineLatest([
|
6406 | combineLatest(eras.map((e) => api.query.staking.validatorSlashInEra(e, accountId))),
|
6407 | combineLatest(eras.map((e) => api.query.staking.nominatorSlashInEra(e, accountId)))
|
6408 | ]).pipe(map(([vals, noms]) => eras.map((era, index) => ({
|
6409 | era,
|
6410 | total: vals[index].isSome
|
6411 | ? vals[index].unwrap()[1]
|
6412 | : noms[index].unwrapOrDefault()
|
6413 | }))))
|
6414 | : of([]));
|
6415 | }
|
6416 | const ownSlash = firstMemo((api, accountId, era) => api.derive.staking._ownSlashes(accountId, [era], true));
|
6417 | const ownSlashes = erasHistoricApplyAccount('_ownSlashes');
|
6418 |
|
6419 | function rewardDestinationCompat(rewardDestination) {
|
6420 | return typeof rewardDestination.isSome === 'boolean'
|
6421 | ? rewardDestination.unwrapOr(null)
|
6422 | : rewardDestination;
|
6423 | }
|
6424 | function filterClaimedRewards(api, cl) {
|
6425 | return api.registry.createType('Vec<u32>', cl.filter((c) => c !== -1));
|
6426 | }
|
6427 | function filterRewards$1(stashIds, eras, claimedRewards, stakersOverview) {
|
6428 | const claimedData = {};
|
6429 | const overviewData = {};
|
6430 | const ids = stashIds.map((i) => i.toString());
|
6431 | claimedRewards.forEach(([keys, rewards]) => {
|
6432 | const id = keys.args[1].toString();
|
6433 | const era = keys.args[0].toNumber();
|
6434 | if (ids.includes(id)) {
|
6435 | if (claimedData[id]) {
|
6436 | claimedData[id].set(era, rewards.toArray());
|
6437 | }
|
6438 | else {
|
6439 | claimedData[id] = new Map();
|
6440 | claimedData[id].set(era, rewards.toArray());
|
6441 | }
|
6442 | }
|
6443 | });
|
6444 | stakersOverview.forEach(([keys, overview]) => {
|
6445 | const id = keys.args[1].toString();
|
6446 | const era = keys.args[0].toNumber();
|
6447 | if (ids.includes(id) && overview.isSome) {
|
6448 | if (overviewData[id]) {
|
6449 | overviewData[id].set(era, overview.unwrap().pageCount);
|
6450 | }
|
6451 | else {
|
6452 | overviewData[id] = new Map();
|
6453 | overviewData[id].set(era, overview.unwrap().pageCount);
|
6454 | }
|
6455 | }
|
6456 | });
|
6457 | return stashIds.map((id) => {
|
6458 | const rewardsPerEra = claimedData[id.toString()];
|
6459 | const overviewPerEra = overviewData[id.toString()];
|
6460 | return eras.map((era) => {
|
6461 | if (rewardsPerEra && rewardsPerEra.has(era) && overviewPerEra && overviewPerEra.has(era)) {
|
6462 | const rewards = rewardsPerEra.get(era);
|
6463 | const pageCount = overviewPerEra.get(era);
|
6464 | return rewards.length === pageCount.toNumber()
|
6465 | ? era
|
6466 | : -1;
|
6467 | }
|
6468 | return -1;
|
6469 | });
|
6470 | });
|
6471 | }
|
6472 | function parseDetails(api, stashId, controllerIdOpt, nominatorsOpt, rewardDestinationOpts, validatorPrefs, exposure, stakingLedgerOpt, exposureMeta, claimedRewards, exposureEraStakers) {
|
6473 | return {
|
6474 | accountId: stashId,
|
6475 | claimedRewardsEras: filterClaimedRewards(api, claimedRewards),
|
6476 | controllerId: controllerIdOpt?.unwrapOr(null) || null,
|
6477 | exposureEraStakers,
|
6478 | exposureMeta,
|
6479 | exposurePaged: exposure,
|
6480 | nominators: nominatorsOpt.isSome
|
6481 | ? nominatorsOpt.unwrap().targets
|
6482 | : [],
|
6483 | rewardDestination: rewardDestinationCompat(rewardDestinationOpts),
|
6484 | stakingLedger: stakingLedgerOpt.unwrapOrDefault(),
|
6485 | stashId,
|
6486 | validatorPrefs
|
6487 | };
|
6488 | }
|
6489 | function getLedgers(api, optIds, { withLedger = false }) {
|
6490 | const ids = optIds
|
6491 | .filter((o) => withLedger && !!o && o.isSome)
|
6492 | .map((o) => o.unwrap());
|
6493 | const emptyLed = api.registry.createType('Option<StakingLedger>');
|
6494 | return (ids.length
|
6495 | ? combineLatest(ids.map((s) => api.query.staking.ledger(s)))
|
6496 | : of([])).pipe(map((optLedgers) => {
|
6497 | let offset = -1;
|
6498 | return optIds.map((o) => o && o.isSome
|
6499 | ? optLedgers[++offset] || emptyLed
|
6500 | : emptyLed);
|
6501 | }));
|
6502 | }
|
6503 | function getStashInfo(api, stashIds, activeEra, { withClaimedRewardsEras, withController, withDestination, withExposure, withExposureErasStakersLegacy, withExposureMeta, withLedger, withNominations, withPrefs }, page) {
|
6504 | const emptyNoms = api.registry.createType('Option<Nominations>');
|
6505 | const emptyRewa = api.registry.createType('RewardDestination');
|
6506 | const emptyExpoEraStakers = api.registry.createType('Exposure');
|
6507 | const emptyPrefs = api.registry.createType('ValidatorPrefs');
|
6508 | const emptyExpo = api.registry.createType('Option<Null>');
|
6509 | const emptyExpoMeta = api.registry.createType('Option<Null>');
|
6510 | const emptyClaimedRewards = [-1];
|
6511 | const depth = Number(api.consts.staking.historyDepth.toNumber());
|
6512 | const eras = new Array(depth).fill(0).map((_, idx) => {
|
6513 | if (idx === 0) {
|
6514 | return activeEra.toNumber() - 1;
|
6515 | }
|
6516 | return activeEra.toNumber() - idx - 1;
|
6517 | });
|
6518 | return combineLatest([
|
6519 | withController || withLedger
|
6520 | ? combineLatest(stashIds.map((s) => api.query.staking.bonded(s)))
|
6521 | : of(stashIds.map(() => null)),
|
6522 | withNominations
|
6523 | ? combineLatest(stashIds.map((s) => api.query.staking.nominators(s)))
|
6524 | : of(stashIds.map(() => emptyNoms)),
|
6525 | withDestination
|
6526 | ? combineLatest(stashIds.map((s) => api.query.staking.payee(s)))
|
6527 | : of(stashIds.map(() => emptyRewa)),
|
6528 | withPrefs
|
6529 | ? combineLatest(stashIds.map((s) => api.query.staking.validators(s)))
|
6530 | : of(stashIds.map(() => emptyPrefs)),
|
6531 | withExposure && api.query.staking.erasStakersPaged
|
6532 | ? combineLatest(stashIds.map((s) => api.query.staking.erasStakersPaged(activeEra, s, page)))
|
6533 | : of(stashIds.map(() => emptyExpo)),
|
6534 | withExposureMeta && api.query.staking.erasStakersOverview
|
6535 | ? combineLatest(stashIds.map((s) => api.query.staking.erasStakersOverview(activeEra, s)))
|
6536 | : of(stashIds.map(() => emptyExpoMeta)),
|
6537 | withClaimedRewardsEras && api.query.staking.claimedRewards
|
6538 | ? combineLatest([
|
6539 | api.query.staking.claimedRewards.entries(),
|
6540 | api.query.staking.erasStakersOverview.entries()
|
6541 | ]).pipe(map(([rewardsStorageVec, overviewStorageVec]) => filterRewards$1(stashIds, eras, rewardsStorageVec, overviewStorageVec)))
|
6542 | : of(stashIds.map(() => emptyClaimedRewards)),
|
6543 | withExposureErasStakersLegacy && api.query.staking.erasStakers
|
6544 | ? combineLatest(stashIds.map((s) => api.query.staking.erasStakers(activeEra, s)))
|
6545 | : of(stashIds.map(() => emptyExpoEraStakers))
|
6546 | ]);
|
6547 | }
|
6548 | function getBatch(api, activeEra, stashIds, flags, page) {
|
6549 | return getStashInfo(api, stashIds, activeEra, flags, page).pipe(switchMap(([controllerIdOpt, nominatorsOpt, rewardDestination, validatorPrefs, exposure, exposureMeta, claimedRewardsEras, exposureEraStakers]) => getLedgers(api, controllerIdOpt, flags).pipe(map((stakingLedgerOpts) => stashIds.map((stashId, index) => parseDetails(api, stashId, controllerIdOpt[index], nominatorsOpt[index], rewardDestination[index], validatorPrefs[index], exposure[index], stakingLedgerOpts[index], exposureMeta[index], claimedRewardsEras[index], exposureEraStakers[index]))))));
|
6550 | }
|
6551 | const query = firstMemo((api, accountId, flags, page) => api.derive.staking.queryMulti([accountId], flags, page));
|
6552 | function queryMulti(instanceId, api) {
|
6553 | return memo(instanceId, (accountIds, flags, page) => api.derive.session.indexes().pipe(switchMap(({ activeEra }) => {
|
6554 | const stashIds = accountIds.map((a) => api.registry.createType('AccountId', a));
|
6555 | const p = page || 0;
|
6556 | return stashIds.length
|
6557 | ? getBatch(api, activeEra, stashIds, flags, p)
|
6558 | : of([]);
|
6559 | })));
|
6560 | }
|
6561 |
|
6562 | function _stakerExposures(instanceId, api) {
|
6563 | return memo(instanceId, (accountIds, eras, withActive = false) => {
|
6564 | const stakerIds = accountIds.map((a) => api.registry.createType('AccountId', a).toString());
|
6565 | return api.derive.staking._erasExposure(eras, withActive).pipe(map((exposures) => stakerIds.map((stakerId) => exposures.map(({ era, nominators: allNominators, validators: allValidators }) => {
|
6566 | const isValidator = !!allValidators[stakerId];
|
6567 | const validators = {};
|
6568 | const nominating = allNominators[stakerId] || [];
|
6569 | if (isValidator) {
|
6570 | validators[stakerId] = allValidators[stakerId];
|
6571 | }
|
6572 | else if (nominating) {
|
6573 | nominating.forEach(({ validatorId }) => {
|
6574 | validators[validatorId] = allValidators[validatorId];
|
6575 | });
|
6576 | }
|
6577 | return { era, isEmpty: !Object.keys(validators).length, isValidator, nominating, validators };
|
6578 | }))));
|
6579 | });
|
6580 | }
|
6581 | function stakerExposures(instanceId, api) {
|
6582 | return memo(instanceId, (accountIds, withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking._stakerExposures(accountIds, eras, withActive))));
|
6583 | }
|
6584 | const stakerExposure = firstMemo((api, accountId, withActive) => api.derive.staking.stakerExposures([accountId], withActive));
|
6585 |
|
6586 | function _stakerPoints(instanceId, api) {
|
6587 | return memo(instanceId, (accountId, eras, withActive) => {
|
6588 | const stakerId = api.registry.createType('AccountId', accountId).toString();
|
6589 | return api.derive.staking._erasPoints(eras, withActive).pipe(map((points) => points.map(({ era, eraPoints, validators }) => ({
|
6590 | era,
|
6591 | eraPoints,
|
6592 | points: validators[stakerId] || api.registry.createType('RewardPoint')
|
6593 | }))));
|
6594 | });
|
6595 | }
|
6596 | const stakerPoints = erasHistoricApplyAccount('_stakerPoints');
|
6597 |
|
6598 | function _stakerPrefs(instanceId, api) {
|
6599 | return memo(instanceId, (accountId, eras, _withActive) => api.query.staking.erasValidatorPrefs.multi(eras.map((e) => [e, accountId])).pipe(map((all) => all.map((validatorPrefs, index) => ({
|
6600 | era: eras[index],
|
6601 | validatorPrefs
|
6602 | })))));
|
6603 | }
|
6604 | const stakerPrefs = erasHistoricApplyAccount('_stakerPrefs');
|
6605 |
|
6606 | function extractCompatRewards(claimedRewardsEras, ledger) {
|
6607 | const l = ledger
|
6608 | ? (ledger.legacyClaimedRewards ||
|
6609 | ledger.claimedRewards).toArray()
|
6610 | : [];
|
6611 | return claimedRewardsEras.toArray().concat(l);
|
6612 | }
|
6613 | function parseRewards(api, stashId, [erasPoints, erasPrefs, erasRewards], exposures) {
|
6614 | return exposures.map(({ era, isEmpty, isValidator, nominating, validators: eraValidators }) => {
|
6615 | const { eraPoints, validators: allValPoints } = erasPoints.find((p) => p.era.eq(era)) || { eraPoints: util.BN_ZERO, validators: {} };
|
6616 | const { eraReward } = erasRewards.find((r) => r.era.eq(era)) || { eraReward: api.registry.createType('Balance') };
|
6617 | const { validators: allValPrefs } = erasPrefs.find((p) => p.era.eq(era)) || { validators: {} };
|
6618 | const validators = {};
|
6619 | const stakerId = stashId.toString();
|
6620 | Object.entries(eraValidators).forEach(([validatorId, exposure]) => {
|
6621 | const valPoints = allValPoints[validatorId] || util.BN_ZERO;
|
6622 | const valComm = allValPrefs[validatorId]?.commission.unwrap() || util.BN_ZERO;
|
6623 | const expTotal = exposure.total
|
6624 | ? exposure.total?.unwrap()
|
6625 | : exposure.pageTotal
|
6626 | ? exposure.pageTotal?.unwrap()
|
6627 | : util.BN_ZERO;
|
6628 | let avail = util.BN_ZERO;
|
6629 | let value;
|
6630 | if (!(expTotal.isZero() || valPoints.isZero() || eraPoints.isZero())) {
|
6631 | avail = eraReward.mul(valPoints).div(eraPoints);
|
6632 | const valCut = valComm.mul(avail).div(util.BN_BILLION);
|
6633 | let staked;
|
6634 | if (validatorId === stakerId) {
|
6635 | if (exposure.own) {
|
6636 | staked = exposure.own.unwrap();
|
6637 | }
|
6638 | else {
|
6639 | const expAccount = exposure.others.find(({ who }) => who.eq(validatorId));
|
6640 | staked = expAccount
|
6641 | ? expAccount.value.unwrap()
|
6642 | : util.BN_ZERO;
|
6643 | }
|
6644 | }
|
6645 | else {
|
6646 | const stakerExp = exposure.others.find(({ who }) => who.eq(stakerId));
|
6647 | staked = stakerExp
|
6648 | ? stakerExp.value.unwrap()
|
6649 | : util.BN_ZERO;
|
6650 | }
|
6651 | value = avail.sub(valCut).imul(staked).div(expTotal).iadd(validatorId === stakerId ? valCut : util.BN_ZERO);
|
6652 | }
|
6653 | validators[validatorId] = {
|
6654 | total: api.registry.createType('Balance', avail),
|
6655 | value: api.registry.createType('Balance', value)
|
6656 | };
|
6657 | });
|
6658 | return {
|
6659 | era,
|
6660 | eraReward,
|
6661 | isEmpty,
|
6662 | isValidator,
|
6663 | nominating,
|
6664 | validators
|
6665 | };
|
6666 | });
|
6667 | }
|
6668 | function allUniqValidators(rewards) {
|
6669 | return rewards.reduce(([all, perStash], rewards) => {
|
6670 | const uniq = [];
|
6671 | perStash.push(uniq);
|
6672 | rewards.forEach(({ validators }) => Object.keys(validators).forEach((validatorId) => {
|
6673 | if (!uniq.includes(validatorId)) {
|
6674 | uniq.push(validatorId);
|
6675 | if (!all.includes(validatorId)) {
|
6676 | all.push(validatorId);
|
6677 | }
|
6678 | }
|
6679 | }));
|
6680 | return [all, perStash];
|
6681 | }, [[], []]);
|
6682 | }
|
6683 | function removeClaimed(validators, queryValidators, reward, claimedRewardsEras) {
|
6684 | const rm = [];
|
6685 | Object.keys(reward.validators).forEach((validatorId) => {
|
6686 | const index = validators.indexOf(validatorId);
|
6687 | if (index !== -1) {
|
6688 | const valLedger = queryValidators[index].stakingLedger;
|
6689 | if (extractCompatRewards(claimedRewardsEras, valLedger).some((e) => reward.era.eq(e))) {
|
6690 | rm.push(validatorId);
|
6691 | }
|
6692 | }
|
6693 | });
|
6694 | rm.forEach((validatorId) => {
|
6695 | delete reward.validators[validatorId];
|
6696 | });
|
6697 | }
|
6698 | function filterRewards(eras, valInfo, { claimedRewardsEras, rewards, stakingLedger }) {
|
6699 | const filter = eras.filter((e) => !extractCompatRewards(claimedRewardsEras, stakingLedger).some((s) => s.eq(e)));
|
6700 | const validators = valInfo.map(([v]) => v);
|
6701 | const queryValidators = valInfo.map(([, q]) => q);
|
6702 | return rewards
|
6703 | .filter(({ isEmpty }) => !isEmpty)
|
6704 | .filter((reward) => {
|
6705 | if (!filter.some((e) => reward.era.eq(e))) {
|
6706 | return false;
|
6707 | }
|
6708 | removeClaimed(validators, queryValidators, reward, claimedRewardsEras);
|
6709 | return true;
|
6710 | })
|
6711 | .filter(({ validators }) => Object.keys(validators).length !== 0)
|
6712 | .map((reward) => util.objectSpread({}, reward, {
|
6713 | nominators: reward.nominating.filter((n) => reward.validators[n.validatorId])
|
6714 | }));
|
6715 | }
|
6716 | function _stakerRewardsEras(instanceId, api) {
|
6717 | return memo(instanceId, (eras, withActive = false) => combineLatest([
|
6718 | api.derive.staking._erasPoints(eras, withActive),
|
6719 | api.derive.staking._erasPrefs(eras, withActive),
|
6720 | api.derive.staking._erasRewards(eras, withActive)
|
6721 | ]));
|
6722 | }
|
6723 | function _stakerRewards(instanceId, api) {
|
6724 | return memo(instanceId, (accountIds, eras, withActive = false) => combineLatest([
|
6725 | api.derive.staking.queryMulti(accountIds, { withClaimedRewardsEras: true, withLedger: true }),
|
6726 | api.derive.staking._stakerExposures(accountIds, eras, withActive),
|
6727 | api.derive.staking._stakerRewardsEras(eras, withActive)
|
6728 | ]).pipe(switchMap(([queries, exposures, erasResult]) => {
|
6729 | const allRewards = queries.map(({ claimedRewardsEras, stakingLedger, stashId }, index) => (!stashId || (!stakingLedger && !claimedRewardsEras))
|
6730 | ? []
|
6731 | : parseRewards(api, stashId, erasResult, exposures[index]));
|
6732 | if (withActive) {
|
6733 | return of(allRewards);
|
6734 | }
|
6735 | const [allValidators, stashValidators] = allUniqValidators(allRewards);
|
6736 | return api.derive.staking.queryMulti(allValidators, { withClaimedRewardsEras: true, withLedger: true }).pipe(map((queriedVals) => queries.map(({ claimedRewardsEras, stakingLedger }, index) => filterRewards(eras, stashValidators[index]
|
6737 | .map((validatorId) => [
|
6738 | validatorId,
|
6739 | queriedVals.find((q) => q.accountId.eq(validatorId))
|
6740 | ])
|
6741 | .filter((v) => !!v[1]), {
|
6742 | claimedRewardsEras,
|
6743 | rewards: allRewards[index],
|
6744 | stakingLedger
|
6745 | }))));
|
6746 | })));
|
6747 | }
|
6748 | const stakerRewards = firstMemo((api, accountId, withActive) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking._stakerRewards([accountId], eras, withActive))));
|
6749 | function stakerRewardsMultiEras(instanceId, api) {
|
6750 | return memo(instanceId, (accountIds, eras) => accountIds.length && eras.length
|
6751 | ? api.derive.staking._stakerRewards(accountIds, eras, false)
|
6752 | : of([]));
|
6753 | }
|
6754 | function stakerRewardsMulti(instanceId, api) {
|
6755 | return memo(instanceId, (accountIds, withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking.stakerRewardsMultiEras(accountIds, eras))));
|
6756 | }
|
6757 |
|
6758 | function _stakerSlashes(instanceId, api) {
|
6759 | return memo(instanceId, (accountId, eras, withActive) => {
|
6760 | const stakerId = api.registry.createType('AccountId', accountId).toString();
|
6761 | return api.derive.staking._erasSlashes(eras, withActive).pipe(map((slashes) => slashes.map(({ era, nominators, validators }) => ({
|
6762 | era,
|
6763 | total: nominators[stakerId] || validators[stakerId] || api.registry.createType('Balance')
|
6764 | }))));
|
6765 | });
|
6766 | }
|
6767 | const stakerSlashes = erasHistoricApplyAccount('_stakerSlashes');
|
6768 |
|
6769 | function onBondedEvent(api) {
|
6770 | let current = Date.now();
|
6771 | return api.query.system.events().pipe(map((events) => {
|
6772 | current = events.filter(({ event, phase }) => {
|
6773 | try {
|
6774 | return phase.isApplyExtrinsic &&
|
6775 | event.section === 'staking' &&
|
6776 | event.method === 'Bonded';
|
6777 | }
|
6778 | catch {
|
6779 | return false;
|
6780 | }
|
6781 | })
|
6782 | ? Date.now()
|
6783 | : current;
|
6784 | return current;
|
6785 | }), startWith(current), drr({ skipTimeout: true }));
|
6786 | }
|
6787 | function stashes(instanceId, api) {
|
6788 | return memo(instanceId, () => onBondedEvent(api).pipe(switchMap(() => api.query.staking.validators.keys()), map((keys) => keys.map(({ args: [v] }) => v).filter((a) => a))));
|
6789 | }
|
6790 |
|
6791 | function nextElected(instanceId, api) {
|
6792 | return memo(instanceId, () =>
|
6793 | api.query.staking.erasStakersPaged
|
6794 | ? api.derive.session.indexes().pipe(
|
6795 | switchMap(({ currentEra }) => api.query.staking.erasStakersPaged.keys(currentEra)),
|
6796 | map((keys) => [...new Set(keys.map(({ args: [, accountId] }) => accountId.toString()))].map((a) => api.registry.createType('AccountId', a))))
|
6797 | : api.query.staking.erasStakers
|
6798 | ? api.derive.session.indexes().pipe(
|
6799 | switchMap(({ currentEra }) => api.query.staking.erasStakers.keys(currentEra)),
|
6800 | map((keys) => [...new Set(keys.map(({ args: [, accountId] }) => accountId.toString()))].map((a) => api.registry.createType('AccountId', a))))
|
6801 | : api.query.staking['currentElected']());
|
6802 | }
|
6803 | function validators(instanceId, api) {
|
6804 | return memo(instanceId, () =>
|
6805 | combineLatest([
|
6806 | api.query.session
|
6807 | ? api.query.session.validators()
|
6808 | : of([]),
|
6809 | api.query.staking
|
6810 | ? api.derive.staking.nextElected()
|
6811 | : of([])
|
6812 | ]).pipe(map(([validators, nextElected]) => ({
|
6813 | nextElected: nextElected.length
|
6814 | ? nextElected
|
6815 | : validators,
|
6816 | validators
|
6817 | }))));
|
6818 | }
|
6819 |
|
6820 | const DEFAULT_FLAGS = { withController: true, withPrefs: true };
|
6821 | function waitingInfo(instanceId, api) {
|
6822 | return memo(instanceId, (flags = DEFAULT_FLAGS) => combineLatest([
|
6823 | api.derive.staking.validators(),
|
6824 | api.derive.staking.stashes()
|
6825 | ]).pipe(switchMap(([{ nextElected }, stashes]) => {
|
6826 | const elected = nextElected.map((a) => a.toString());
|
6827 | const waiting = stashes.filter((v) => !elected.includes(v.toString()));
|
6828 | return api.derive.staking.queryMulti(waiting, flags).pipe(map((info) => ({
|
6829 | info,
|
6830 | waiting
|
6831 | })));
|
6832 | })));
|
6833 | }
|
6834 |
|
6835 | const staking = Object.freeze({
|
6836 | __proto__: null,
|
6837 | _eraExposure: _eraExposure,
|
6838 | _eraPrefs: _eraPrefs,
|
6839 | _eraSlashes: _eraSlashes,
|
6840 | _erasExposure: _erasExposure,
|
6841 | _erasPoints: _erasPoints,
|
6842 | _erasPrefs: _erasPrefs,
|
6843 | _erasRewards: _erasRewards,
|
6844 | _erasSlashes: _erasSlashes,
|
6845 | _ownExposures: _ownExposures,
|
6846 | _ownSlashes: _ownSlashes,
|
6847 | _stakerExposures: _stakerExposures,
|
6848 | _stakerPoints: _stakerPoints,
|
6849 | _stakerPrefs: _stakerPrefs,
|
6850 | _stakerRewards: _stakerRewards,
|
6851 | _stakerRewardsEras: _stakerRewardsEras,
|
6852 | _stakerSlashes: _stakerSlashes,
|
6853 | account: account,
|
6854 | accounts: accounts,
|
6855 | currentPoints: currentPoints,
|
6856 | electedInfo: electedInfo,
|
6857 | eraExposure: eraExposure,
|
6858 | eraPrefs: eraPrefs,
|
6859 | eraSlashes: eraSlashes,
|
6860 | erasExposure: erasExposure,
|
6861 | erasHistoric: erasHistoric,
|
6862 | erasPoints: erasPoints,
|
6863 | erasPrefs: erasPrefs,
|
6864 | erasRewards: erasRewards,
|
6865 | erasSlashes: erasSlashes,
|
6866 | keys: keys,
|
6867 | keysMulti: keysMulti,
|
6868 | nextElected: nextElected,
|
6869 | overview: overview,
|
6870 | ownExposure: ownExposure,
|
6871 | ownExposures: ownExposures,
|
6872 | ownSlash: ownSlash,
|
6873 | ownSlashes: ownSlashes,
|
6874 | query: query,
|
6875 | queryMulti: queryMulti,
|
6876 | stakerExposure: stakerExposure,
|
6877 | stakerExposures: stakerExposures,
|
6878 | stakerPoints: stakerPoints,
|
6879 | stakerPrefs: stakerPrefs,
|
6880 | stakerRewards: stakerRewards,
|
6881 | stakerRewardsMulti: stakerRewardsMulti,
|
6882 | stakerRewardsMultiEras: stakerRewardsMultiEras,
|
6883 | stakerSlashes: stakerSlashes,
|
6884 | stashes: stashes,
|
6885 | validators: validators,
|
6886 | waitingInfo: waitingInfo
|
6887 | });
|
6888 |
|
6889 | const members = members$5('technicalCommittee');
|
6890 | const hasProposals = hasProposals$4('technicalCommittee');
|
6891 | const proposal = proposal$4('technicalCommittee');
|
6892 | const proposalCount = proposalCount$4('technicalCommittee');
|
6893 | const proposalHashes = proposalHashes$4('technicalCommittee');
|
6894 | const proposals$1 = proposals$6('technicalCommittee');
|
6895 | const prime = prime$4('technicalCommittee');
|
6896 |
|
6897 | const technicalCommittee = Object.freeze({
|
6898 | __proto__: null,
|
6899 | hasProposals: hasProposals,
|
6900 | members: members,
|
6901 | prime: prime,
|
6902 | proposal: proposal,
|
6903 | proposalCount: proposalCount,
|
6904 | proposalHashes: proposalHashes,
|
6905 | proposals: proposals$1
|
6906 | });
|
6907 |
|
6908 | function parseResult(api, { allIds, allProposals, approvalIds, councilProposals, proposalCount }) {
|
6909 | const approvals = [];
|
6910 | const proposals = [];
|
6911 | const councilTreasury = councilProposals.filter(({ proposal }) => proposal && (api.tx.treasury.approveProposal.is(proposal) ||
|
6912 | api.tx.treasury.rejectProposal.is(proposal)));
|
6913 | allIds.forEach((id, index) => {
|
6914 | if (allProposals[index].isSome) {
|
6915 | const council = councilTreasury
|
6916 | .filter(({ proposal }) => proposal && id.eq(proposal.args[0]))
|
6917 | .sort((a, b) => a.proposal && b.proposal
|
6918 | ? a.proposal.method.localeCompare(b.proposal.method)
|
6919 | : a.proposal
|
6920 | ? -1
|
6921 | : 1);
|
6922 | const isApproval = approvalIds.some((approvalId) => approvalId.eq(id));
|
6923 | const derived = { council, id, proposal: allProposals[index].unwrap() };
|
6924 | if (isApproval) {
|
6925 | approvals.push(derived);
|
6926 | }
|
6927 | else {
|
6928 | proposals.push(derived);
|
6929 | }
|
6930 | }
|
6931 | });
|
6932 | return { approvals, proposalCount, proposals };
|
6933 | }
|
6934 | function retrieveProposals(api, proposalCount, approvalIds) {
|
6935 | const proposalIds = [];
|
6936 | const count = proposalCount.toNumber();
|
6937 | for (let index = 0; index < count; index++) {
|
6938 | if (!approvalIds.some((id) => id.eqn(index))) {
|
6939 | proposalIds.push(api.registry.createType('ProposalIndex', index));
|
6940 | }
|
6941 | }
|
6942 | const allIds = [...proposalIds, ...approvalIds];
|
6943 | return combineLatest([
|
6944 | api.query.treasury.proposals.multi(allIds),
|
6945 | api.derive.council
|
6946 | ? api.derive.council.proposals()
|
6947 | : of([])
|
6948 | ]).pipe(map(([allProposals, councilProposals]) => parseResult(api, { allIds, allProposals, approvalIds, councilProposals, proposalCount })));
|
6949 | }
|
6950 | function proposals(instanceId, api) {
|
6951 | return memo(instanceId, () => api.query.treasury
|
6952 | ? combineLatest([
|
6953 | api.query.treasury.proposalCount(),
|
6954 | api.query.treasury.approvals()
|
6955 | ]).pipe(switchMap(([proposalCount, approvalIds]) => retrieveProposals(api, proposalCount, approvalIds)))
|
6956 | : of({
|
6957 | approvals: [],
|
6958 | proposalCount: api.registry.createType('ProposalIndex'),
|
6959 | proposals: []
|
6960 | }));
|
6961 | }
|
6962 |
|
6963 | const treasury = Object.freeze({
|
6964 | __proto__: null,
|
6965 | proposals: proposals
|
6966 | });
|
6967 |
|
6968 | function events(instanceId, api) {
|
6969 | return memo(instanceId, (blockHash) => combineLatest([
|
6970 | api.rpc.chain.getBlock(blockHash),
|
6971 | api.queryAt(blockHash).pipe(switchMap((queryAt) => queryAt.system.events()))
|
6972 | ]).pipe(map(([block, events]) => ({ block, events }))));
|
6973 | }
|
6974 |
|
6975 | const FALLBACK_MAX_HASH_COUNT = 250;
|
6976 | const FALLBACK_PERIOD = new util.BN(6 * 1000);
|
6977 | const MAX_FINALITY_LAG = new util.BN(5);
|
6978 | const MORTAL_PERIOD = new util.BN(5 * 60 * 1000);
|
6979 |
|
6980 | function latestNonce(api, address) {
|
6981 | return api.derive.balances.account(address).pipe(map(({ accountNonce }) => accountNonce));
|
6982 | }
|
6983 | function nextNonce(api, address) {
|
6984 | return api.rpc.system?.accountNextIndex
|
6985 | ? api.rpc.system.accountNextIndex(address)
|
6986 | : latestNonce(api, address);
|
6987 | }
|
6988 | function signingHeader(api) {
|
6989 | return combineLatest([
|
6990 | api.rpc.chain.getHeader().pipe(switchMap((header) =>
|
6991 | header.parentHash.isEmpty
|
6992 | ? of(header)
|
6993 | : api.rpc.chain.getHeader(header.parentHash).pipe(catchError(() => of(header))))),
|
6994 | api.rpc.chain.getFinalizedHead().pipe(switchMap((hash) => api.rpc.chain.getHeader(hash).pipe(catchError(() => of(null)))))
|
6995 | ]).pipe(map(([current, finalized]) =>
|
6996 | !finalized || unwrapBlockNumber(current).sub(unwrapBlockNumber(finalized)).gt(MAX_FINALITY_LAG)
|
6997 | ? current
|
6998 | : finalized));
|
6999 | }
|
7000 | function babeOrAuraPeriod(api) {
|
7001 | const period = api.consts.babe?.expectedBlockTime ||
|
7002 | api.consts['aura']?.slotDuration ||
|
7003 | api.consts.timestamp?.minimumPeriod.muln(2);
|
7004 | return period && period.isZero && !period.isZero() ? period : undefined;
|
7005 | }
|
7006 | function signingInfo(_instanceId, api) {
|
7007 | return (address, nonce, era) => combineLatest([
|
7008 | util.isUndefined(nonce)
|
7009 | ? latestNonce(api, address)
|
7010 | : nonce === -1
|
7011 | ? nextNonce(api, address)
|
7012 | : of(api.registry.createType('Index', nonce)),
|
7013 | (util.isUndefined(era) || (util.isNumber(era) && era > 0))
|
7014 | ? signingHeader(api)
|
7015 | : of(null)
|
7016 | ]).pipe(map(([nonce, header]) => ({
|
7017 | header,
|
7018 | mortalLength: Math.min(api.consts.system?.blockHashCount?.toNumber() || FALLBACK_MAX_HASH_COUNT, MORTAL_PERIOD
|
7019 | .div(babeOrAuraPeriod(api) || FALLBACK_PERIOD)
|
7020 | .iadd(MAX_FINALITY_LAG)
|
7021 | .toNumber()),
|
7022 | nonce
|
7023 | })));
|
7024 | }
|
7025 |
|
7026 | const tx = Object.freeze({
|
7027 | __proto__: null,
|
7028 | events: events,
|
7029 | signingInfo: signingInfo
|
7030 | });
|
7031 |
|
7032 | const derive = { accounts: accounts$1, alliance, bagsList, balances, bounties, chain, contracts, council, crowdloan, democracy, elections, imOnline, membership, parachains, session, society, staking, technicalCommittee, treasury, tx };
|
7033 |
|
7034 | const checks = {
|
7035 | allianceMotion: {
|
7036 | instances: ['allianceMotion'],
|
7037 | methods: []
|
7038 | },
|
7039 | bagsList: {
|
7040 | instances: ['voterBagsList', 'voterList', 'bagsList'],
|
7041 | methods: [],
|
7042 | withDetect: true
|
7043 | },
|
7044 | contracts: {
|
7045 | instances: ['contracts'],
|
7046 | methods: []
|
7047 | },
|
7048 | council: {
|
7049 | instances: ['council'],
|
7050 | methods: [],
|
7051 | withDetect: true
|
7052 | },
|
7053 | crowdloan: {
|
7054 | instances: ['crowdloan'],
|
7055 | methods: []
|
7056 | },
|
7057 | democracy: {
|
7058 | instances: ['democracy'],
|
7059 | methods: []
|
7060 | },
|
7061 | elections: {
|
7062 | instances: ['phragmenElection', 'electionsPhragmen', 'elections', 'council'],
|
7063 | methods: [],
|
7064 | withDetect: true
|
7065 | },
|
7066 | imOnline: {
|
7067 | instances: ['imOnline'],
|
7068 | methods: []
|
7069 | },
|
7070 | membership: {
|
7071 | instances: ['membership'],
|
7072 | methods: []
|
7073 | },
|
7074 | parachains: {
|
7075 | instances: ['parachains', 'registrar'],
|
7076 | methods: []
|
7077 | },
|
7078 | session: {
|
7079 | instances: ['session'],
|
7080 | methods: []
|
7081 | },
|
7082 | society: {
|
7083 | instances: ['society'],
|
7084 | methods: []
|
7085 | },
|
7086 | staking: {
|
7087 | instances: ['staking'],
|
7088 | methods: ['erasRewardPoints']
|
7089 | },
|
7090 | technicalCommittee: {
|
7091 | instances: ['technicalCommittee'],
|
7092 | methods: [],
|
7093 | withDetect: true
|
7094 | },
|
7095 | treasury: {
|
7096 | instances: ['treasury'],
|
7097 | methods: []
|
7098 | }
|
7099 | };
|
7100 | function getModuleInstances(api, specName, moduleName) {
|
7101 | return api.registry.getModuleInstances(specName, moduleName) || [];
|
7102 | }
|
7103 | function injectFunctions(instanceId, api, derives) {
|
7104 | const result = {};
|
7105 | const names = Object.keys(derives);
|
7106 | const keys = Object.keys(api.query);
|
7107 | const specName = api.runtimeVersion.specName;
|
7108 | const filterKeys = (q) => keys.includes(q);
|
7109 | const filterInstances = (q) => getModuleInstances(api, specName, q).some(filterKeys);
|
7110 | const filterMethods = (all) => (m) => all.some((q) => keys.includes(q) && api.query[q][m]);
|
7111 | const getKeys = (s) => Object.keys(derives[s]);
|
7112 | const creator = (s, m) => derives[s][m](instanceId, api);
|
7113 | const isIncluded = (c) => (!checks[c] || ((checks[c].instances.some(filterKeys) && (!checks[c].methods.length ||
|
7114 | checks[c].methods.every(filterMethods(checks[c].instances)))) ||
|
7115 | (checks[c].withDetect &&
|
7116 | checks[c].instances.some(filterInstances))));
|
7117 | for (let i = 0, count = names.length; i < count; i++) {
|
7118 | const name = names[i];
|
7119 | isIncluded(name) &&
|
7120 | lazyDeriveSection(result, name, getKeys, creator);
|
7121 | }
|
7122 | return result;
|
7123 | }
|
7124 | function getAvailableDerives(instanceId, api, custom = {}) {
|
7125 | return {
|
7126 | ...injectFunctions(instanceId, api, derive),
|
7127 | ...injectFunctions(instanceId, api, custom)
|
7128 | };
|
7129 | }
|
7130 |
|
7131 | function decorateDeriveSections(decorateMethod, derives) {
|
7132 | const getKeys = (s) => Object.keys(derives[s]);
|
7133 | const creator = (s, m) => decorateMethod(derives[s][m]);
|
7134 | const result = {};
|
7135 | const names = Object.keys(derives);
|
7136 | for (let i = 0, count = names.length; i < count; i++) {
|
7137 | lazyDeriveSection(result, names[i], getKeys, creator);
|
7138 | }
|
7139 | return result;
|
7140 | }
|
7141 |
|
7142 | const recordIdentity = (record) => record;
|
7143 | function filterAndApply(events, section, methods, onFound) {
|
7144 | return events
|
7145 | .filter(({ event }) => section === event.section &&
|
7146 | methods.includes(event.method))
|
7147 | .map((record) => onFound(record));
|
7148 | }
|
7149 | function getDispatchError({ event: { data: [dispatchError] } }) {
|
7150 | return dispatchError;
|
7151 | }
|
7152 | function getDispatchInfo({ event: { data, method } }) {
|
7153 | return method === 'ExtrinsicSuccess'
|
7154 | ? data[0]
|
7155 | : data[1];
|
7156 | }
|
7157 | function extractError(events = []) {
|
7158 | return filterAndApply(events, 'system', ['ExtrinsicFailed'], getDispatchError)[0];
|
7159 | }
|
7160 | function extractInfo(events = []) {
|
7161 | return filterAndApply(events, 'system', ['ExtrinsicFailed', 'ExtrinsicSuccess'], getDispatchInfo)[0];
|
7162 | }
|
7163 | class SubmittableResult {
|
7164 | dispatchError;
|
7165 | dispatchInfo;
|
7166 | internalError;
|
7167 | events;
|
7168 | status;
|
7169 | txHash;
|
7170 | txIndex;
|
7171 | blockNumber;
|
7172 | constructor({ blockNumber, dispatchError, dispatchInfo, events, internalError, status, txHash, txIndex }) {
|
7173 | this.dispatchError = dispatchError || extractError(events);
|
7174 | this.dispatchInfo = dispatchInfo || extractInfo(events);
|
7175 | this.events = events || [];
|
7176 | this.internalError = internalError;
|
7177 | this.status = status;
|
7178 | this.txHash = txHash;
|
7179 | this.txIndex = txIndex;
|
7180 | this.blockNumber = blockNumber;
|
7181 | }
|
7182 | get isCompleted() {
|
7183 | return this.isError || this.status.isInBlock || this.status.isFinalized;
|
7184 | }
|
7185 | get isError() {
|
7186 | return this.status.isDropped || this.status.isFinalityTimeout || this.status.isInvalid || this.status.isUsurped;
|
7187 | }
|
7188 | get isFinalized() {
|
7189 | return this.status.isFinalized;
|
7190 | }
|
7191 | get isInBlock() {
|
7192 | return this.status.isInBlock;
|
7193 | }
|
7194 | get isWarning() {
|
7195 | return this.status.isRetracted;
|
7196 | }
|
7197 | filterRecords(section, method) {
|
7198 | return filterAndApply(this.events, section, Array.isArray(method) ? method : [method], recordIdentity);
|
7199 | }
|
7200 | findRecord(section, method) {
|
7201 | return this.filterRecords(section, method)[0];
|
7202 | }
|
7203 | toHuman(isExtended) {
|
7204 | return {
|
7205 | dispatchError: this.dispatchError?.toHuman(),
|
7206 | dispatchInfo: this.dispatchInfo?.toHuman(),
|
7207 | events: this.events.map((e) => e.toHuman(isExtended)),
|
7208 | internalError: this.internalError?.message.toString(),
|
7209 | status: this.status.toHuman(isExtended)
|
7210 | };
|
7211 | }
|
7212 | }
|
7213 |
|
7214 | function makeEraOptions(api, registry, partialOptions, { header, mortalLength, nonce }) {
|
7215 | if (!header) {
|
7216 | if (partialOptions.era && !partialOptions.blockHash) {
|
7217 | throw new Error('Expected blockHash to be passed alongside non-immortal era options');
|
7218 | }
|
7219 | if (util.isNumber(partialOptions.era)) {
|
7220 | delete partialOptions.era;
|
7221 | delete partialOptions.blockHash;
|
7222 | }
|
7223 | return makeSignOptions(api, partialOptions, { nonce });
|
7224 | }
|
7225 | return makeSignOptions(api, partialOptions, {
|
7226 | blockHash: header.hash,
|
7227 | era: registry.createTypeUnsafe('ExtrinsicEra', [{
|
7228 | current: header.number,
|
7229 | period: partialOptions.era || mortalLength
|
7230 | }]),
|
7231 | nonce
|
7232 | });
|
7233 | }
|
7234 | function makeSignAndSendOptions(partialOptions, statusCb) {
|
7235 | let options = {};
|
7236 | if (util.isFunction(partialOptions)) {
|
7237 | statusCb = partialOptions;
|
7238 | }
|
7239 | else {
|
7240 | options = util.objectSpread({}, partialOptions);
|
7241 | }
|
7242 | return [options, statusCb];
|
7243 | }
|
7244 | function makeSignOptions(api, partialOptions, extras) {
|
7245 | return util.objectSpread({ blockHash: api.genesisHash, genesisHash: api.genesisHash }, partialOptions, extras, { runtimeVersion: api.runtimeVersion, signedExtensions: api.registry.signedExtensions, version: api.extrinsicType });
|
7246 | }
|
7247 | function optionsOrNonce(partialOptions = {}) {
|
7248 | return util.isBn(partialOptions) || util.isNumber(partialOptions)
|
7249 | ? { nonce: partialOptions }
|
7250 | : partialOptions;
|
7251 | }
|
7252 | function createClass({ api, apiType, blockHash, decorateMethod }) {
|
7253 | const ExtrinsicBase = api.registry.createClass('Extrinsic');
|
7254 | class Submittable extends ExtrinsicBase {
|
7255 | __internal__ignoreStatusCb;
|
7256 | __internal__transformResult = (util.identity);
|
7257 | constructor(registry, extrinsic) {
|
7258 | super(registry, extrinsic, { version: api.extrinsicType });
|
7259 | this.__internal__ignoreStatusCb = apiType === 'rxjs';
|
7260 | }
|
7261 | get hasDryRun() {
|
7262 | return util.isFunction(api.rpc.system?.dryRun);
|
7263 | }
|
7264 | get hasPaymentInfo() {
|
7265 | return util.isFunction(api.call.transactionPaymentApi?.queryInfo);
|
7266 | }
|
7267 | dryRun(account, optionsOrHash) {
|
7268 | if (!this.hasDryRun) {
|
7269 | throw new Error('The system.dryRun RPC call is not available in your environment');
|
7270 | }
|
7271 | if (blockHash || util.isString(optionsOrHash) || util.isU8a(optionsOrHash)) {
|
7272 | return decorateMethod(() => api.rpc.system.dryRun(this.toHex(), blockHash || optionsOrHash));
|
7273 | }
|
7274 | return decorateMethod(() => this.__internal__observeSign(account, optionsOrHash).pipe(switchMap(() => api.rpc.system.dryRun(this.toHex()))))();
|
7275 | }
|
7276 | paymentInfo(account, optionsOrHash) {
|
7277 | if (!this.hasPaymentInfo) {
|
7278 | throw new Error('The transactionPaymentApi.queryInfo runtime call is not available in your environment');
|
7279 | }
|
7280 | if (blockHash || util.isString(optionsOrHash) || util.isU8a(optionsOrHash)) {
|
7281 | return decorateMethod(() => api.callAt(blockHash || optionsOrHash).pipe(switchMap((callAt) => {
|
7282 | const u8a = this.toU8a();
|
7283 | return callAt.transactionPaymentApi.queryInfo(u8a, u8a.length);
|
7284 | })));
|
7285 | }
|
7286 | const [allOptions] = makeSignAndSendOptions(optionsOrHash);
|
7287 | const address = isKeyringPair(account) ? account.address : account.toString();
|
7288 | return decorateMethod(() => api.derive.tx.signingInfo(address, allOptions.nonce, allOptions.era).pipe(first(), switchMap((signingInfo) => {
|
7289 | const eraOptions = makeEraOptions(api, this.registry, allOptions, signingInfo);
|
7290 | const signOptions = makeSignOptions(api, eraOptions, {});
|
7291 | const u8a = api.tx(this.toU8a()).signFake(address, signOptions).toU8a();
|
7292 | return api.call.transactionPaymentApi.queryInfo(u8a, u8a.length);
|
7293 | })))();
|
7294 | }
|
7295 | send(statusCb) {
|
7296 | const isSubscription = api.hasSubscriptions && (this.__internal__ignoreStatusCb || !!statusCb);
|
7297 | return decorateMethod(isSubscription
|
7298 | ? this.__internal__observeSubscribe
|
7299 | : this.__internal__observeSend)(statusCb);
|
7300 | }
|
7301 | signAsync(account, partialOptions) {
|
7302 | return decorateMethod(() => this.__internal__observeSign(account, partialOptions).pipe(map(() => this)))();
|
7303 | }
|
7304 | signAndSend(account, partialOptions, optionalStatusCb) {
|
7305 | const [options, statusCb] = makeSignAndSendOptions(partialOptions, optionalStatusCb);
|
7306 | const isSubscription = api.hasSubscriptions && (this.__internal__ignoreStatusCb || !!statusCb);
|
7307 | return decorateMethod(() => this.__internal__observeSign(account, options).pipe(switchMap((info) => isSubscription
|
7308 | ? this.__internal__observeSubscribe(info)
|
7309 | : this.__internal__observeSend(info)))
|
7310 | )(statusCb);
|
7311 | }
|
7312 | withResultTransform(transform) {
|
7313 | this.__internal__transformResult = transform;
|
7314 | return this;
|
7315 | }
|
7316 | __internal__observeSign = (account, partialOptions) => {
|
7317 | const address = isKeyringPair(account) ? account.address : account.toString();
|
7318 | const options = optionsOrNonce(partialOptions);
|
7319 | return api.derive.tx.signingInfo(address, options.nonce, options.era).pipe(first(), mergeMap(async (signingInfo) => {
|
7320 | const eraOptions = makeEraOptions(api, this.registry, options, signingInfo);
|
7321 | let updateId = -1;
|
7322 | if (isKeyringPair(account)) {
|
7323 | this.sign(account, eraOptions);
|
7324 | }
|
7325 | else {
|
7326 | updateId = await this.__internal__signViaSigner(address, eraOptions, signingInfo.header);
|
7327 | }
|
7328 | return { options: eraOptions, updateId };
|
7329 | }));
|
7330 | };
|
7331 | __internal__observeStatus = (txHash, status) => {
|
7332 | if (!status.isFinalized && !status.isInBlock) {
|
7333 | return of(this.__internal__transformResult(new SubmittableResult({
|
7334 | status,
|
7335 | txHash
|
7336 | })));
|
7337 | }
|
7338 | const blockHash = status.isInBlock
|
7339 | ? status.asInBlock
|
7340 | : status.asFinalized;
|
7341 | return api.derive.tx.events(blockHash).pipe(map(({ block, events }) => this.__internal__transformResult(new SubmittableResult({
|
7342 | ...filterEvents(txHash, block, events, status),
|
7343 | status,
|
7344 | txHash
|
7345 | }))), catchError((internalError) => of(this.__internal__transformResult(new SubmittableResult({
|
7346 | internalError,
|
7347 | status,
|
7348 | txHash
|
7349 | })))));
|
7350 | };
|
7351 | __internal__observeSend = (info) => {
|
7352 | return api.rpc.author.submitExtrinsic(this).pipe(tap((hash) => {
|
7353 | this.__internal__updateSigner(hash, info);
|
7354 | }));
|
7355 | };
|
7356 | __internal__observeSubscribe = (info) => {
|
7357 | const txHash = this.hash;
|
7358 | return api.rpc.author.submitAndWatchExtrinsic(this).pipe(switchMap((status) => this.__internal__observeStatus(txHash, status)), tap((status) => {
|
7359 | this.__internal__updateSigner(status, info);
|
7360 | }));
|
7361 | };
|
7362 | __internal__signViaSigner = async (address, options, header) => {
|
7363 | const signer = options.signer || api.signer;
|
7364 | if (!signer) {
|
7365 | throw new Error('No signer specified, either via api.setSigner or via sign options. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.');
|
7366 | }
|
7367 | const payload = this.registry.createTypeUnsafe('SignerPayload', [util.objectSpread({}, options, {
|
7368 | address,
|
7369 | blockNumber: header ? header.number : 0,
|
7370 | method: this.method
|
7371 | })]);
|
7372 | let result;
|
7373 | if (util.isFunction(signer.signPayload)) {
|
7374 | result = await signer.signPayload(payload.toPayload());
|
7375 | }
|
7376 | else if (util.isFunction(signer.signRaw)) {
|
7377 | result = await signer.signRaw(payload.toRaw());
|
7378 | }
|
7379 | else {
|
7380 | throw new Error('Invalid signer interface, it should implement either signPayload or signRaw (or both)');
|
7381 | }
|
7382 | super.addSignature(address, result.signature, payload.toPayload());
|
7383 | return result.id;
|
7384 | };
|
7385 | __internal__updateSigner = (status, info) => {
|
7386 | if (info && (info.updateId !== -1)) {
|
7387 | const { options, updateId } = info;
|
7388 | const signer = options.signer || api.signer;
|
7389 | if (signer && util.isFunction(signer.update)) {
|
7390 | signer.update(updateId, status);
|
7391 | }
|
7392 | }
|
7393 | };
|
7394 | }
|
7395 | return Submittable;
|
7396 | }
|
7397 |
|
7398 | function createSubmittable(apiType, api, decorateMethod, registry, blockHash) {
|
7399 | const Submittable = createClass({ api, apiType, blockHash, decorateMethod });
|
7400 | return (extrinsic) => new Submittable(registry || api.registry, extrinsic);
|
7401 | }
|
7402 |
|
7403 | function findCall(registry, callIndex) {
|
7404 | return registry.findMetaCall(util.u8aToU8a(callIndex));
|
7405 | }
|
7406 | function findError(registry, errorIndex) {
|
7407 | return registry.findMetaError(util.u8aToU8a(errorIndex));
|
7408 | }
|
7409 |
|
7410 | const XCM_MAPPINGS = ['AssetInstance', 'Fungibility', 'Junction', 'Junctions', 'MultiAsset', 'MultiAssetFilter', 'MultiLocation', 'Response', 'WildFungibility', 'WildMultiAsset', 'Xcm', 'XcmError', 'XcmOrder'];
|
7411 | function mapXcmTypes(version) {
|
7412 | return XCM_MAPPINGS.reduce((all, key) => util.objectSpread(all, { [key]: `${key}${version}` }), {});
|
7413 | }
|
7414 |
|
7415 | const typesChain = {};
|
7416 |
|
7417 | const sharedTypes$7 = {
|
7418 | AnchorData: {
|
7419 | anchoredBlock: 'u64',
|
7420 | docRoot: 'H256',
|
7421 | id: 'H256'
|
7422 | },
|
7423 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7424 | PreCommitData: {
|
7425 | expirationBlock: 'u64',
|
7426 | identity: 'H256',
|
7427 | signingRoot: 'H256'
|
7428 | },
|
7429 | Fee: {
|
7430 | key: 'Hash',
|
7431 | price: 'Balance'
|
7432 | },
|
7433 | MultiAccountData: {
|
7434 | deposit: 'Balance',
|
7435 | depositor: 'AccountId',
|
7436 | signatories: 'Vec<AccountId>',
|
7437 | threshold: 'u16'
|
7438 | },
|
7439 | ChainId: 'u8',
|
7440 | DepositNonce: 'u64',
|
7441 | ResourceId: '[u8; 32]',
|
7442 | 'chainbridge::ChainId': 'u8',
|
7443 | RegistryId: 'H160',
|
7444 | TokenId: 'U256',
|
7445 | AssetId: {
|
7446 | registryId: 'RegistryId',
|
7447 | tokenId: 'TokenId'
|
7448 | },
|
7449 | AssetInfo: {
|
7450 | metadata: 'Bytes'
|
7451 | },
|
7452 | MintInfo: {
|
7453 | anchorId: 'Hash',
|
7454 | proofs: 'Vec<ProofMint>',
|
7455 | staticHashes: '[Hash; 3]'
|
7456 | },
|
7457 | Proof: {
|
7458 | leafHash: 'H256',
|
7459 | sortedHashes: 'H256'
|
7460 | },
|
7461 | ProofMint: {
|
7462 | hashes: 'Vec<Hash>',
|
7463 | property: 'Bytes',
|
7464 | salt: '[u8; 32]',
|
7465 | value: 'Bytes'
|
7466 | },
|
7467 | RegistryInfo: {
|
7468 | fields: 'Vec<Bytes>',
|
7469 | ownerCanBurn: 'bool'
|
7470 | },
|
7471 | ProxyType: {
|
7472 | _enum: [
|
7473 | 'Any',
|
7474 | 'NonTransfer',
|
7475 | 'Governance',
|
7476 | 'Staking',
|
7477 | 'NonProxy'
|
7478 | ]
|
7479 | }
|
7480 | };
|
7481 | const standaloneTypes = {
|
7482 | ...sharedTypes$7,
|
7483 | AccountInfo: 'AccountInfoWithRefCount',
|
7484 | Address: 'LookupSource',
|
7485 | LookupSource: 'IndicesLookupSource',
|
7486 | Multiplier: 'Fixed64',
|
7487 | RefCount: 'RefCountTo259'
|
7488 | };
|
7489 | const versioned$a = [
|
7490 | {
|
7491 | minmax: [240, 243],
|
7492 | types: {
|
7493 | ...standaloneTypes,
|
7494 | ProxyType: {
|
7495 | _enum: [
|
7496 | 'Any',
|
7497 | 'NonTransfer',
|
7498 | 'Governance',
|
7499 | 'Staking',
|
7500 | 'Vesting'
|
7501 | ]
|
7502 | }
|
7503 | }
|
7504 | },
|
7505 | {
|
7506 | minmax: [244, 999],
|
7507 | types: { ...standaloneTypes }
|
7508 | },
|
7509 | {
|
7510 | minmax: [1000, undefined],
|
7511 | types: { ...sharedTypes$7 }
|
7512 | }
|
7513 | ];
|
7514 |
|
7515 | const sharedTypes$6 = {
|
7516 | CompactAssignments: 'CompactAssignmentsWith24',
|
7517 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7518 | RawSolution: 'RawSolutionWith24',
|
7519 | Keys: 'SessionKeys6',
|
7520 | ProxyType: {
|
7521 | _enum: ['Any', 'NonTransfer', 'Governance', 'Staking', 'IdentityJudgement', 'CancelProxy', 'Auction']
|
7522 | },
|
7523 | Weight: 'WeightV1'
|
7524 | };
|
7525 | const addrIndicesTypes = {
|
7526 | AccountInfo: 'AccountInfoWithRefCount',
|
7527 | Address: 'LookupSource',
|
7528 | CompactAssignments: 'CompactAssignmentsWith16',
|
7529 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7530 | RawSolution: 'RawSolutionWith16',
|
7531 | Keys: 'SessionKeys5',
|
7532 | LookupSource: 'IndicesLookupSource',
|
7533 | ValidatorPrefs: 'ValidatorPrefsWithCommission'
|
7534 | };
|
7535 | const addrAccountIdTypes$2 = {
|
7536 | AccountInfo: 'AccountInfoWithRefCount',
|
7537 | Address: 'AccountId',
|
7538 | CompactAssignments: 'CompactAssignmentsWith16',
|
7539 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7540 | RawSolution: 'RawSolutionWith16',
|
7541 | Keys: 'SessionKeys5',
|
7542 | LookupSource: 'AccountId',
|
7543 | ValidatorPrefs: 'ValidatorPrefsWithCommission'
|
7544 | };
|
7545 | const versioned$9 = [
|
7546 | {
|
7547 | minmax: [1019, 1031],
|
7548 | types: {
|
7549 | ...addrIndicesTypes,
|
7550 | BalanceLock: 'BalanceLockTo212',
|
7551 | CompactAssignments: 'CompactAssignmentsTo257',
|
7552 | DispatchError: 'DispatchErrorTo198',
|
7553 | DispatchInfo: 'DispatchInfoTo244',
|
7554 | Heartbeat: 'HeartbeatTo244',
|
7555 | IdentityInfo: 'IdentityInfoTo198',
|
7556 | Keys: 'SessionKeys5',
|
7557 | Multiplier: 'Fixed64',
|
7558 | OpenTip: 'OpenTipTo225',
|
7559 | RefCount: 'RefCountTo259',
|
7560 | ReferendumInfo: 'ReferendumInfoTo239',
|
7561 | Scheduled: 'ScheduledTo254',
|
7562 | SlashingSpans: 'SlashingSpansTo204',
|
7563 | StakingLedger: 'StakingLedgerTo223',
|
7564 | Votes: 'VotesTo230',
|
7565 | Weight: 'u32'
|
7566 | }
|
7567 | },
|
7568 | {
|
7569 | minmax: [1032, 1042],
|
7570 | types: {
|
7571 | ...addrIndicesTypes,
|
7572 | BalanceLock: 'BalanceLockTo212',
|
7573 | CompactAssignments: 'CompactAssignmentsTo257',
|
7574 | DispatchInfo: 'DispatchInfoTo244',
|
7575 | Heartbeat: 'HeartbeatTo244',
|
7576 | Keys: 'SessionKeys5',
|
7577 | Multiplier: 'Fixed64',
|
7578 | OpenTip: 'OpenTipTo225',
|
7579 | RefCount: 'RefCountTo259',
|
7580 | ReferendumInfo: 'ReferendumInfoTo239',
|
7581 | Scheduled: 'ScheduledTo254',
|
7582 | SlashingSpans: 'SlashingSpansTo204',
|
7583 | StakingLedger: 'StakingLedgerTo223',
|
7584 | Votes: 'VotesTo230',
|
7585 | Weight: 'u32'
|
7586 | }
|
7587 | },
|
7588 | {
|
7589 | minmax: [1043, 1045],
|
7590 | types: {
|
7591 | ...addrIndicesTypes,
|
7592 | BalanceLock: 'BalanceLockTo212',
|
7593 | CompactAssignments: 'CompactAssignmentsTo257',
|
7594 | DispatchInfo: 'DispatchInfoTo244',
|
7595 | Heartbeat: 'HeartbeatTo244',
|
7596 | Keys: 'SessionKeys5',
|
7597 | Multiplier: 'Fixed64',
|
7598 | OpenTip: 'OpenTipTo225',
|
7599 | RefCount: 'RefCountTo259',
|
7600 | ReferendumInfo: 'ReferendumInfoTo239',
|
7601 | Scheduled: 'ScheduledTo254',
|
7602 | StakingLedger: 'StakingLedgerTo223',
|
7603 | Votes: 'VotesTo230',
|
7604 | Weight: 'u32'
|
7605 | }
|
7606 | },
|
7607 | {
|
7608 | minmax: [1046, 1049],
|
7609 | types: {
|
7610 | ...sharedTypes$6,
|
7611 | ...addrAccountIdTypes$2,
|
7612 | CompactAssignments: 'CompactAssignmentsTo257',
|
7613 | DispatchInfo: 'DispatchInfoTo244',
|
7614 | Heartbeat: 'HeartbeatTo244',
|
7615 | Multiplier: 'Fixed64',
|
7616 | OpenTip: 'OpenTipTo225',
|
7617 | RefCount: 'RefCountTo259',
|
7618 | ReferendumInfo: 'ReferendumInfoTo239',
|
7619 | Scheduled: 'ScheduledTo254',
|
7620 | StakingLedger: 'StakingLedgerTo223',
|
7621 | Weight: 'u32'
|
7622 | }
|
7623 | },
|
7624 | {
|
7625 | minmax: [1050, 1054],
|
7626 | types: {
|
7627 | ...sharedTypes$6,
|
7628 | ...addrAccountIdTypes$2,
|
7629 | CompactAssignments: 'CompactAssignmentsTo257',
|
7630 | DispatchInfo: 'DispatchInfoTo244',
|
7631 | Heartbeat: 'HeartbeatTo244',
|
7632 | Multiplier: 'Fixed64',
|
7633 | OpenTip: 'OpenTipTo225',
|
7634 | RefCount: 'RefCountTo259',
|
7635 | ReferendumInfo: 'ReferendumInfoTo239',
|
7636 | Scheduled: 'ScheduledTo254',
|
7637 | StakingLedger: 'StakingLedgerTo240',
|
7638 | Weight: 'u32'
|
7639 | }
|
7640 | },
|
7641 | {
|
7642 | minmax: [1055, 1056],
|
7643 | types: {
|
7644 | ...sharedTypes$6,
|
7645 | ...addrAccountIdTypes$2,
|
7646 | CompactAssignments: 'CompactAssignmentsTo257',
|
7647 | DispatchInfo: 'DispatchInfoTo244',
|
7648 | Heartbeat: 'HeartbeatTo244',
|
7649 | Multiplier: 'Fixed64',
|
7650 | OpenTip: 'OpenTipTo225',
|
7651 | RefCount: 'RefCountTo259',
|
7652 | Scheduled: 'ScheduledTo254',
|
7653 | StakingLedger: 'StakingLedgerTo240',
|
7654 | Weight: 'u32'
|
7655 | }
|
7656 | },
|
7657 | {
|
7658 | minmax: [1057, 1061],
|
7659 | types: {
|
7660 | ...sharedTypes$6,
|
7661 | ...addrAccountIdTypes$2,
|
7662 | CompactAssignments: 'CompactAssignmentsTo257',
|
7663 | DispatchInfo: 'DispatchInfoTo244',
|
7664 | Heartbeat: 'HeartbeatTo244',
|
7665 | OpenTip: 'OpenTipTo225',
|
7666 | RefCount: 'RefCountTo259',
|
7667 | Scheduled: 'ScheduledTo254'
|
7668 | }
|
7669 | },
|
7670 | {
|
7671 | minmax: [1062, 2012],
|
7672 | types: {
|
7673 | ...sharedTypes$6,
|
7674 | ...addrAccountIdTypes$2,
|
7675 | CompactAssignments: 'CompactAssignmentsTo257',
|
7676 | OpenTip: 'OpenTipTo225',
|
7677 | RefCount: 'RefCountTo259'
|
7678 | }
|
7679 | },
|
7680 | {
|
7681 | minmax: [2013, 2022],
|
7682 | types: {
|
7683 | ...sharedTypes$6,
|
7684 | ...addrAccountIdTypes$2,
|
7685 | CompactAssignments: 'CompactAssignmentsTo257',
|
7686 | RefCount: 'RefCountTo259'
|
7687 | }
|
7688 | },
|
7689 | {
|
7690 | minmax: [2023, 2024],
|
7691 | types: {
|
7692 | ...sharedTypes$6,
|
7693 | ...addrAccountIdTypes$2,
|
7694 | RefCount: 'RefCountTo259'
|
7695 | }
|
7696 | },
|
7697 | {
|
7698 | minmax: [2025, 2027],
|
7699 | types: {
|
7700 | ...sharedTypes$6,
|
7701 | ...addrAccountIdTypes$2
|
7702 | }
|
7703 | },
|
7704 | {
|
7705 | minmax: [2028, 2029],
|
7706 | types: {
|
7707 | ...sharedTypes$6,
|
7708 | AccountInfo: 'AccountInfoWithDualRefCount',
|
7709 | CompactAssignments: 'CompactAssignmentsWith16',
|
7710 | RawSolution: 'RawSolutionWith16'
|
7711 | }
|
7712 | },
|
7713 | {
|
7714 | minmax: [2030, 9000],
|
7715 | types: {
|
7716 | ...sharedTypes$6,
|
7717 | CompactAssignments: 'CompactAssignmentsWith16',
|
7718 | RawSolution: 'RawSolutionWith16'
|
7719 | }
|
7720 | },
|
7721 | {
|
7722 | minmax: [9010, 9099],
|
7723 | types: {
|
7724 | ...sharedTypes$6,
|
7725 | ...mapXcmTypes('V0')
|
7726 | }
|
7727 | },
|
7728 | {
|
7729 | minmax: [9100, 9105],
|
7730 | types: {
|
7731 | ...sharedTypes$6,
|
7732 | ...mapXcmTypes('V1')
|
7733 | }
|
7734 | },
|
7735 | {
|
7736 | minmax: [9106, undefined],
|
7737 | types: {
|
7738 | Weight: 'WeightV1'
|
7739 | }
|
7740 | }
|
7741 | ];
|
7742 |
|
7743 | const versioned$8 = [
|
7744 | {
|
7745 | minmax: [0, undefined],
|
7746 | types: {
|
7747 | Weight: 'WeightV2'
|
7748 | }
|
7749 | }
|
7750 | ];
|
7751 |
|
7752 | const versioned$7 = [
|
7753 | {
|
7754 | minmax: [0, undefined],
|
7755 | types: {
|
7756 | Weight: 'WeightV2'
|
7757 | }
|
7758 | }
|
7759 | ];
|
7760 |
|
7761 | const sharedTypes$5 = {
|
7762 | CompactAssignments: 'CompactAssignmentsWith16',
|
7763 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7764 | RawSolution: 'RawSolutionWith16',
|
7765 | Keys: 'SessionKeys6',
|
7766 | ProxyType: {
|
7767 | _enum: {
|
7768 | Any: 0,
|
7769 | NonTransfer: 1,
|
7770 | Governance: 2,
|
7771 | Staking: 3,
|
7772 | UnusedSudoBalances: 4,
|
7773 | IdentityJudgement: 5,
|
7774 | CancelProxy: 6,
|
7775 | Auction: 7
|
7776 | }
|
7777 | },
|
7778 | Weight: 'WeightV1'
|
7779 | };
|
7780 | const addrAccountIdTypes$1 = {
|
7781 | AccountInfo: 'AccountInfoWithRefCount',
|
7782 | Address: 'AccountId',
|
7783 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7784 | Keys: 'SessionKeys5',
|
7785 | LookupSource: 'AccountId',
|
7786 | ValidatorPrefs: 'ValidatorPrefsWithCommission'
|
7787 | };
|
7788 | const versioned$6 = [
|
7789 | {
|
7790 | minmax: [0, 12],
|
7791 | types: {
|
7792 | ...sharedTypes$5,
|
7793 | ...addrAccountIdTypes$1,
|
7794 | CompactAssignments: 'CompactAssignmentsTo257',
|
7795 | OpenTip: 'OpenTipTo225',
|
7796 | RefCount: 'RefCountTo259'
|
7797 | }
|
7798 | },
|
7799 | {
|
7800 | minmax: [13, 22],
|
7801 | types: {
|
7802 | ...sharedTypes$5,
|
7803 | ...addrAccountIdTypes$1,
|
7804 | CompactAssignments: 'CompactAssignmentsTo257',
|
7805 | RefCount: 'RefCountTo259'
|
7806 | }
|
7807 | },
|
7808 | {
|
7809 | minmax: [23, 24],
|
7810 | types: {
|
7811 | ...sharedTypes$5,
|
7812 | ...addrAccountIdTypes$1,
|
7813 | RefCount: 'RefCountTo259'
|
7814 | }
|
7815 | },
|
7816 | {
|
7817 | minmax: [25, 27],
|
7818 | types: {
|
7819 | ...sharedTypes$5,
|
7820 | ...addrAccountIdTypes$1
|
7821 | }
|
7822 | },
|
7823 | {
|
7824 | minmax: [28, 29],
|
7825 | types: {
|
7826 | ...sharedTypes$5,
|
7827 | AccountInfo: 'AccountInfoWithDualRefCount'
|
7828 | }
|
7829 | },
|
7830 | {
|
7831 | minmax: [30, 9109],
|
7832 | types: {
|
7833 | ...sharedTypes$5
|
7834 | }
|
7835 | },
|
7836 | {
|
7837 | minmax: [9110, undefined],
|
7838 | types: {
|
7839 | Weight: 'WeightV1'
|
7840 | }
|
7841 | }
|
7842 | ];
|
7843 |
|
7844 | const sharedTypes$4 = {
|
7845 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7846 | FullIdentification: '()',
|
7847 | Keys: 'SessionKeys7B',
|
7848 | Weight: 'WeightV1'
|
7849 | };
|
7850 | const versioned$5 = [
|
7851 | {
|
7852 | minmax: [0, 200],
|
7853 | types: {
|
7854 | ...sharedTypes$4,
|
7855 | AccountInfo: 'AccountInfoWithDualRefCount',
|
7856 | Address: 'AccountId',
|
7857 | LookupSource: 'AccountId'
|
7858 | }
|
7859 | },
|
7860 | {
|
7861 | minmax: [201, 214],
|
7862 | types: {
|
7863 | ...sharedTypes$4,
|
7864 | AccountInfo: 'AccountInfoWithDualRefCount'
|
7865 | }
|
7866 | },
|
7867 | {
|
7868 | minmax: [215, 228],
|
7869 | types: {
|
7870 | ...sharedTypes$4,
|
7871 | Keys: 'SessionKeys6'
|
7872 | }
|
7873 | },
|
7874 | {
|
7875 | minmax: [229, 9099],
|
7876 | types: {
|
7877 | ...sharedTypes$4,
|
7878 | ...mapXcmTypes('V0')
|
7879 | }
|
7880 | },
|
7881 | {
|
7882 | minmax: [9100, 9105],
|
7883 | types: {
|
7884 | ...sharedTypes$4,
|
7885 | ...mapXcmTypes('V1')
|
7886 | }
|
7887 | },
|
7888 | {
|
7889 | minmax: [9106, undefined],
|
7890 | types: {
|
7891 | Weight: 'WeightV1'
|
7892 | }
|
7893 | }
|
7894 | ];
|
7895 |
|
7896 | const versioned$4 = [
|
7897 | {
|
7898 | minmax: [0, undefined],
|
7899 | types: {
|
7900 | }
|
7901 | }
|
7902 | ];
|
7903 |
|
7904 | const sharedTypes$3 = {
|
7905 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7906 | TAssetBalance: 'u128',
|
7907 | ProxyType: {
|
7908 | _enum: [
|
7909 | 'Any',
|
7910 | 'NonTransfer',
|
7911 | 'CancelProxy',
|
7912 | 'Assets',
|
7913 | 'AssetOwner',
|
7914 | 'AssetManager',
|
7915 | 'Staking'
|
7916 | ]
|
7917 | },
|
7918 | Weight: 'WeightV1'
|
7919 | };
|
7920 | const versioned$3 = [
|
7921 | {
|
7922 | minmax: [0, 3],
|
7923 | types: {
|
7924 | DispatchError: 'DispatchErrorPre6First',
|
7925 | ...sharedTypes$3,
|
7926 | ...mapXcmTypes('V0')
|
7927 | }
|
7928 | },
|
7929 | {
|
7930 | minmax: [4, 5],
|
7931 | types: {
|
7932 | DispatchError: 'DispatchErrorPre6First',
|
7933 | ...sharedTypes$3,
|
7934 | ...mapXcmTypes('V1')
|
7935 | }
|
7936 | },
|
7937 | {
|
7938 | minmax: [500, 9999],
|
7939 | types: {
|
7940 | Weight: 'WeightV1',
|
7941 | TAssetConversion: 'Option<AssetId>'
|
7942 | }
|
7943 | },
|
7944 | {
|
7945 | minmax: [10000, undefined],
|
7946 | types: {
|
7947 | Weight: 'WeightV1'
|
7948 | }
|
7949 | }
|
7950 | ];
|
7951 |
|
7952 | const sharedTypes$2 = {
|
7953 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
7954 | TAssetBalance: 'u128',
|
7955 | ProxyType: {
|
7956 | _enum: [
|
7957 | 'Any',
|
7958 | 'NonTransfer',
|
7959 | 'CancelProxy',
|
7960 | 'Assets',
|
7961 | 'AssetOwner',
|
7962 | 'AssetManager',
|
7963 | 'Staking'
|
7964 | ]
|
7965 | },
|
7966 | Weight: 'WeightV1'
|
7967 | };
|
7968 | const versioned$2 = [
|
7969 | {
|
7970 | minmax: [0, 3],
|
7971 | types: {
|
7972 | DispatchError: 'DispatchErrorPre6First',
|
7973 | ...sharedTypes$2,
|
7974 | ...mapXcmTypes('V0')
|
7975 | }
|
7976 | },
|
7977 | {
|
7978 | minmax: [4, 5],
|
7979 | types: {
|
7980 | DispatchError: 'DispatchErrorPre6First',
|
7981 | ...sharedTypes$2,
|
7982 | ...mapXcmTypes('V1')
|
7983 | }
|
7984 | },
|
7985 | {
|
7986 | minmax: [500, 1001003],
|
7987 | types: {
|
7988 | Weight: 'WeightV1',
|
7989 | TAssetConversion: 'Option<AssetId>'
|
7990 | }
|
7991 | },
|
7992 | {
|
7993 | minmax: [1002000, undefined],
|
7994 | types: {
|
7995 | Weight: 'WeightV1'
|
7996 | }
|
7997 | }
|
7998 | ];
|
7999 |
|
8000 | const sharedTypes$1 = {
|
8001 | CompactAssignments: 'CompactAssignmentsWith16',
|
8002 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
8003 | RawSolution: 'RawSolutionWith16',
|
8004 | Keys: 'SessionKeys6',
|
8005 | ProxyType: {
|
8006 | _enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement', 'CancelProxy']
|
8007 | },
|
8008 | Weight: 'WeightV1'
|
8009 | };
|
8010 | const addrAccountIdTypes = {
|
8011 | AccountInfo: 'AccountInfoWithRefCount',
|
8012 | Address: 'AccountId',
|
8013 | CompactAssignments: 'CompactAssignmentsWith16',
|
8014 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
8015 | LookupSource: 'AccountId',
|
8016 | Keys: 'SessionKeys5',
|
8017 | RawSolution: 'RawSolutionWith16',
|
8018 | ValidatorPrefs: 'ValidatorPrefsWithCommission'
|
8019 | };
|
8020 | const versioned$1 = [
|
8021 | {
|
8022 | minmax: [1, 2],
|
8023 | types: {
|
8024 | ...sharedTypes$1,
|
8025 | ...addrAccountIdTypes,
|
8026 | CompactAssignments: 'CompactAssignmentsTo257',
|
8027 | DispatchInfo: 'DispatchInfoTo244',
|
8028 | Heartbeat: 'HeartbeatTo244',
|
8029 | Multiplier: 'Fixed64',
|
8030 | OpenTip: 'OpenTipTo225',
|
8031 | RefCount: 'RefCountTo259',
|
8032 | Weight: 'u32'
|
8033 | }
|
8034 | },
|
8035 | {
|
8036 | minmax: [3, 22],
|
8037 | types: {
|
8038 | ...sharedTypes$1,
|
8039 | ...addrAccountIdTypes,
|
8040 | CompactAssignments: 'CompactAssignmentsTo257',
|
8041 | DispatchInfo: 'DispatchInfoTo244',
|
8042 | Heartbeat: 'HeartbeatTo244',
|
8043 | OpenTip: 'OpenTipTo225',
|
8044 | RefCount: 'RefCountTo259'
|
8045 | }
|
8046 | },
|
8047 | {
|
8048 | minmax: [23, 42],
|
8049 | types: {
|
8050 | ...sharedTypes$1,
|
8051 | ...addrAccountIdTypes,
|
8052 | CompactAssignments: 'CompactAssignmentsTo257',
|
8053 | DispatchInfo: 'DispatchInfoTo244',
|
8054 | Heartbeat: 'HeartbeatTo244',
|
8055 | RefCount: 'RefCountTo259'
|
8056 | }
|
8057 | },
|
8058 | {
|
8059 | minmax: [43, 44],
|
8060 | types: {
|
8061 | ...sharedTypes$1,
|
8062 | ...addrAccountIdTypes,
|
8063 | DispatchInfo: 'DispatchInfoTo244',
|
8064 | Heartbeat: 'HeartbeatTo244',
|
8065 | RefCount: 'RefCountTo259'
|
8066 | }
|
8067 | },
|
8068 | {
|
8069 | minmax: [45, 47],
|
8070 | types: {
|
8071 | ...sharedTypes$1,
|
8072 | ...addrAccountIdTypes
|
8073 | }
|
8074 | },
|
8075 | {
|
8076 | minmax: [48, 49],
|
8077 | types: {
|
8078 | ...sharedTypes$1,
|
8079 | AccountInfo: 'AccountInfoWithDualRefCount'
|
8080 | }
|
8081 | },
|
8082 | {
|
8083 | minmax: [50, 9099],
|
8084 | types: {
|
8085 | ...sharedTypes$1,
|
8086 | ...mapXcmTypes('V0')
|
8087 | }
|
8088 | },
|
8089 | {
|
8090 | minmax: [9100, 9105],
|
8091 | types: {
|
8092 | ...sharedTypes$1,
|
8093 | ...mapXcmTypes('V1')
|
8094 | }
|
8095 | },
|
8096 | {
|
8097 | minmax: [9106, undefined],
|
8098 | types: {
|
8099 | Weight: 'WeightV1'
|
8100 | }
|
8101 | }
|
8102 | ];
|
8103 |
|
8104 | const sharedTypes = {
|
8105 | DispatchErrorModule: 'DispatchErrorModuleU8',
|
8106 | TAssetBalance: 'u128',
|
8107 | ProxyType: {
|
8108 | _enum: [
|
8109 | 'Any',
|
8110 | 'NonTransfer',
|
8111 | 'CancelProxy',
|
8112 | 'Assets',
|
8113 | 'AssetOwner',
|
8114 | 'AssetManager',
|
8115 | 'Staking'
|
8116 | ]
|
8117 | },
|
8118 | Weight: 'WeightV1'
|
8119 | };
|
8120 | const versioned = [
|
8121 | {
|
8122 | minmax: [0, 3],
|
8123 | types: {
|
8124 | DispatchError: 'DispatchErrorPre6First',
|
8125 | ...sharedTypes,
|
8126 | ...mapXcmTypes('V0')
|
8127 | }
|
8128 | },
|
8129 | {
|
8130 | minmax: [4, 5],
|
8131 | types: {
|
8132 | DispatchError: 'DispatchErrorPre6First',
|
8133 | ...sharedTypes,
|
8134 | ...mapXcmTypes('V1')
|
8135 | }
|
8136 | },
|
8137 | {
|
8138 | minmax: [500, 9434],
|
8139 | types: {
|
8140 | Weight: 'WeightV1',
|
8141 | TAssetConversion: 'Option<AssetId>'
|
8142 | }
|
8143 | },
|
8144 | {
|
8145 | minmax: [9435, undefined],
|
8146 | types: {
|
8147 | Weight: 'WeightV1'
|
8148 | }
|
8149 | }
|
8150 | ];
|
8151 |
|
8152 | const typesSpec = {
|
8153 | 'centrifuge-chain': versioned$a,
|
8154 | kusama: versioned$9,
|
8155 | node: versioned$8,
|
8156 | 'node-template': versioned$7,
|
8157 | polkadot: versioned$6,
|
8158 | rococo: versioned$5,
|
8159 | shell: versioned$4,
|
8160 | statemine: versioned$3,
|
8161 | statemint: versioned$2,
|
8162 | westend: versioned$1,
|
8163 | westmint: versioned
|
8164 | };
|
8165 |
|
8166 | const upgrades$3 = [
|
8167 | [
|
8168 | 0,
|
8169 | 1020,
|
8170 | [
|
8171 | [
|
8172 | "0xdf6acb689907609b",
|
8173 | 2
|
8174 | ],
|
8175 | [
|
8176 | "0x37e397fc7c91f5e4",
|
8177 | 1
|
8178 | ],
|
8179 | [
|
8180 | "0x40fe3ad401f8959a",
|
8181 | 4
|
8182 | ],
|
8183 | [
|
8184 | "0xd2bc9897eed08f15",
|
8185 | 1
|
8186 | ],
|
8187 | [
|
8188 | "0xf78b278be53f454c",
|
8189 | 1
|
8190 | ],
|
8191 | [
|
8192 | "0xaf2c0297a23e6d3d",
|
8193 | 1
|
8194 | ],
|
8195 | [
|
8196 | "0xed99c5acb25eedf5",
|
8197 | 2
|
8198 | ],
|
8199 | [
|
8200 | "0xcbca25e39f142387",
|
8201 | 1
|
8202 | ],
|
8203 | [
|
8204 | "0x687ad44ad37f03c2",
|
8205 | 1
|
8206 | ],
|
8207 | [
|
8208 | "0xab3c0572291feb8b",
|
8209 | 1
|
8210 | ],
|
8211 | [
|
8212 | "0xbc9d89904f5b923f",
|
8213 | 1
|
8214 | ],
|
8215 | [
|
8216 | "0x37c8bb1350a9a2a8",
|
8217 | 1
|
8218 | ]
|
8219 | ]
|
8220 | ],
|
8221 | [
|
8222 | 26669,
|
8223 | 1021,
|
8224 | [
|
8225 | [
|
8226 | "0xdf6acb689907609b",
|
8227 | 2
|
8228 | ],
|
8229 | [
|
8230 | "0x37e397fc7c91f5e4",
|
8231 | 1
|
8232 | ],
|
8233 | [
|
8234 | "0x40fe3ad401f8959a",
|
8235 | 4
|
8236 | ],
|
8237 | [
|
8238 | "0xd2bc9897eed08f15",
|
8239 | 1
|
8240 | ],
|
8241 | [
|
8242 | "0xf78b278be53f454c",
|
8243 | 1
|
8244 | ],
|
8245 | [
|
8246 | "0xaf2c0297a23e6d3d",
|
8247 | 1
|
8248 | ],
|
8249 | [
|
8250 | "0xed99c5acb25eedf5",
|
8251 | 2
|
8252 | ],
|
8253 | [
|
8254 | "0xcbca25e39f142387",
|
8255 | 1
|
8256 | ],
|
8257 | [
|
8258 | "0x687ad44ad37f03c2",
|
8259 | 1
|
8260 | ],
|
8261 | [
|
8262 | "0xab3c0572291feb8b",
|
8263 | 1
|
8264 | ],
|
8265 | [
|
8266 | "0xbc9d89904f5b923f",
|
8267 | 1
|
8268 | ],
|
8269 | [
|
8270 | "0x37c8bb1350a9a2a8",
|
8271 | 1
|
8272 | ]
|
8273 | ]
|
8274 | ],
|
8275 | [
|
8276 | 38245,
|
8277 | 1022,
|
8278 | [
|
8279 | [
|
8280 | "0xdf6acb689907609b",
|
8281 | 2
|
8282 | ],
|
8283 | [
|
8284 | "0x37e397fc7c91f5e4",
|
8285 | 1
|
8286 | ],
|
8287 | [
|
8288 | "0x40fe3ad401f8959a",
|
8289 | 4
|
8290 | ],
|
8291 | [
|
8292 | "0xd2bc9897eed08f15",
|
8293 | 1
|
8294 | ],
|
8295 | [
|
8296 | "0xf78b278be53f454c",
|
8297 | 1
|
8298 | ],
|
8299 | [
|
8300 | "0xaf2c0297a23e6d3d",
|
8301 | 1
|
8302 | ],
|
8303 | [
|
8304 | "0xed99c5acb25eedf5",
|
8305 | 2
|
8306 | ],
|
8307 | [
|
8308 | "0xcbca25e39f142387",
|
8309 | 1
|
8310 | ],
|
8311 | [
|
8312 | "0x687ad44ad37f03c2",
|
8313 | 1
|
8314 | ],
|
8315 | [
|
8316 | "0xab3c0572291feb8b",
|
8317 | 1
|
8318 | ],
|
8319 | [
|
8320 | "0xbc9d89904f5b923f",
|
8321 | 1
|
8322 | ],
|
8323 | [
|
8324 | "0x37c8bb1350a9a2a8",
|
8325 | 1
|
8326 | ]
|
8327 | ]
|
8328 | ],
|
8329 | [
|
8330 | 54248,
|
8331 | 1023,
|
8332 | [
|
8333 | [
|
8334 | "0xdf6acb689907609b",
|
8335 | 2
|
8336 | ],
|
8337 | [
|
8338 | "0x37e397fc7c91f5e4",
|
8339 | 1
|
8340 | ],
|
8341 | [
|
8342 | "0x40fe3ad401f8959a",
|
8343 | 4
|
8344 | ],
|
8345 | [
|
8346 | "0xd2bc9897eed08f15",
|
8347 | 1
|
8348 | ],
|
8349 | [
|
8350 | "0xf78b278be53f454c",
|
8351 | 1
|
8352 | ],
|
8353 | [
|
8354 | "0xaf2c0297a23e6d3d",
|
8355 | 1
|
8356 | ],
|
8357 | [
|
8358 | "0xed99c5acb25eedf5",
|
8359 | 2
|
8360 | ],
|
8361 | [
|
8362 | "0xcbca25e39f142387",
|
8363 | 1
|
8364 | ],
|
8365 | [
|
8366 | "0x687ad44ad37f03c2",
|
8367 | 1
|
8368 | ],
|
8369 | [
|
8370 | "0xab3c0572291feb8b",
|
8371 | 1
|
8372 | ],
|
8373 | [
|
8374 | "0xbc9d89904f5b923f",
|
8375 | 1
|
8376 | ],
|
8377 | [
|
8378 | "0x37c8bb1350a9a2a8",
|
8379 | 1
|
8380 | ]
|
8381 | ]
|
8382 | ],
|
8383 | [
|
8384 | 59659,
|
8385 | 1024,
|
8386 | [
|
8387 | [
|
8388 | "0xdf6acb689907609b",
|
8389 | 2
|
8390 | ],
|
8391 | [
|
8392 | "0x37e397fc7c91f5e4",
|
8393 | 1
|
8394 | ],
|
8395 | [
|
8396 | "0x40fe3ad401f8959a",
|
8397 | 4
|
8398 | ],
|
8399 | [
|
8400 | "0xd2bc9897eed08f15",
|
8401 | 1
|
8402 | ],
|
8403 | [
|
8404 | "0xf78b278be53f454c",
|
8405 | 1
|
8406 | ],
|
8407 | [
|
8408 | "0xaf2c0297a23e6d3d",
|
8409 | 1
|
8410 | ],
|
8411 | [
|
8412 | "0xed99c5acb25eedf5",
|
8413 | 2
|
8414 | ],
|
8415 | [
|
8416 | "0xcbca25e39f142387",
|
8417 | 1
|
8418 | ],
|
8419 | [
|
8420 | "0x687ad44ad37f03c2",
|
8421 | 1
|
8422 | ],
|
8423 | [
|
8424 | "0xab3c0572291feb8b",
|
8425 | 1
|
8426 | ],
|
8427 | [
|
8428 | "0xbc9d89904f5b923f",
|
8429 | 1
|
8430 | ],
|
8431 | [
|
8432 | "0x37c8bb1350a9a2a8",
|
8433 | 1
|
8434 | ]
|
8435 | ]
|
8436 | ],
|
8437 | [
|
8438 | 67651,
|
8439 | 1025,
|
8440 | [
|
8441 | [
|
8442 | "0xdf6acb689907609b",
|
8443 | 2
|
8444 | ],
|
8445 | [
|
8446 | "0x37e397fc7c91f5e4",
|
8447 | 1
|
8448 | ],
|
8449 | [
|
8450 | "0x40fe3ad401f8959a",
|
8451 | 4
|
8452 | ],
|
8453 | [
|
8454 | "0xd2bc9897eed08f15",
|
8455 | 1
|
8456 | ],
|
8457 | [
|
8458 | "0xf78b278be53f454c",
|
8459 | 1
|
8460 | ],
|
8461 | [
|
8462 | "0xaf2c0297a23e6d3d",
|
8463 | 1
|
8464 | ],
|
8465 | [
|
8466 | "0xed99c5acb25eedf5",
|
8467 | 2
|
8468 | ],
|
8469 | [
|
8470 | "0xcbca25e39f142387",
|
8471 | 1
|
8472 | ],
|
8473 | [
|
8474 | "0x687ad44ad37f03c2",
|
8475 | 1
|
8476 | ],
|
8477 | [
|
8478 | "0xab3c0572291feb8b",
|
8479 | 1
|
8480 | ],
|
8481 | [
|
8482 | "0xbc9d89904f5b923f",
|
8483 | 1
|
8484 | ],
|
8485 | [
|
8486 | "0x37c8bb1350a9a2a8",
|
8487 | 1
|
8488 | ]
|
8489 | ]
|
8490 | ],
|
8491 | [
|
8492 | 82191,
|
8493 | 1027,
|
8494 | [
|
8495 | [
|
8496 | "0xdf6acb689907609b",
|
8497 | 2
|
8498 | ],
|
8499 | [
|
8500 | "0x37e397fc7c91f5e4",
|
8501 | 1
|
8502 | ],
|
8503 | [
|
8504 | "0x40fe3ad401f8959a",
|
8505 | 4
|
8506 | ],
|
8507 | [
|
8508 | "0xd2bc9897eed08f15",
|
8509 | 1
|
8510 | ],
|
8511 | [
|
8512 | "0xf78b278be53f454c",
|
8513 | 1
|
8514 | ],
|
8515 | [
|
8516 | "0xaf2c0297a23e6d3d",
|
8517 | 2
|
8518 | ],
|
8519 | [
|
8520 | "0xed99c5acb25eedf5",
|
8521 | 2
|
8522 | ],
|
8523 | [
|
8524 | "0xcbca25e39f142387",
|
8525 | 1
|
8526 | ],
|
8527 | [
|
8528 | "0x687ad44ad37f03c2",
|
8529 | 1
|
8530 | ],
|
8531 | [
|
8532 | "0xab3c0572291feb8b",
|
8533 | 1
|
8534 | ],
|
8535 | [
|
8536 | "0xbc9d89904f5b923f",
|
8537 | 1
|
8538 | ],
|
8539 | [
|
8540 | "0x37c8bb1350a9a2a8",
|
8541 | 1
|
8542 | ]
|
8543 | ]
|
8544 | ],
|
8545 | [
|
8546 | 83238,
|
8547 | 1028,
|
8548 | [
|
8549 | [
|
8550 | "0xdf6acb689907609b",
|
8551 | 2
|
8552 | ],
|
8553 | [
|
8554 | "0x37e397fc7c91f5e4",
|
8555 | 1
|
8556 | ],
|
8557 | [
|
8558 | "0x40fe3ad401f8959a",
|
8559 | 4
|
8560 | ],
|
8561 | [
|
8562 | "0xd2bc9897eed08f15",
|
8563 | 1
|
8564 | ],
|
8565 | [
|
8566 | "0xf78b278be53f454c",
|
8567 | 1
|
8568 | ],
|
8569 | [
|
8570 | "0xaf2c0297a23e6d3d",
|
8571 | 2
|
8572 | ],
|
8573 | [
|
8574 | "0xed99c5acb25eedf5",
|
8575 | 2
|
8576 | ],
|
8577 | [
|
8578 | "0xcbca25e39f142387",
|
8579 | 1
|
8580 | ],
|
8581 | [
|
8582 | "0x687ad44ad37f03c2",
|
8583 | 1
|
8584 | ],
|
8585 | [
|
8586 | "0xab3c0572291feb8b",
|
8587 | 1
|
8588 | ],
|
8589 | [
|
8590 | "0xbc9d89904f5b923f",
|
8591 | 1
|
8592 | ],
|
8593 | [
|
8594 | "0x37c8bb1350a9a2a8",
|
8595 | 1
|
8596 | ]
|
8597 | ]
|
8598 | ],
|
8599 | [
|
8600 | 101503,
|
8601 | 1029,
|
8602 | [
|
8603 | [
|
8604 | "0xdf6acb689907609b",
|
8605 | 2
|
8606 | ],
|
8607 | [
|
8608 | "0x37e397fc7c91f5e4",
|
8609 | 1
|
8610 | ],
|
8611 | [
|
8612 | "0x40fe3ad401f8959a",
|
8613 | 4
|
8614 | ],
|
8615 | [
|
8616 | "0xd2bc9897eed08f15",
|
8617 | 1
|
8618 | ],
|
8619 | [
|
8620 | "0xf78b278be53f454c",
|
8621 | 1
|
8622 | ],
|
8623 | [
|
8624 | "0xaf2c0297a23e6d3d",
|
8625 | 2
|
8626 | ],
|
8627 | [
|
8628 | "0xed99c5acb25eedf5",
|
8629 | 2
|
8630 | ],
|
8631 | [
|
8632 | "0xcbca25e39f142387",
|
8633 | 1
|
8634 | ],
|
8635 | [
|
8636 | "0x687ad44ad37f03c2",
|
8637 | 1
|
8638 | ],
|
8639 | [
|
8640 | "0xab3c0572291feb8b",
|
8641 | 1
|
8642 | ],
|
8643 | [
|
8644 | "0xbc9d89904f5b923f",
|
8645 | 1
|
8646 | ],
|
8647 | [
|
8648 | "0x37c8bb1350a9a2a8",
|
8649 | 1
|
8650 | ]
|
8651 | ]
|
8652 | ],
|
8653 | [
|
8654 | 203466,
|
8655 | 1030,
|
8656 | [
|
8657 | [
|
8658 | "0xdf6acb689907609b",
|
8659 | 2
|
8660 | ],
|
8661 | [
|
8662 | "0x37e397fc7c91f5e4",
|
8663 | 1
|
8664 | ],
|
8665 | [
|
8666 | "0x40fe3ad401f8959a",
|
8667 | 4
|
8668 | ],
|
8669 | [
|
8670 | "0xd2bc9897eed08f15",
|
8671 | 1
|
8672 | ],
|
8673 | [
|
8674 | "0xf78b278be53f454c",
|
8675 | 1
|
8676 | ],
|
8677 | [
|
8678 | "0xaf2c0297a23e6d3d",
|
8679 | 2
|
8680 | ],
|
8681 | [
|
8682 | "0xed99c5acb25eedf5",
|
8683 | 2
|
8684 | ],
|
8685 | [
|
8686 | "0xcbca25e39f142387",
|
8687 | 1
|
8688 | ],
|
8689 | [
|
8690 | "0x687ad44ad37f03c2",
|
8691 | 1
|
8692 | ],
|
8693 | [
|
8694 | "0xab3c0572291feb8b",
|
8695 | 1
|
8696 | ],
|
8697 | [
|
8698 | "0xbc9d89904f5b923f",
|
8699 | 1
|
8700 | ],
|
8701 | [
|
8702 | "0x37c8bb1350a9a2a8",
|
8703 | 1
|
8704 | ]
|
8705 | ]
|
8706 | ],
|
8707 | [
|
8708 | 295787,
|
8709 | 1031,
|
8710 | [
|
8711 | [
|
8712 | "0xdf6acb689907609b",
|
8713 | 2
|
8714 | ],
|
8715 | [
|
8716 | "0x37e397fc7c91f5e4",
|
8717 | 1
|
8718 | ],
|
8719 | [
|
8720 | "0x40fe3ad401f8959a",
|
8721 | 4
|
8722 | ],
|
8723 | [
|
8724 | "0xd2bc9897eed08f15",
|
8725 | 1
|
8726 | ],
|
8727 | [
|
8728 | "0xf78b278be53f454c",
|
8729 | 1
|
8730 | ],
|
8731 | [
|
8732 | "0xaf2c0297a23e6d3d",
|
8733 | 2
|
8734 | ],
|
8735 | [
|
8736 | "0xed99c5acb25eedf5",
|
8737 | 2
|
8738 | ],
|
8739 | [
|
8740 | "0xcbca25e39f142387",
|
8741 | 1
|
8742 | ],
|
8743 | [
|
8744 | "0x687ad44ad37f03c2",
|
8745 | 1
|
8746 | ],
|
8747 | [
|
8748 | "0xab3c0572291feb8b",
|
8749 | 1
|
8750 | ],
|
8751 | [
|
8752 | "0xbc9d89904f5b923f",
|
8753 | 1
|
8754 | ],
|
8755 | [
|
8756 | "0x37c8bb1350a9a2a8",
|
8757 | 1
|
8758 | ]
|
8759 | ]
|
8760 | ],
|
8761 | [
|
8762 | 461692,
|
8763 | 1032,
|
8764 | [
|
8765 | [
|
8766 | "0xdf6acb689907609b",
|
8767 | 2
|
8768 | ],
|
8769 | [
|
8770 | "0x37e397fc7c91f5e4",
|
8771 | 1
|
8772 | ],
|
8773 | [
|
8774 | "0x40fe3ad401f8959a",
|
8775 | 4
|
8776 | ],
|
8777 | [
|
8778 | "0xd2bc9897eed08f15",
|
8779 | 1
|
8780 | ],
|
8781 | [
|
8782 | "0xf78b278be53f454c",
|
8783 | 1
|
8784 | ],
|
8785 | [
|
8786 | "0xaf2c0297a23e6d3d",
|
8787 | 2
|
8788 | ],
|
8789 | [
|
8790 | "0xed99c5acb25eedf5",
|
8791 | 2
|
8792 | ],
|
8793 | [
|
8794 | "0xcbca25e39f142387",
|
8795 | 1
|
8796 | ],
|
8797 | [
|
8798 | "0x687ad44ad37f03c2",
|
8799 | 1
|
8800 | ],
|
8801 | [
|
8802 | "0xab3c0572291feb8b",
|
8803 | 1
|
8804 | ],
|
8805 | [
|
8806 | "0xbc9d89904f5b923f",
|
8807 | 1
|
8808 | ],
|
8809 | [
|
8810 | "0x37c8bb1350a9a2a8",
|
8811 | 1
|
8812 | ]
|
8813 | ]
|
8814 | ],
|
8815 | [
|
8816 | 504329,
|
8817 | 1033,
|
8818 | [
|
8819 | [
|
8820 | "0xdf6acb689907609b",
|
8821 | 2
|
8822 | ],
|
8823 | [
|
8824 | "0x37e397fc7c91f5e4",
|
8825 | 1
|
8826 | ],
|
8827 | [
|
8828 | "0x40fe3ad401f8959a",
|
8829 | 4
|
8830 | ],
|
8831 | [
|
8832 | "0xd2bc9897eed08f15",
|
8833 | 1
|
8834 | ],
|
8835 | [
|
8836 | "0xf78b278be53f454c",
|
8837 | 1
|
8838 | ],
|
8839 | [
|
8840 | "0xaf2c0297a23e6d3d",
|
8841 | 2
|
8842 | ],
|
8843 | [
|
8844 | "0xed99c5acb25eedf5",
|
8845 | 2
|
8846 | ],
|
8847 | [
|
8848 | "0xcbca25e39f142387",
|
8849 | 1
|
8850 | ],
|
8851 | [
|
8852 | "0x687ad44ad37f03c2",
|
8853 | 1
|
8854 | ],
|
8855 | [
|
8856 | "0xab3c0572291feb8b",
|
8857 | 1
|
8858 | ],
|
8859 | [
|
8860 | "0xbc9d89904f5b923f",
|
8861 | 1
|
8862 | ],
|
8863 | [
|
8864 | "0x37c8bb1350a9a2a8",
|
8865 | 1
|
8866 | ]
|
8867 | ]
|
8868 | ],
|
8869 | [
|
8870 | 569327,
|
8871 | 1038,
|
8872 | [
|
8873 | [
|
8874 | "0xdf6acb689907609b",
|
8875 | 2
|
8876 | ],
|
8877 | [
|
8878 | "0x37e397fc7c91f5e4",
|
8879 | 1
|
8880 | ],
|
8881 | [
|
8882 | "0x40fe3ad401f8959a",
|
8883 | 4
|
8884 | ],
|
8885 | [
|
8886 | "0xd2bc9897eed08f15",
|
8887 | 1
|
8888 | ],
|
8889 | [
|
8890 | "0xf78b278be53f454c",
|
8891 | 1
|
8892 | ],
|
8893 | [
|
8894 | "0xaf2c0297a23e6d3d",
|
8895 | 2
|
8896 | ],
|
8897 | [
|
8898 | "0xed99c5acb25eedf5",
|
8899 | 2
|
8900 | ],
|
8901 | [
|
8902 | "0xcbca25e39f142387",
|
8903 | 1
|
8904 | ],
|
8905 | [
|
8906 | "0x687ad44ad37f03c2",
|
8907 | 1
|
8908 | ],
|
8909 | [
|
8910 | "0xab3c0572291feb8b",
|
8911 | 1
|
8912 | ],
|
8913 | [
|
8914 | "0xbc9d89904f5b923f",
|
8915 | 1
|
8916 | ],
|
8917 | [
|
8918 | "0x37c8bb1350a9a2a8",
|
8919 | 1
|
8920 | ]
|
8921 | ]
|
8922 | ],
|
8923 | [
|
8924 | 587687,
|
8925 | 1039,
|
8926 | [
|
8927 | [
|
8928 | "0xdf6acb689907609b",
|
8929 | 2
|
8930 | ],
|
8931 | [
|
8932 | "0x37e397fc7c91f5e4",
|
8933 | 1
|
8934 | ],
|
8935 | [
|
8936 | "0x40fe3ad401f8959a",
|
8937 | 4
|
8938 | ],
|
8939 | [
|
8940 | "0xd2bc9897eed08f15",
|
8941 | 1
|
8942 | ],
|
8943 | [
|
8944 | "0xf78b278be53f454c",
|
8945 | 2
|
8946 | ],
|
8947 | [
|
8948 | "0xaf2c0297a23e6d3d",
|
8949 | 2
|
8950 | ],
|
8951 | [
|
8952 | "0xed99c5acb25eedf5",
|
8953 | 2
|
8954 | ],
|
8955 | [
|
8956 | "0xcbca25e39f142387",
|
8957 | 1
|
8958 | ],
|
8959 | [
|
8960 | "0x687ad44ad37f03c2",
|
8961 | 1
|
8962 | ],
|
8963 | [
|
8964 | "0xab3c0572291feb8b",
|
8965 | 1
|
8966 | ],
|
8967 | [
|
8968 | "0xbc9d89904f5b923f",
|
8969 | 1
|
8970 | ],
|
8971 | [
|
8972 | "0x37c8bb1350a9a2a8",
|
8973 | 1
|
8974 | ]
|
8975 | ]
|
8976 | ],
|
8977 | [
|
8978 | 653183,
|
8979 | 1040,
|
8980 | [
|
8981 | [
|
8982 | "0xdf6acb689907609b",
|
8983 | 2
|
8984 | ],
|
8985 | [
|
8986 | "0x37e397fc7c91f5e4",
|
8987 | 1
|
8988 | ],
|
8989 | [
|
8990 | "0x40fe3ad401f8959a",
|
8991 | 4
|
8992 | ],
|
8993 | [
|
8994 | "0xd2bc9897eed08f15",
|
8995 | 1
|
8996 | ],
|
8997 | [
|
8998 | "0xf78b278be53f454c",
|
8999 | 2
|
9000 | ],
|
9001 | [
|
9002 | "0xaf2c0297a23e6d3d",
|
9003 | 2
|
9004 | ],
|
9005 | [
|
9006 | "0xed99c5acb25eedf5",
|
9007 | 2
|
9008 | ],
|
9009 | [
|
9010 | "0xcbca25e39f142387",
|
9011 | 1
|
9012 | ],
|
9013 | [
|
9014 | "0x687ad44ad37f03c2",
|
9015 | 1
|
9016 | ],
|
9017 | [
|
9018 | "0xab3c0572291feb8b",
|
9019 | 1
|
9020 | ],
|
9021 | [
|
9022 | "0xbc9d89904f5b923f",
|
9023 | 1
|
9024 | ],
|
9025 | [
|
9026 | "0x37c8bb1350a9a2a8",
|
9027 | 1
|
9028 | ]
|
9029 | ]
|
9030 | ],
|
9031 | [
|
9032 | 693488,
|
9033 | 1042,
|
9034 | [
|
9035 | [
|
9036 | "0xdf6acb689907609b",
|
9037 | 2
|
9038 | ],
|
9039 | [
|
9040 | "0x37e397fc7c91f5e4",
|
9041 | 1
|
9042 | ],
|
9043 | [
|
9044 | "0x40fe3ad401f8959a",
|
9045 | 4
|
9046 | ],
|
9047 | [
|
9048 | "0xd2bc9897eed08f15",
|
9049 | 1
|
9050 | ],
|
9051 | [
|
9052 | "0xf78b278be53f454c",
|
9053 | 2
|
9054 | ],
|
9055 | [
|
9056 | "0xaf2c0297a23e6d3d",
|
9057 | 2
|
9058 | ],
|
9059 | [
|
9060 | "0xed99c5acb25eedf5",
|
9061 | 2
|
9062 | ],
|
9063 | [
|
9064 | "0xcbca25e39f142387",
|
9065 | 1
|
9066 | ],
|
9067 | [
|
9068 | "0x687ad44ad37f03c2",
|
9069 | 1
|
9070 | ],
|
9071 | [
|
9072 | "0xab3c0572291feb8b",
|
9073 | 1
|
9074 | ],
|
9075 | [
|
9076 | "0xbc9d89904f5b923f",
|
9077 | 1
|
9078 | ],
|
9079 | [
|
9080 | "0x37c8bb1350a9a2a8",
|
9081 | 1
|
9082 | ]
|
9083 | ]
|
9084 | ],
|
9085 | [
|
9086 | 901442,
|
9087 | 1045,
|
9088 | [
|
9089 | [
|
9090 | "0xdf6acb689907609b",
|
9091 | 2
|
9092 | ],
|
9093 | [
|
9094 | "0x37e397fc7c91f5e4",
|
9095 | 1
|
9096 | ],
|
9097 | [
|
9098 | "0x40fe3ad401f8959a",
|
9099 | 4
|
9100 | ],
|
9101 | [
|
9102 | "0xd2bc9897eed08f15",
|
9103 | 1
|
9104 | ],
|
9105 | [
|
9106 | "0xf78b278be53f454c",
|
9107 | 2
|
9108 | ],
|
9109 | [
|
9110 | "0xaf2c0297a23e6d3d",
|
9111 | 2
|
9112 | ],
|
9113 | [
|
9114 | "0xed99c5acb25eedf5",
|
9115 | 2
|
9116 | ],
|
9117 | [
|
9118 | "0xcbca25e39f142387",
|
9119 | 1
|
9120 | ],
|
9121 | [
|
9122 | "0x687ad44ad37f03c2",
|
9123 | 1
|
9124 | ],
|
9125 | [
|
9126 | "0xab3c0572291feb8b",
|
9127 | 1
|
9128 | ],
|
9129 | [
|
9130 | "0xbc9d89904f5b923f",
|
9131 | 1
|
9132 | ],
|
9133 | [
|
9134 | "0x37c8bb1350a9a2a8",
|
9135 | 1
|
9136 | ]
|
9137 | ]
|
9138 | ],
|
9139 | [
|
9140 | 1375086,
|
9141 | 1050,
|
9142 | [
|
9143 | [
|
9144 | "0xdf6acb689907609b",
|
9145 | 2
|
9146 | ],
|
9147 | [
|
9148 | "0x37e397fc7c91f5e4",
|
9149 | 1
|
9150 | ],
|
9151 | [
|
9152 | "0x40fe3ad401f8959a",
|
9153 | 4
|
9154 | ],
|
9155 | [
|
9156 | "0xd2bc9897eed08f15",
|
9157 | 1
|
9158 | ],
|
9159 | [
|
9160 | "0xf78b278be53f454c",
|
9161 | 2
|
9162 | ],
|
9163 | [
|
9164 | "0xaf2c0297a23e6d3d",
|
9165 | 2
|
9166 | ],
|
9167 | [
|
9168 | "0xed99c5acb25eedf5",
|
9169 | 2
|
9170 | ],
|
9171 | [
|
9172 | "0xcbca25e39f142387",
|
9173 | 1
|
9174 | ],
|
9175 | [
|
9176 | "0x687ad44ad37f03c2",
|
9177 | 1
|
9178 | ],
|
9179 | [
|
9180 | "0xab3c0572291feb8b",
|
9181 | 1
|
9182 | ],
|
9183 | [
|
9184 | "0xbc9d89904f5b923f",
|
9185 | 1
|
9186 | ],
|
9187 | [
|
9188 | "0x37c8bb1350a9a2a8",
|
9189 | 1
|
9190 | ]
|
9191 | ]
|
9192 | ],
|
9193 | [
|
9194 | 1445458,
|
9195 | 1051,
|
9196 | [
|
9197 | [
|
9198 | "0xdf6acb689907609b",
|
9199 | 2
|
9200 | ],
|
9201 | [
|
9202 | "0x37e397fc7c91f5e4",
|
9203 | 1
|
9204 | ],
|
9205 | [
|
9206 | "0x40fe3ad401f8959a",
|
9207 | 4
|
9208 | ],
|
9209 | [
|
9210 | "0xd2bc9897eed08f15",
|
9211 | 1
|
9212 | ],
|
9213 | [
|
9214 | "0xf78b278be53f454c",
|
9215 | 2
|
9216 | ],
|
9217 | [
|
9218 | "0xaf2c0297a23e6d3d",
|
9219 | 2
|
9220 | ],
|
9221 | [
|
9222 | "0xed99c5acb25eedf5",
|
9223 | 2
|
9224 | ],
|
9225 | [
|
9226 | "0xcbca25e39f142387",
|
9227 | 1
|
9228 | ],
|
9229 | [
|
9230 | "0x687ad44ad37f03c2",
|
9231 | 1
|
9232 | ],
|
9233 | [
|
9234 | "0xab3c0572291feb8b",
|
9235 | 1
|
9236 | ],
|
9237 | [
|
9238 | "0xbc9d89904f5b923f",
|
9239 | 1
|
9240 | ],
|
9241 | [
|
9242 | "0x37c8bb1350a9a2a8",
|
9243 | 1
|
9244 | ]
|
9245 | ]
|
9246 | ],
|
9247 | [
|
9248 | 1472960,
|
9249 | 1052,
|
9250 | [
|
9251 | [
|
9252 | "0xdf6acb689907609b",
|
9253 | 2
|
9254 | ],
|
9255 | [
|
9256 | "0x37e397fc7c91f5e4",
|
9257 | 1
|
9258 | ],
|
9259 | [
|
9260 | "0x40fe3ad401f8959a",
|
9261 | 4
|
9262 | ],
|
9263 | [
|
9264 | "0xd2bc9897eed08f15",
|
9265 | 1
|
9266 | ],
|
9267 | [
|
9268 | "0xf78b278be53f454c",
|
9269 | 2
|
9270 | ],
|
9271 | [
|
9272 | "0xaf2c0297a23e6d3d",
|
9273 | 2
|
9274 | ],
|
9275 | [
|
9276 | "0xed99c5acb25eedf5",
|
9277 | 2
|
9278 | ],
|
9279 | [
|
9280 | "0xcbca25e39f142387",
|
9281 | 1
|
9282 | ],
|
9283 | [
|
9284 | "0x687ad44ad37f03c2",
|
9285 | 1
|
9286 | ],
|
9287 | [
|
9288 | "0xab3c0572291feb8b",
|
9289 | 1
|
9290 | ],
|
9291 | [
|
9292 | "0xbc9d89904f5b923f",
|
9293 | 1
|
9294 | ],
|
9295 | [
|
9296 | "0x37c8bb1350a9a2a8",
|
9297 | 1
|
9298 | ]
|
9299 | ]
|
9300 | ],
|
9301 | [
|
9302 | 1475648,
|
9303 | 1053,
|
9304 | [
|
9305 | [
|
9306 | "0xdf6acb689907609b",
|
9307 | 2
|
9308 | ],
|
9309 | [
|
9310 | "0x37e397fc7c91f5e4",
|
9311 | 1
|
9312 | ],
|
9313 | [
|
9314 | "0x40fe3ad401f8959a",
|
9315 | 4
|
9316 | ],
|
9317 | [
|
9318 | "0xd2bc9897eed08f15",
|
9319 | 1
|
9320 | ],
|
9321 | [
|
9322 | "0xf78b278be53f454c",
|
9323 | 2
|
9324 | ],
|
9325 | [
|
9326 | "0xaf2c0297a23e6d3d",
|
9327 | 2
|
9328 | ],
|
9329 | [
|
9330 | "0xed99c5acb25eedf5",
|
9331 | 2
|
9332 | ],
|
9333 | [
|
9334 | "0xcbca25e39f142387",
|
9335 | 1
|
9336 | ],
|
9337 | [
|
9338 | "0x687ad44ad37f03c2",
|
9339 | 1
|
9340 | ],
|
9341 | [
|
9342 | "0xab3c0572291feb8b",
|
9343 | 1
|
9344 | ],
|
9345 | [
|
9346 | "0xbc9d89904f5b923f",
|
9347 | 1
|
9348 | ],
|
9349 | [
|
9350 | "0x37c8bb1350a9a2a8",
|
9351 | 1
|
9352 | ]
|
9353 | ]
|
9354 | ],
|
9355 | [
|
9356 | 1491596,
|
9357 | 1054,
|
9358 | [
|
9359 | [
|
9360 | "0xdf6acb689907609b",
|
9361 | 2
|
9362 | ],
|
9363 | [
|
9364 | "0x37e397fc7c91f5e4",
|
9365 | 1
|
9366 | ],
|
9367 | [
|
9368 | "0x40fe3ad401f8959a",
|
9369 | 4
|
9370 | ],
|
9371 | [
|
9372 | "0xd2bc9897eed08f15",
|
9373 | 1
|
9374 | ],
|
9375 | [
|
9376 | "0xf78b278be53f454c",
|
9377 | 2
|
9378 | ],
|
9379 | [
|
9380 | "0xaf2c0297a23e6d3d",
|
9381 | 2
|
9382 | ],
|
9383 | [
|
9384 | "0xed99c5acb25eedf5",
|
9385 | 2
|
9386 | ],
|
9387 | [
|
9388 | "0xcbca25e39f142387",
|
9389 | 1
|
9390 | ],
|
9391 | [
|
9392 | "0x687ad44ad37f03c2",
|
9393 | 1
|
9394 | ],
|
9395 | [
|
9396 | "0xab3c0572291feb8b",
|
9397 | 1
|
9398 | ],
|
9399 | [
|
9400 | "0xbc9d89904f5b923f",
|
9401 | 1
|
9402 | ],
|
9403 | [
|
9404 | "0x37c8bb1350a9a2a8",
|
9405 | 1
|
9406 | ]
|
9407 | ]
|
9408 | ],
|
9409 | [
|
9410 | 1574408,
|
9411 | 1055,
|
9412 | [
|
9413 | [
|
9414 | "0xdf6acb689907609b",
|
9415 | 2
|
9416 | ],
|
9417 | [
|
9418 | "0x37e397fc7c91f5e4",
|
9419 | 1
|
9420 | ],
|
9421 | [
|
9422 | "0x40fe3ad401f8959a",
|
9423 | 4
|
9424 | ],
|
9425 | [
|
9426 | "0xd2bc9897eed08f15",
|
9427 | 1
|
9428 | ],
|
9429 | [
|
9430 | "0xf78b278be53f454c",
|
9431 | 2
|
9432 | ],
|
9433 | [
|
9434 | "0xaf2c0297a23e6d3d",
|
9435 | 2
|
9436 | ],
|
9437 | [
|
9438 | "0xed99c5acb25eedf5",
|
9439 | 2
|
9440 | ],
|
9441 | [
|
9442 | "0xcbca25e39f142387",
|
9443 | 1
|
9444 | ],
|
9445 | [
|
9446 | "0x687ad44ad37f03c2",
|
9447 | 1
|
9448 | ],
|
9449 | [
|
9450 | "0xab3c0572291feb8b",
|
9451 | 1
|
9452 | ],
|
9453 | [
|
9454 | "0xbc9d89904f5b923f",
|
9455 | 1
|
9456 | ],
|
9457 | [
|
9458 | "0x37c8bb1350a9a2a8",
|
9459 | 1
|
9460 | ]
|
9461 | ]
|
9462 | ],
|
9463 | [
|
9464 | 2064961,
|
9465 | 1058,
|
9466 | [
|
9467 | [
|
9468 | "0xdf6acb689907609b",
|
9469 | 3
|
9470 | ],
|
9471 | [
|
9472 | "0x37e397fc7c91f5e4",
|
9473 | 1
|
9474 | ],
|
9475 | [
|
9476 | "0x40fe3ad401f8959a",
|
9477 | 4
|
9478 | ],
|
9479 | [
|
9480 | "0xd2bc9897eed08f15",
|
9481 | 2
|
9482 | ],
|
9483 | [
|
9484 | "0xf78b278be53f454c",
|
9485 | 2
|
9486 | ],
|
9487 | [
|
9488 | "0xaf2c0297a23e6d3d",
|
9489 | 3
|
9490 | ],
|
9491 | [
|
9492 | "0xed99c5acb25eedf5",
|
9493 | 2
|
9494 | ],
|
9495 | [
|
9496 | "0xcbca25e39f142387",
|
9497 | 1
|
9498 | ],
|
9499 | [
|
9500 | "0x687ad44ad37f03c2",
|
9501 | 1
|
9502 | ],
|
9503 | [
|
9504 | "0xab3c0572291feb8b",
|
9505 | 1
|
9506 | ],
|
9507 | [
|
9508 | "0xbc9d89904f5b923f",
|
9509 | 1
|
9510 | ],
|
9511 | [
|
9512 | "0x37c8bb1350a9a2a8",
|
9513 | 1
|
9514 | ]
|
9515 | ]
|
9516 | ],
|
9517 | [
|
9518 | 2201991,
|
9519 | 1062,
|
9520 | [
|
9521 | [
|
9522 | "0xdf6acb689907609b",
|
9523 | 3
|
9524 | ],
|
9525 | [
|
9526 | "0x37e397fc7c91f5e4",
|
9527 | 1
|
9528 | ],
|
9529 | [
|
9530 | "0x40fe3ad401f8959a",
|
9531 | 4
|
9532 | ],
|
9533 | [
|
9534 | "0xd2bc9897eed08f15",
|
9535 | 2
|
9536 | ],
|
9537 | [
|
9538 | "0xf78b278be53f454c",
|
9539 | 2
|
9540 | ],
|
9541 | [
|
9542 | "0xaf2c0297a23e6d3d",
|
9543 | 3
|
9544 | ],
|
9545 | [
|
9546 | "0xed99c5acb25eedf5",
|
9547 | 2
|
9548 | ],
|
9549 | [
|
9550 | "0xcbca25e39f142387",
|
9551 | 2
|
9552 | ],
|
9553 | [
|
9554 | "0x687ad44ad37f03c2",
|
9555 | 1
|
9556 | ],
|
9557 | [
|
9558 | "0xab3c0572291feb8b",
|
9559 | 1
|
9560 | ],
|
9561 | [
|
9562 | "0xbc9d89904f5b923f",
|
9563 | 1
|
9564 | ],
|
9565 | [
|
9566 | "0x37c8bb1350a9a2a8",
|
9567 | 1
|
9568 | ]
|
9569 | ]
|
9570 | ],
|
9571 | [
|
9572 | 2671528,
|
9573 | 2005,
|
9574 | [
|
9575 | [
|
9576 | "0xdf6acb689907609b",
|
9577 | 3
|
9578 | ],
|
9579 | [
|
9580 | "0x37e397fc7c91f5e4",
|
9581 | 1
|
9582 | ],
|
9583 | [
|
9584 | "0x40fe3ad401f8959a",
|
9585 | 4
|
9586 | ],
|
9587 | [
|
9588 | "0xd2bc9897eed08f15",
|
9589 | 2
|
9590 | ],
|
9591 | [
|
9592 | "0xf78b278be53f454c",
|
9593 | 2
|
9594 | ],
|
9595 | [
|
9596 | "0xaf2c0297a23e6d3d",
|
9597 | 3
|
9598 | ],
|
9599 | [
|
9600 | "0xed99c5acb25eedf5",
|
9601 | 2
|
9602 | ],
|
9603 | [
|
9604 | "0xcbca25e39f142387",
|
9605 | 2
|
9606 | ],
|
9607 | [
|
9608 | "0x687ad44ad37f03c2",
|
9609 | 1
|
9610 | ],
|
9611 | [
|
9612 | "0xab3c0572291feb8b",
|
9613 | 1
|
9614 | ],
|
9615 | [
|
9616 | "0xbc9d89904f5b923f",
|
9617 | 1
|
9618 | ],
|
9619 | [
|
9620 | "0x37c8bb1350a9a2a8",
|
9621 | 1
|
9622 | ]
|
9623 | ]
|
9624 | ],
|
9625 | [
|
9626 | 2704202,
|
9627 | 2007,
|
9628 | [
|
9629 | [
|
9630 | "0xdf6acb689907609b",
|
9631 | 3
|
9632 | ],
|
9633 | [
|
9634 | "0x37e397fc7c91f5e4",
|
9635 | 1
|
9636 | ],
|
9637 | [
|
9638 | "0x40fe3ad401f8959a",
|
9639 | 4
|
9640 | ],
|
9641 | [
|
9642 | "0xd2bc9897eed08f15",
|
9643 | 2
|
9644 | ],
|
9645 | [
|
9646 | "0xf78b278be53f454c",
|
9647 | 2
|
9648 | ],
|
9649 | [
|
9650 | "0xaf2c0297a23e6d3d",
|
9651 | 3
|
9652 | ],
|
9653 | [
|
9654 | "0xed99c5acb25eedf5",
|
9655 | 2
|
9656 | ],
|
9657 | [
|
9658 | "0xcbca25e39f142387",
|
9659 | 2
|
9660 | ],
|
9661 | [
|
9662 | "0x687ad44ad37f03c2",
|
9663 | 1
|
9664 | ],
|
9665 | [
|
9666 | "0xab3c0572291feb8b",
|
9667 | 1
|
9668 | ],
|
9669 | [
|
9670 | "0xbc9d89904f5b923f",
|
9671 | 1
|
9672 | ],
|
9673 | [
|
9674 | "0x37c8bb1350a9a2a8",
|
9675 | 1
|
9676 | ]
|
9677 | ]
|
9678 | ],
|
9679 | [
|
9680 | 2728002,
|
9681 | 2008,
|
9682 | [
|
9683 | [
|
9684 | "0xdf6acb689907609b",
|
9685 | 3
|
9686 | ],
|
9687 | [
|
9688 | "0x37e397fc7c91f5e4",
|
9689 | 1
|
9690 | ],
|
9691 | [
|
9692 | "0x40fe3ad401f8959a",
|
9693 | 4
|
9694 | ],
|
9695 | [
|
9696 | "0xd2bc9897eed08f15",
|
9697 | 2
|
9698 | ],
|
9699 | [
|
9700 | "0xf78b278be53f454c",
|
9701 | 2
|
9702 | ],
|
9703 | [
|
9704 | "0xaf2c0297a23e6d3d",
|
9705 | 3
|
9706 | ],
|
9707 | [
|
9708 | "0xed99c5acb25eedf5",
|
9709 | 2
|
9710 | ],
|
9711 | [
|
9712 | "0xcbca25e39f142387",
|
9713 | 2
|
9714 | ],
|
9715 | [
|
9716 | "0x687ad44ad37f03c2",
|
9717 | 1
|
9718 | ],
|
9719 | [
|
9720 | "0xab3c0572291feb8b",
|
9721 | 1
|
9722 | ],
|
9723 | [
|
9724 | "0xbc9d89904f5b923f",
|
9725 | 1
|
9726 | ],
|
9727 | [
|
9728 | "0x37c8bb1350a9a2a8",
|
9729 | 1
|
9730 | ]
|
9731 | ]
|
9732 | ],
|
9733 | [
|
9734 | 2832534,
|
9735 | 2011,
|
9736 | [
|
9737 | [
|
9738 | "0xdf6acb689907609b",
|
9739 | 3
|
9740 | ],
|
9741 | [
|
9742 | "0x37e397fc7c91f5e4",
|
9743 | 1
|
9744 | ],
|
9745 | [
|
9746 | "0x40fe3ad401f8959a",
|
9747 | 4
|
9748 | ],
|
9749 | [
|
9750 | "0xd2bc9897eed08f15",
|
9751 | 2
|
9752 | ],
|
9753 | [
|
9754 | "0xf78b278be53f454c",
|
9755 | 2
|
9756 | ],
|
9757 | [
|
9758 | "0xaf2c0297a23e6d3d",
|
9759 | 3
|
9760 | ],
|
9761 | [
|
9762 | "0xed99c5acb25eedf5",
|
9763 | 2
|
9764 | ],
|
9765 | [
|
9766 | "0xcbca25e39f142387",
|
9767 | 2
|
9768 | ],
|
9769 | [
|
9770 | "0x687ad44ad37f03c2",
|
9771 | 1
|
9772 | ],
|
9773 | [
|
9774 | "0xab3c0572291feb8b",
|
9775 | 1
|
9776 | ],
|
9777 | [
|
9778 | "0xbc9d89904f5b923f",
|
9779 | 1
|
9780 | ],
|
9781 | [
|
9782 | "0x37c8bb1350a9a2a8",
|
9783 | 1
|
9784 | ]
|
9785 | ]
|
9786 | ],
|
9787 | [
|
9788 | 2962294,
|
9789 | 2012,
|
9790 | [
|
9791 | [
|
9792 | "0xdf6acb689907609b",
|
9793 | 3
|
9794 | ],
|
9795 | [
|
9796 | "0x37e397fc7c91f5e4",
|
9797 | 1
|
9798 | ],
|
9799 | [
|
9800 | "0x40fe3ad401f8959a",
|
9801 | 4
|
9802 | ],
|
9803 | [
|
9804 | "0xd2bc9897eed08f15",
|
9805 | 2
|
9806 | ],
|
9807 | [
|
9808 | "0xf78b278be53f454c",
|
9809 | 2
|
9810 | ],
|
9811 | [
|
9812 | "0xaf2c0297a23e6d3d",
|
9813 | 3
|
9814 | ],
|
9815 | [
|
9816 | "0xed99c5acb25eedf5",
|
9817 | 2
|
9818 | ],
|
9819 | [
|
9820 | "0xcbca25e39f142387",
|
9821 | 2
|
9822 | ],
|
9823 | [
|
9824 | "0x687ad44ad37f03c2",
|
9825 | 1
|
9826 | ],
|
9827 | [
|
9828 | "0xab3c0572291feb8b",
|
9829 | 1
|
9830 | ],
|
9831 | [
|
9832 | "0xbc9d89904f5b923f",
|
9833 | 1
|
9834 | ],
|
9835 | [
|
9836 | "0x37c8bb1350a9a2a8",
|
9837 | 1
|
9838 | ]
|
9839 | ]
|
9840 | ],
|
9841 | [
|
9842 | 3240000,
|
9843 | 2013,
|
9844 | [
|
9845 | [
|
9846 | "0xdf6acb689907609b",
|
9847 | 3
|
9848 | ],
|
9849 | [
|
9850 | "0x37e397fc7c91f5e4",
|
9851 | 1
|
9852 | ],
|
9853 | [
|
9854 | "0x40fe3ad401f8959a",
|
9855 | 4
|
9856 | ],
|
9857 | [
|
9858 | "0xd2bc9897eed08f15",
|
9859 | 2
|
9860 | ],
|
9861 | [
|
9862 | "0xf78b278be53f454c",
|
9863 | 2
|
9864 | ],
|
9865 | [
|
9866 | "0xaf2c0297a23e6d3d",
|
9867 | 3
|
9868 | ],
|
9869 | [
|
9870 | "0xed99c5acb25eedf5",
|
9871 | 2
|
9872 | ],
|
9873 | [
|
9874 | "0xcbca25e39f142387",
|
9875 | 2
|
9876 | ],
|
9877 | [
|
9878 | "0x687ad44ad37f03c2",
|
9879 | 1
|
9880 | ],
|
9881 | [
|
9882 | "0xab3c0572291feb8b",
|
9883 | 1
|
9884 | ],
|
9885 | [
|
9886 | "0xbc9d89904f5b923f",
|
9887 | 1
|
9888 | ],
|
9889 | [
|
9890 | "0x37c8bb1350a9a2a8",
|
9891 | 1
|
9892 | ]
|
9893 | ]
|
9894 | ],
|
9895 | [
|
9896 | 3274408,
|
9897 | 2015,
|
9898 | [
|
9899 | [
|
9900 | "0xdf6acb689907609b",
|
9901 | 3
|
9902 | ],
|
9903 | [
|
9904 | "0x37e397fc7c91f5e4",
|
9905 | 1
|
9906 | ],
|
9907 | [
|
9908 | "0x40fe3ad401f8959a",
|
9909 | 4
|
9910 | ],
|
9911 | [
|
9912 | "0xd2bc9897eed08f15",
|
9913 | 2
|
9914 | ],
|
9915 | [
|
9916 | "0xf78b278be53f454c",
|
9917 | 2
|
9918 | ],
|
9919 | [
|
9920 | "0xaf2c0297a23e6d3d",
|
9921 | 3
|
9922 | ],
|
9923 | [
|
9924 | "0xed99c5acb25eedf5",
|
9925 | 2
|
9926 | ],
|
9927 | [
|
9928 | "0xcbca25e39f142387",
|
9929 | 2
|
9930 | ],
|
9931 | [
|
9932 | "0x687ad44ad37f03c2",
|
9933 | 1
|
9934 | ],
|
9935 | [
|
9936 | "0xab3c0572291feb8b",
|
9937 | 1
|
9938 | ],
|
9939 | [
|
9940 | "0xbc9d89904f5b923f",
|
9941 | 1
|
9942 | ],
|
9943 | [
|
9944 | "0x37c8bb1350a9a2a8",
|
9945 | 1
|
9946 | ]
|
9947 | ]
|
9948 | ],
|
9949 | [
|
9950 | 3323565,
|
9951 | 2019,
|
9952 | [
|
9953 | [
|
9954 | "0xdf6acb689907609b",
|
9955 | 3
|
9956 | ],
|
9957 | [
|
9958 | "0x37e397fc7c91f5e4",
|
9959 | 1
|
9960 | ],
|
9961 | [
|
9962 | "0x40fe3ad401f8959a",
|
9963 | 4
|
9964 | ],
|
9965 | [
|
9966 | "0xd2bc9897eed08f15",
|
9967 | 2
|
9968 | ],
|
9969 | [
|
9970 | "0xf78b278be53f454c",
|
9971 | 2
|
9972 | ],
|
9973 | [
|
9974 | "0xaf2c0297a23e6d3d",
|
9975 | 3
|
9976 | ],
|
9977 | [
|
9978 | "0xed99c5acb25eedf5",
|
9979 | 2
|
9980 | ],
|
9981 | [
|
9982 | "0xcbca25e39f142387",
|
9983 | 2
|
9984 | ],
|
9985 | [
|
9986 | "0x687ad44ad37f03c2",
|
9987 | 1
|
9988 | ],
|
9989 | [
|
9990 | "0xab3c0572291feb8b",
|
9991 | 1
|
9992 | ],
|
9993 | [
|
9994 | "0xbc9d89904f5b923f",
|
9995 | 1
|
9996 | ],
|
9997 | [
|
9998 | "0x37c8bb1350a9a2a8",
|
9999 | 1
|
10000 | ]
|
10001 | ]
|
10002 | ],
|
10003 | [
|
10004 | 3534175,
|
10005 | 2022,
|
10006 | [
|
10007 | [
|
10008 | "0xdf6acb689907609b",
|
10009 | 3
|
10010 | ],
|
10011 | [
|
10012 | "0x37e397fc7c91f5e4",
|
10013 | 1
|
10014 | ],
|
10015 | [
|
10016 | "0x40fe3ad401f8959a",
|
10017 | 4
|
10018 | ],
|
10019 | [
|
10020 | "0xd2bc9897eed08f15",
|
10021 | 2
|
10022 | ],
|
10023 | [
|
10024 | "0xf78b278be53f454c",
|
10025 | 2
|
10026 | ],
|
10027 | [
|
10028 | "0xaf2c0297a23e6d3d",
|
10029 | 3
|
10030 | ],
|
10031 | [
|
10032 | "0xed99c5acb25eedf5",
|
10033 | 2
|
10034 | ],
|
10035 | [
|
10036 | "0xcbca25e39f142387",
|
10037 | 2
|
10038 | ],
|
10039 | [
|
10040 | "0x687ad44ad37f03c2",
|
10041 | 1
|
10042 | ],
|
10043 | [
|
10044 | "0xab3c0572291feb8b",
|
10045 | 1
|
10046 | ],
|
10047 | [
|
10048 | "0xbc9d89904f5b923f",
|
10049 | 1
|
10050 | ],
|
10051 | [
|
10052 | "0x37c8bb1350a9a2a8",
|
10053 | 1
|
10054 | ]
|
10055 | ]
|
10056 | ],
|
10057 | [
|
10058 | 3860281,
|
10059 | 2023,
|
10060 | [
|
10061 | [
|
10062 | "0xdf6acb689907609b",
|
10063 | 3
|
10064 | ],
|
10065 | [
|
10066 | "0x37e397fc7c91f5e4",
|
10067 | 1
|
10068 | ],
|
10069 | [
|
10070 | "0x40fe3ad401f8959a",
|
10071 | 4
|
10072 | ],
|
10073 | [
|
10074 | "0xd2bc9897eed08f15",
|
10075 | 2
|
10076 | ],
|
10077 | [
|
10078 | "0xf78b278be53f454c",
|
10079 | 2
|
10080 | ],
|
10081 | [
|
10082 | "0xaf2c0297a23e6d3d",
|
10083 | 3
|
10084 | ],
|
10085 | [
|
10086 | "0xed99c5acb25eedf5",
|
10087 | 2
|
10088 | ],
|
10089 | [
|
10090 | "0xcbca25e39f142387",
|
10091 | 2
|
10092 | ],
|
10093 | [
|
10094 | "0x687ad44ad37f03c2",
|
10095 | 1
|
10096 | ],
|
10097 | [
|
10098 | "0xab3c0572291feb8b",
|
10099 | 1
|
10100 | ],
|
10101 | [
|
10102 | "0xbc9d89904f5b923f",
|
10103 | 1
|
10104 | ],
|
10105 | [
|
10106 | "0x37c8bb1350a9a2a8",
|
10107 | 1
|
10108 | ]
|
10109 | ]
|
10110 | ],
|
10111 | [
|
10112 | 4143129,
|
10113 | 2024,
|
10114 | [
|
10115 | [
|
10116 | "0xdf6acb689907609b",
|
10117 | 3
|
10118 | ],
|
10119 | [
|
10120 | "0x37e397fc7c91f5e4",
|
10121 | 1
|
10122 | ],
|
10123 | [
|
10124 | "0x40fe3ad401f8959a",
|
10125 | 4
|
10126 | ],
|
10127 | [
|
10128 | "0xd2bc9897eed08f15",
|
10129 | 2
|
10130 | ],
|
10131 | [
|
10132 | "0xf78b278be53f454c",
|
10133 | 2
|
10134 | ],
|
10135 | [
|
10136 | "0xaf2c0297a23e6d3d",
|
10137 | 3
|
10138 | ],
|
10139 | [
|
10140 | "0xed99c5acb25eedf5",
|
10141 | 2
|
10142 | ],
|
10143 | [
|
10144 | "0xcbca25e39f142387",
|
10145 | 2
|
10146 | ],
|
10147 | [
|
10148 | "0x687ad44ad37f03c2",
|
10149 | 1
|
10150 | ],
|
10151 | [
|
10152 | "0xab3c0572291feb8b",
|
10153 | 1
|
10154 | ],
|
10155 | [
|
10156 | "0xbc9d89904f5b923f",
|
10157 | 1
|
10158 | ],
|
10159 | [
|
10160 | "0x37c8bb1350a9a2a8",
|
10161 | 1
|
10162 | ]
|
10163 | ]
|
10164 | ],
|
10165 | [
|
10166 | 4401242,
|
10167 | 2025,
|
10168 | [
|
10169 | [
|
10170 | "0xdf6acb689907609b",
|
10171 | 3
|
10172 | ],
|
10173 | [
|
10174 | "0x37e397fc7c91f5e4",
|
10175 | 1
|
10176 | ],
|
10177 | [
|
10178 | "0x40fe3ad401f8959a",
|
10179 | 4
|
10180 | ],
|
10181 | [
|
10182 | "0xd2bc9897eed08f15",
|
10183 | 2
|
10184 | ],
|
10185 | [
|
10186 | "0xf78b278be53f454c",
|
10187 | 2
|
10188 | ],
|
10189 | [
|
10190 | "0xaf2c0297a23e6d3d",
|
10191 | 1
|
10192 | ],
|
10193 | [
|
10194 | "0xed99c5acb25eedf5",
|
10195 | 2
|
10196 | ],
|
10197 | [
|
10198 | "0xcbca25e39f142387",
|
10199 | 2
|
10200 | ],
|
10201 | [
|
10202 | "0x687ad44ad37f03c2",
|
10203 | 1
|
10204 | ],
|
10205 | [
|
10206 | "0xab3c0572291feb8b",
|
10207 | 1
|
10208 | ],
|
10209 | [
|
10210 | "0xbc9d89904f5b923f",
|
10211 | 1
|
10212 | ],
|
10213 | [
|
10214 | "0x37c8bb1350a9a2a8",
|
10215 | 1
|
10216 | ]
|
10217 | ]
|
10218 | ],
|
10219 | [
|
10220 | 4841367,
|
10221 | 2026,
|
10222 | [
|
10223 | [
|
10224 | "0xdf6acb689907609b",
|
10225 | 3
|
10226 | ],
|
10227 | [
|
10228 | "0x37e397fc7c91f5e4",
|
10229 | 1
|
10230 | ],
|
10231 | [
|
10232 | "0x40fe3ad401f8959a",
|
10233 | 4
|
10234 | ],
|
10235 | [
|
10236 | "0xd2bc9897eed08f15",
|
10237 | 2
|
10238 | ],
|
10239 | [
|
10240 | "0xf78b278be53f454c",
|
10241 | 2
|
10242 | ],
|
10243 | [
|
10244 | "0xaf2c0297a23e6d3d",
|
10245 | 1
|
10246 | ],
|
10247 | [
|
10248 | "0xed99c5acb25eedf5",
|
10249 | 2
|
10250 | ],
|
10251 | [
|
10252 | "0xcbca25e39f142387",
|
10253 | 2
|
10254 | ],
|
10255 | [
|
10256 | "0x687ad44ad37f03c2",
|
10257 | 1
|
10258 | ],
|
10259 | [
|
10260 | "0xab3c0572291feb8b",
|
10261 | 1
|
10262 | ],
|
10263 | [
|
10264 | "0xbc9d89904f5b923f",
|
10265 | 1
|
10266 | ],
|
10267 | [
|
10268 | "0x37c8bb1350a9a2a8",
|
10269 | 1
|
10270 | ]
|
10271 | ]
|
10272 | ],
|
10273 | [
|
10274 | 5961600,
|
10275 | 2027,
|
10276 | [
|
10277 | [
|
10278 | "0xdf6acb689907609b",
|
10279 | 3
|
10280 | ],
|
10281 | [
|
10282 | "0x37e397fc7c91f5e4",
|
10283 | 1
|
10284 | ],
|
10285 | [
|
10286 | "0x40fe3ad401f8959a",
|
10287 | 4
|
10288 | ],
|
10289 | [
|
10290 | "0xd2bc9897eed08f15",
|
10291 | 2
|
10292 | ],
|
10293 | [
|
10294 | "0xf78b278be53f454c",
|
10295 | 2
|
10296 | ],
|
10297 | [
|
10298 | "0xaf2c0297a23e6d3d",
|
10299 | 1
|
10300 | ],
|
10301 | [
|
10302 | "0xed99c5acb25eedf5",
|
10303 | 2
|
10304 | ],
|
10305 | [
|
10306 | "0xcbca25e39f142387",
|
10307 | 2
|
10308 | ],
|
10309 | [
|
10310 | "0x687ad44ad37f03c2",
|
10311 | 1
|
10312 | ],
|
10313 | [
|
10314 | "0xab3c0572291feb8b",
|
10315 | 1
|
10316 | ],
|
10317 | [
|
10318 | "0xbc9d89904f5b923f",
|
10319 | 1
|
10320 | ],
|
10321 | [
|
10322 | "0x37c8bb1350a9a2a8",
|
10323 | 1
|
10324 | ]
|
10325 | ]
|
10326 | ],
|
10327 | [
|
10328 | 6137912,
|
10329 | 2028,
|
10330 | [
|
10331 | [
|
10332 | "0xdf6acb689907609b",
|
10333 | 3
|
10334 | ],
|
10335 | [
|
10336 | "0x37e397fc7c91f5e4",
|
10337 | 1
|
10338 | ],
|
10339 | [
|
10340 | "0x40fe3ad401f8959a",
|
10341 | 4
|
10342 | ],
|
10343 | [
|
10344 | "0xd2bc9897eed08f15",
|
10345 | 2
|
10346 | ],
|
10347 | [
|
10348 | "0xf78b278be53f454c",
|
10349 | 2
|
10350 | ],
|
10351 | [
|
10352 | "0xaf2c0297a23e6d3d",
|
10353 | 1
|
10354 | ],
|
10355 | [
|
10356 | "0xed99c5acb25eedf5",
|
10357 | 2
|
10358 | ],
|
10359 | [
|
10360 | "0xcbca25e39f142387",
|
10361 | 2
|
10362 | ],
|
10363 | [
|
10364 | "0x687ad44ad37f03c2",
|
10365 | 1
|
10366 | ],
|
10367 | [
|
10368 | "0xab3c0572291feb8b",
|
10369 | 1
|
10370 | ],
|
10371 | [
|
10372 | "0xbc9d89904f5b923f",
|
10373 | 1
|
10374 | ],
|
10375 | [
|
10376 | "0x37c8bb1350a9a2a8",
|
10377 | 1
|
10378 | ]
|
10379 | ]
|
10380 | ],
|
10381 | [
|
10382 | 6561855,
|
10383 | 2029,
|
10384 | [
|
10385 | [
|
10386 | "0xdf6acb689907609b",
|
10387 | 3
|
10388 | ],
|
10389 | [
|
10390 | "0x37e397fc7c91f5e4",
|
10391 | 1
|
10392 | ],
|
10393 | [
|
10394 | "0x40fe3ad401f8959a",
|
10395 | 4
|
10396 | ],
|
10397 | [
|
10398 | "0xd2bc9897eed08f15",
|
10399 | 2
|
10400 | ],
|
10401 | [
|
10402 | "0xf78b278be53f454c",
|
10403 | 2
|
10404 | ],
|
10405 | [
|
10406 | "0xaf2c0297a23e6d3d",
|
10407 | 1
|
10408 | ],
|
10409 | [
|
10410 | "0xed99c5acb25eedf5",
|
10411 | 2
|
10412 | ],
|
10413 | [
|
10414 | "0xcbca25e39f142387",
|
10415 | 2
|
10416 | ],
|
10417 | [
|
10418 | "0x687ad44ad37f03c2",
|
10419 | 1
|
10420 | ],
|
10421 | [
|
10422 | "0xab3c0572291feb8b",
|
10423 | 1
|
10424 | ],
|
10425 | [
|
10426 | "0xbc9d89904f5b923f",
|
10427 | 1
|
10428 | ],
|
10429 | [
|
10430 | "0x37c8bb1350a9a2a8",
|
10431 | 1
|
10432 | ]
|
10433 | ]
|
10434 | ],
|
10435 | [
|
10436 | 7100891,
|
10437 | 2030,
|
10438 | [
|
10439 | [
|
10440 | "0xdf6acb689907609b",
|
10441 | 3
|
10442 | ],
|
10443 | [
|
10444 | "0x37e397fc7c91f5e4",
|
10445 | 1
|
10446 | ],
|
10447 | [
|
10448 | "0x40fe3ad401f8959a",
|
10449 | 4
|
10450 | ],
|
10451 | [
|
10452 | "0xd2bc9897eed08f15",
|
10453 | 2
|
10454 | ],
|
10455 | [
|
10456 | "0xf78b278be53f454c",
|
10457 | 2
|
10458 | ],
|
10459 | [
|
10460 | "0xaf2c0297a23e6d3d",
|
10461 | 1
|
10462 | ],
|
10463 | [
|
10464 | "0xed99c5acb25eedf5",
|
10465 | 2
|
10466 | ],
|
10467 | [
|
10468 | "0xcbca25e39f142387",
|
10469 | 2
|
10470 | ],
|
10471 | [
|
10472 | "0x687ad44ad37f03c2",
|
10473 | 1
|
10474 | ],
|
10475 | [
|
10476 | "0xab3c0572291feb8b",
|
10477 | 1
|
10478 | ],
|
10479 | [
|
10480 | "0xbc9d89904f5b923f",
|
10481 | 1
|
10482 | ],
|
10483 | [
|
10484 | "0x37c8bb1350a9a2a8",
|
10485 | 1
|
10486 | ]
|
10487 | ]
|
10488 | ],
|
10489 | [
|
10490 | 7468792,
|
10491 | 9010,
|
10492 | [
|
10493 | [
|
10494 | "0xdf6acb689907609b",
|
10495 | 3
|
10496 | ],
|
10497 | [
|
10498 | "0x37e397fc7c91f5e4",
|
10499 | 1
|
10500 | ],
|
10501 | [
|
10502 | "0x40fe3ad401f8959a",
|
10503 | 5
|
10504 | ],
|
10505 | [
|
10506 | "0xd2bc9897eed08f15",
|
10507 | 2
|
10508 | ],
|
10509 | [
|
10510 | "0xf78b278be53f454c",
|
10511 | 2
|
10512 | ],
|
10513 | [
|
10514 | "0xaf2c0297a23e6d3d",
|
10515 | 1
|
10516 | ],
|
10517 | [
|
10518 | "0x49eaaf1b548a0cb0",
|
10519 | 1
|
10520 | ],
|
10521 | [
|
10522 | "0x91d5df18b0d2cf58",
|
10523 | 1
|
10524 | ],
|
10525 | [
|
10526 | "0xed99c5acb25eedf5",
|
10527 | 2
|
10528 | ],
|
10529 | [
|
10530 | "0xcbca25e39f142387",
|
10531 | 2
|
10532 | ],
|
10533 | [
|
10534 | "0x687ad44ad37f03c2",
|
10535 | 1
|
10536 | ],
|
10537 | [
|
10538 | "0xab3c0572291feb8b",
|
10539 | 1
|
10540 | ],
|
10541 | [
|
10542 | "0xbc9d89904f5b923f",
|
10543 | 1
|
10544 | ],
|
10545 | [
|
10546 | "0x37c8bb1350a9a2a8",
|
10547 | 1
|
10548 | ]
|
10549 | ]
|
10550 | ],
|
10551 | [
|
10552 | 7668600,
|
10553 | 9030,
|
10554 | [
|
10555 | [
|
10556 | "0xdf6acb689907609b",
|
10557 | 3
|
10558 | ],
|
10559 | [
|
10560 | "0x37e397fc7c91f5e4",
|
10561 | 1
|
10562 | ],
|
10563 | [
|
10564 | "0x40fe3ad401f8959a",
|
10565 | 5
|
10566 | ],
|
10567 | [
|
10568 | "0xd2bc9897eed08f15",
|
10569 | 2
|
10570 | ],
|
10571 | [
|
10572 | "0xf78b278be53f454c",
|
10573 | 2
|
10574 | ],
|
10575 | [
|
10576 | "0xaf2c0297a23e6d3d",
|
10577 | 1
|
10578 | ],
|
10579 | [
|
10580 | "0x49eaaf1b548a0cb0",
|
10581 | 1
|
10582 | ],
|
10583 | [
|
10584 | "0x91d5df18b0d2cf58",
|
10585 | 1
|
10586 | ],
|
10587 | [
|
10588 | "0xed99c5acb25eedf5",
|
10589 | 2
|
10590 | ],
|
10591 | [
|
10592 | "0xcbca25e39f142387",
|
10593 | 2
|
10594 | ],
|
10595 | [
|
10596 | "0x687ad44ad37f03c2",
|
10597 | 1
|
10598 | ],
|
10599 | [
|
10600 | "0xab3c0572291feb8b",
|
10601 | 1
|
10602 | ],
|
10603 | [
|
10604 | "0xbc9d89904f5b923f",
|
10605 | 1
|
10606 | ],
|
10607 | [
|
10608 | "0x37c8bb1350a9a2a8",
|
10609 | 1
|
10610 | ]
|
10611 | ]
|
10612 | ],
|
10613 | [
|
10614 | 7812476,
|
10615 | 9040,
|
10616 | [
|
10617 | [
|
10618 | "0xdf6acb689907609b",
|
10619 | 3
|
10620 | ],
|
10621 | [
|
10622 | "0x37e397fc7c91f5e4",
|
10623 | 1
|
10624 | ],
|
10625 | [
|
10626 | "0x40fe3ad401f8959a",
|
10627 | 5
|
10628 | ],
|
10629 | [
|
10630 | "0xd2bc9897eed08f15",
|
10631 | 2
|
10632 | ],
|
10633 | [
|
10634 | "0xf78b278be53f454c",
|
10635 | 2
|
10636 | ],
|
10637 | [
|
10638 | "0xaf2c0297a23e6d3d",
|
10639 | 1
|
10640 | ],
|
10641 | [
|
10642 | "0x49eaaf1b548a0cb0",
|
10643 | 1
|
10644 | ],
|
10645 | [
|
10646 | "0x91d5df18b0d2cf58",
|
10647 | 1
|
10648 | ],
|
10649 | [
|
10650 | "0xed99c5acb25eedf5",
|
10651 | 2
|
10652 | ],
|
10653 | [
|
10654 | "0xcbca25e39f142387",
|
10655 | 2
|
10656 | ],
|
10657 | [
|
10658 | "0x687ad44ad37f03c2",
|
10659 | 1
|
10660 | ],
|
10661 | [
|
10662 | "0xab3c0572291feb8b",
|
10663 | 1
|
10664 | ],
|
10665 | [
|
10666 | "0xbc9d89904f5b923f",
|
10667 | 1
|
10668 | ],
|
10669 | [
|
10670 | "0x37c8bb1350a9a2a8",
|
10671 | 1
|
10672 | ]
|
10673 | ]
|
10674 | ],
|
10675 | [
|
10676 | 8010981,
|
10677 | 9050,
|
10678 | [
|
10679 | [
|
10680 | "0xdf6acb689907609b",
|
10681 | 3
|
10682 | ],
|
10683 | [
|
10684 | "0x37e397fc7c91f5e4",
|
10685 | 1
|
10686 | ],
|
10687 | [
|
10688 | "0x40fe3ad401f8959a",
|
10689 | 5
|
10690 | ],
|
10691 | [
|
10692 | "0xd2bc9897eed08f15",
|
10693 | 2
|
10694 | ],
|
10695 | [
|
10696 | "0xf78b278be53f454c",
|
10697 | 2
|
10698 | ],
|
10699 | [
|
10700 | "0xaf2c0297a23e6d3d",
|
10701 | 1
|
10702 | ],
|
10703 | [
|
10704 | "0x49eaaf1b548a0cb0",
|
10705 | 1
|
10706 | ],
|
10707 | [
|
10708 | "0x91d5df18b0d2cf58",
|
10709 | 1
|
10710 | ],
|
10711 | [
|
10712 | "0xed99c5acb25eedf5",
|
10713 | 2
|
10714 | ],
|
10715 | [
|
10716 | "0xcbca25e39f142387",
|
10717 | 2
|
10718 | ],
|
10719 | [
|
10720 | "0x687ad44ad37f03c2",
|
10721 | 1
|
10722 | ],
|
10723 | [
|
10724 | "0xab3c0572291feb8b",
|
10725 | 1
|
10726 | ],
|
10727 | [
|
10728 | "0xbc9d89904f5b923f",
|
10729 | 1
|
10730 | ],
|
10731 | [
|
10732 | "0x37c8bb1350a9a2a8",
|
10733 | 1
|
10734 | ]
|
10735 | ]
|
10736 | ],
|
10737 | [
|
10738 | 8073833,
|
10739 | 9070,
|
10740 | [
|
10741 | [
|
10742 | "0xdf6acb689907609b",
|
10743 | 3
|
10744 | ],
|
10745 | [
|
10746 | "0x37e397fc7c91f5e4",
|
10747 | 1
|
10748 | ],
|
10749 | [
|
10750 | "0x40fe3ad401f8959a",
|
10751 | 5
|
10752 | ],
|
10753 | [
|
10754 | "0xd2bc9897eed08f15",
|
10755 | 2
|
10756 | ],
|
10757 | [
|
10758 | "0xf78b278be53f454c",
|
10759 | 2
|
10760 | ],
|
10761 | [
|
10762 | "0xaf2c0297a23e6d3d",
|
10763 | 1
|
10764 | ],
|
10765 | [
|
10766 | "0x49eaaf1b548a0cb0",
|
10767 | 1
|
10768 | ],
|
10769 | [
|
10770 | "0x91d5df18b0d2cf58",
|
10771 | 1
|
10772 | ],
|
10773 | [
|
10774 | "0xed99c5acb25eedf5",
|
10775 | 2
|
10776 | ],
|
10777 | [
|
10778 | "0xcbca25e39f142387",
|
10779 | 2
|
10780 | ],
|
10781 | [
|
10782 | "0x687ad44ad37f03c2",
|
10783 | 1
|
10784 | ],
|
10785 | [
|
10786 | "0xab3c0572291feb8b",
|
10787 | 1
|
10788 | ],
|
10789 | [
|
10790 | "0xbc9d89904f5b923f",
|
10791 | 1
|
10792 | ],
|
10793 | [
|
10794 | "0x37c8bb1350a9a2a8",
|
10795 | 1
|
10796 | ]
|
10797 | ]
|
10798 | ],
|
10799 | [
|
10800 | 8555825,
|
10801 | 9080,
|
10802 | [
|
10803 | [
|
10804 | "0xdf6acb689907609b",
|
10805 | 3
|
10806 | ],
|
10807 | [
|
10808 | "0x37e397fc7c91f5e4",
|
10809 | 1
|
10810 | ],
|
10811 | [
|
10812 | "0x40fe3ad401f8959a",
|
10813 | 5
|
10814 | ],
|
10815 | [
|
10816 | "0xd2bc9897eed08f15",
|
10817 | 3
|
10818 | ],
|
10819 | [
|
10820 | "0xf78b278be53f454c",
|
10821 | 2
|
10822 | ],
|
10823 | [
|
10824 | "0xaf2c0297a23e6d3d",
|
10825 | 1
|
10826 | ],
|
10827 | [
|
10828 | "0x49eaaf1b548a0cb0",
|
10829 | 1
|
10830 | ],
|
10831 | [
|
10832 | "0x91d5df18b0d2cf58",
|
10833 | 1
|
10834 | ],
|
10835 | [
|
10836 | "0xed99c5acb25eedf5",
|
10837 | 2
|
10838 | ],
|
10839 | [
|
10840 | "0xcbca25e39f142387",
|
10841 | 2
|
10842 | ],
|
10843 | [
|
10844 | "0x687ad44ad37f03c2",
|
10845 | 1
|
10846 | ],
|
10847 | [
|
10848 | "0xab3c0572291feb8b",
|
10849 | 1
|
10850 | ],
|
10851 | [
|
10852 | "0xbc9d89904f5b923f",
|
10853 | 1
|
10854 | ],
|
10855 | [
|
10856 | "0x37c8bb1350a9a2a8",
|
10857 | 1
|
10858 | ]
|
10859 | ]
|
10860 | ],
|
10861 | [
|
10862 | 8945245,
|
10863 | 9090,
|
10864 | [
|
10865 | [
|
10866 | "0xdf6acb689907609b",
|
10867 | 3
|
10868 | ],
|
10869 | [
|
10870 | "0x37e397fc7c91f5e4",
|
10871 | 1
|
10872 | ],
|
10873 | [
|
10874 | "0x40fe3ad401f8959a",
|
10875 | 5
|
10876 | ],
|
10877 | [
|
10878 | "0xd2bc9897eed08f15",
|
10879 | 3
|
10880 | ],
|
10881 | [
|
10882 | "0xf78b278be53f454c",
|
10883 | 2
|
10884 | ],
|
10885 | [
|
10886 | "0xaf2c0297a23e6d3d",
|
10887 | 1
|
10888 | ],
|
10889 | [
|
10890 | "0x49eaaf1b548a0cb0",
|
10891 | 1
|
10892 | ],
|
10893 | [
|
10894 | "0x91d5df18b0d2cf58",
|
10895 | 1
|
10896 | ],
|
10897 | [
|
10898 | "0xed99c5acb25eedf5",
|
10899 | 3
|
10900 | ],
|
10901 | [
|
10902 | "0xcbca25e39f142387",
|
10903 | 2
|
10904 | ],
|
10905 | [
|
10906 | "0x687ad44ad37f03c2",
|
10907 | 1
|
10908 | ],
|
10909 | [
|
10910 | "0xab3c0572291feb8b",
|
10911 | 1
|
10912 | ],
|
10913 | [
|
10914 | "0xbc9d89904f5b923f",
|
10915 | 1
|
10916 | ],
|
10917 | [
|
10918 | "0x37c8bb1350a9a2a8",
|
10919 | 1
|
10920 | ]
|
10921 | ]
|
10922 | ],
|
10923 | [
|
10924 | 9611377,
|
10925 | 9100,
|
10926 | [
|
10927 | [
|
10928 | "0xdf6acb689907609b",
|
10929 | 3
|
10930 | ],
|
10931 | [
|
10932 | "0x37e397fc7c91f5e4",
|
10933 | 1
|
10934 | ],
|
10935 | [
|
10936 | "0x40fe3ad401f8959a",
|
10937 | 5
|
10938 | ],
|
10939 | [
|
10940 | "0xd2bc9897eed08f15",
|
10941 | 3
|
10942 | ],
|
10943 | [
|
10944 | "0xf78b278be53f454c",
|
10945 | 2
|
10946 | ],
|
10947 | [
|
10948 | "0xaf2c0297a23e6d3d",
|
10949 | 1
|
10950 | ],
|
10951 | [
|
10952 | "0x49eaaf1b548a0cb0",
|
10953 | 1
|
10954 | ],
|
10955 | [
|
10956 | "0x91d5df18b0d2cf58",
|
10957 | 1
|
10958 | ],
|
10959 | [
|
10960 | "0xed99c5acb25eedf5",
|
10961 | 3
|
10962 | ],
|
10963 | [
|
10964 | "0xcbca25e39f142387",
|
10965 | 2
|
10966 | ],
|
10967 | [
|
10968 | "0x687ad44ad37f03c2",
|
10969 | 1
|
10970 | ],
|
10971 | [
|
10972 | "0xab3c0572291feb8b",
|
10973 | 1
|
10974 | ],
|
10975 | [
|
10976 | "0xbc9d89904f5b923f",
|
10977 | 1
|
10978 | ],
|
10979 | [
|
10980 | "0x37c8bb1350a9a2a8",
|
10981 | 1
|
10982 | ]
|
10983 | ]
|
10984 | ],
|
10985 | [
|
10986 | 9625129,
|
10987 | 9111,
|
10988 | [
|
10989 | [
|
10990 | "0xdf6acb689907609b",
|
10991 | 3
|
10992 | ],
|
10993 | [
|
10994 | "0x37e397fc7c91f5e4",
|
10995 | 1
|
10996 | ],
|
10997 | [
|
10998 | "0x40fe3ad401f8959a",
|
10999 | 5
|
11000 | ],
|
11001 | [
|
11002 | "0xd2bc9897eed08f15",
|
11003 | 3
|
11004 | ],
|
11005 | [
|
11006 | "0xf78b278be53f454c",
|
11007 | 2
|
11008 | ],
|
11009 | [
|
11010 | "0xaf2c0297a23e6d3d",
|
11011 | 1
|
11012 | ],
|
11013 | [
|
11014 | "0x49eaaf1b548a0cb0",
|
11015 | 1
|
11016 | ],
|
11017 | [
|
11018 | "0x91d5df18b0d2cf58",
|
11019 | 1
|
11020 | ],
|
11021 | [
|
11022 | "0xed99c5acb25eedf5",
|
11023 | 3
|
11024 | ],
|
11025 | [
|
11026 | "0xcbca25e39f142387",
|
11027 | 2
|
11028 | ],
|
11029 | [
|
11030 | "0x687ad44ad37f03c2",
|
11031 | 1
|
11032 | ],
|
11033 | [
|
11034 | "0xab3c0572291feb8b",
|
11035 | 1
|
11036 | ],
|
11037 | [
|
11038 | "0xbc9d89904f5b923f",
|
11039 | 1
|
11040 | ],
|
11041 | [
|
11042 | "0x37c8bb1350a9a2a8",
|
11043 | 1
|
11044 | ]
|
11045 | ]
|
11046 | ],
|
11047 | [
|
11048 | 9866422,
|
11049 | 9122,
|
11050 | [
|
11051 | [
|
11052 | "0xdf6acb689907609b",
|
11053 | 3
|
11054 | ],
|
11055 | [
|
11056 | "0x37e397fc7c91f5e4",
|
11057 | 1
|
11058 | ],
|
11059 | [
|
11060 | "0x40fe3ad401f8959a",
|
11061 | 5
|
11062 | ],
|
11063 | [
|
11064 | "0xd2bc9897eed08f15",
|
11065 | 3
|
11066 | ],
|
11067 | [
|
11068 | "0xf78b278be53f454c",
|
11069 | 2
|
11070 | ],
|
11071 | [
|
11072 | "0xaf2c0297a23e6d3d",
|
11073 | 1
|
11074 | ],
|
11075 | [
|
11076 | "0x49eaaf1b548a0cb0",
|
11077 | 1
|
11078 | ],
|
11079 | [
|
11080 | "0x91d5df18b0d2cf58",
|
11081 | 1
|
11082 | ],
|
11083 | [
|
11084 | "0xed99c5acb25eedf5",
|
11085 | 3
|
11086 | ],
|
11087 | [
|
11088 | "0xcbca25e39f142387",
|
11089 | 2
|
11090 | ],
|
11091 | [
|
11092 | "0x687ad44ad37f03c2",
|
11093 | 1
|
11094 | ],
|
11095 | [
|
11096 | "0xab3c0572291feb8b",
|
11097 | 1
|
11098 | ],
|
11099 | [
|
11100 | "0xbc9d89904f5b923f",
|
11101 | 1
|
11102 | ],
|
11103 | [
|
11104 | "0x37c8bb1350a9a2a8",
|
11105 | 1
|
11106 | ]
|
11107 | ]
|
11108 | ],
|
11109 | [
|
11110 | 10403784,
|
11111 | 9130,
|
11112 | [
|
11113 | [
|
11114 | "0xdf6acb689907609b",
|
11115 | 3
|
11116 | ],
|
11117 | [
|
11118 | "0x37e397fc7c91f5e4",
|
11119 | 1
|
11120 | ],
|
11121 | [
|
11122 | "0x40fe3ad401f8959a",
|
11123 | 5
|
11124 | ],
|
11125 | [
|
11126 | "0xd2bc9897eed08f15",
|
11127 | 3
|
11128 | ],
|
11129 | [
|
11130 | "0xf78b278be53f454c",
|
11131 | 2
|
11132 | ],
|
11133 | [
|
11134 | "0xaf2c0297a23e6d3d",
|
11135 | 1
|
11136 | ],
|
11137 | [
|
11138 | "0x49eaaf1b548a0cb0",
|
11139 | 1
|
11140 | ],
|
11141 | [
|
11142 | "0x91d5df18b0d2cf58",
|
11143 | 1
|
11144 | ],
|
11145 | [
|
11146 | "0xed99c5acb25eedf5",
|
11147 | 3
|
11148 | ],
|
11149 | [
|
11150 | "0xcbca25e39f142387",
|
11151 | 2
|
11152 | ],
|
11153 | [
|
11154 | "0x687ad44ad37f03c2",
|
11155 | 1
|
11156 | ],
|
11157 | [
|
11158 | "0xab3c0572291feb8b",
|
11159 | 1
|
11160 | ],
|
11161 | [
|
11162 | "0xbc9d89904f5b923f",
|
11163 | 1
|
11164 | ],
|
11165 | [
|
11166 | "0x37c8bb1350a9a2a8",
|
11167 | 1
|
11168 | ]
|
11169 | ]
|
11170 | ],
|
11171 | [
|
11172 | 10960765,
|
11173 | 9150,
|
11174 | [
|
11175 | [
|
11176 | "0xdf6acb689907609b",
|
11177 | 3
|
11178 | ],
|
11179 | [
|
11180 | "0x37e397fc7c91f5e4",
|
11181 | 1
|
11182 | ],
|
11183 | [
|
11184 | "0x40fe3ad401f8959a",
|
11185 | 5
|
11186 | ],
|
11187 | [
|
11188 | "0xd2bc9897eed08f15",
|
11189 | 3
|
11190 | ],
|
11191 | [
|
11192 | "0xf78b278be53f454c",
|
11193 | 2
|
11194 | ],
|
11195 | [
|
11196 | "0xaf2c0297a23e6d3d",
|
11197 | 1
|
11198 | ],
|
11199 | [
|
11200 | "0x49eaaf1b548a0cb0",
|
11201 | 1
|
11202 | ],
|
11203 | [
|
11204 | "0x91d5df18b0d2cf58",
|
11205 | 1
|
11206 | ],
|
11207 | [
|
11208 | "0xed99c5acb25eedf5",
|
11209 | 3
|
11210 | ],
|
11211 | [
|
11212 | "0xcbca25e39f142387",
|
11213 | 2
|
11214 | ],
|
11215 | [
|
11216 | "0x687ad44ad37f03c2",
|
11217 | 1
|
11218 | ],
|
11219 | [
|
11220 | "0xab3c0572291feb8b",
|
11221 | 1
|
11222 | ],
|
11223 | [
|
11224 | "0xbc9d89904f5b923f",
|
11225 | 1
|
11226 | ],
|
11227 | [
|
11228 | "0x37c8bb1350a9a2a8",
|
11229 | 1
|
11230 | ]
|
11231 | ]
|
11232 | ],
|
11233 | [
|
11234 | 11006614,
|
11235 | 9151,
|
11236 | [
|
11237 | [
|
11238 | "0xdf6acb689907609b",
|
11239 | 3
|
11240 | ],
|
11241 | [
|
11242 | "0x37e397fc7c91f5e4",
|
11243 | 1
|
11244 | ],
|
11245 | [
|
11246 | "0x40fe3ad401f8959a",
|
11247 | 5
|
11248 | ],
|
11249 | [
|
11250 | "0xd2bc9897eed08f15",
|
11251 | 3
|
11252 | ],
|
11253 | [
|
11254 | "0xf78b278be53f454c",
|
11255 | 2
|
11256 | ],
|
11257 | [
|
11258 | "0xaf2c0297a23e6d3d",
|
11259 | 1
|
11260 | ],
|
11261 | [
|
11262 | "0x49eaaf1b548a0cb0",
|
11263 | 1
|
11264 | ],
|
11265 | [
|
11266 | "0x91d5df18b0d2cf58",
|
11267 | 1
|
11268 | ],
|
11269 | [
|
11270 | "0xed99c5acb25eedf5",
|
11271 | 3
|
11272 | ],
|
11273 | [
|
11274 | "0xcbca25e39f142387",
|
11275 | 2
|
11276 | ],
|
11277 | [
|
11278 | "0x687ad44ad37f03c2",
|
11279 | 1
|
11280 | ],
|
11281 | [
|
11282 | "0xab3c0572291feb8b",
|
11283 | 1
|
11284 | ],
|
11285 | [
|
11286 | "0xbc9d89904f5b923f",
|
11287 | 1
|
11288 | ],
|
11289 | [
|
11290 | "0x37c8bb1350a9a2a8",
|
11291 | 1
|
11292 | ]
|
11293 | ]
|
11294 | ],
|
11295 | [
|
11296 | 11404482,
|
11297 | 9160,
|
11298 | [
|
11299 | [
|
11300 | "0xdf6acb689907609b",
|
11301 | 4
|
11302 | ],
|
11303 | [
|
11304 | "0x37e397fc7c91f5e4",
|
11305 | 1
|
11306 | ],
|
11307 | [
|
11308 | "0x40fe3ad401f8959a",
|
11309 | 5
|
11310 | ],
|
11311 | [
|
11312 | "0xd2bc9897eed08f15",
|
11313 | 3
|
11314 | ],
|
11315 | [
|
11316 | "0xf78b278be53f454c",
|
11317 | 2
|
11318 | ],
|
11319 | [
|
11320 | "0xaf2c0297a23e6d3d",
|
11321 | 2
|
11322 | ],
|
11323 | [
|
11324 | "0x49eaaf1b548a0cb0",
|
11325 | 1
|
11326 | ],
|
11327 | [
|
11328 | "0x91d5df18b0d2cf58",
|
11329 | 1
|
11330 | ],
|
11331 | [
|
11332 | "0xed99c5acb25eedf5",
|
11333 | 3
|
11334 | ],
|
11335 | [
|
11336 | "0xcbca25e39f142387",
|
11337 | 2
|
11338 | ],
|
11339 | [
|
11340 | "0x687ad44ad37f03c2",
|
11341 | 1
|
11342 | ],
|
11343 | [
|
11344 | "0xab3c0572291feb8b",
|
11345 | 1
|
11346 | ],
|
11347 | [
|
11348 | "0xbc9d89904f5b923f",
|
11349 | 1
|
11350 | ],
|
11351 | [
|
11352 | "0x37c8bb1350a9a2a8",
|
11353 | 1
|
11354 | ]
|
11355 | ]
|
11356 | ],
|
11357 | [
|
11358 | 11601803,
|
11359 | 9170,
|
11360 | [
|
11361 | [
|
11362 | "0xdf6acb689907609b",
|
11363 | 4
|
11364 | ],
|
11365 | [
|
11366 | "0x37e397fc7c91f5e4",
|
11367 | 1
|
11368 | ],
|
11369 | [
|
11370 | "0x40fe3ad401f8959a",
|
11371 | 5
|
11372 | ],
|
11373 | [
|
11374 | "0xd2bc9897eed08f15",
|
11375 | 3
|
11376 | ],
|
11377 | [
|
11378 | "0xf78b278be53f454c",
|
11379 | 2
|
11380 | ],
|
11381 | [
|
11382 | "0xaf2c0297a23e6d3d",
|
11383 | 2
|
11384 | ],
|
11385 | [
|
11386 | "0x49eaaf1b548a0cb0",
|
11387 | 1
|
11388 | ],
|
11389 | [
|
11390 | "0x91d5df18b0d2cf58",
|
11391 | 1
|
11392 | ],
|
11393 | [
|
11394 | "0xed99c5acb25eedf5",
|
11395 | 3
|
11396 | ],
|
11397 | [
|
11398 | "0xcbca25e39f142387",
|
11399 | 2
|
11400 | ],
|
11401 | [
|
11402 | "0x687ad44ad37f03c2",
|
11403 | 1
|
11404 | ],
|
11405 | [
|
11406 | "0xab3c0572291feb8b",
|
11407 | 1
|
11408 | ],
|
11409 | [
|
11410 | "0xbc9d89904f5b923f",
|
11411 | 1
|
11412 | ],
|
11413 | [
|
11414 | "0x37c8bb1350a9a2a8",
|
11415 | 1
|
11416 | ]
|
11417 | ]
|
11418 | ],
|
11419 | [
|
11420 | 12008022,
|
11421 | 9180,
|
11422 | [
|
11423 | [
|
11424 | "0xdf6acb689907609b",
|
11425 | 4
|
11426 | ],
|
11427 | [
|
11428 | "0x37e397fc7c91f5e4",
|
11429 | 1
|
11430 | ],
|
11431 | [
|
11432 | "0x40fe3ad401f8959a",
|
11433 | 5
|
11434 | ],
|
11435 | [
|
11436 | "0xd2bc9897eed08f15",
|
11437 | 3
|
11438 | ],
|
11439 | [
|
11440 | "0xf78b278be53f454c",
|
11441 | 2
|
11442 | ],
|
11443 | [
|
11444 | "0xaf2c0297a23e6d3d",
|
11445 | 2
|
11446 | ],
|
11447 | [
|
11448 | "0x49eaaf1b548a0cb0",
|
11449 | 1
|
11450 | ],
|
11451 | [
|
11452 | "0x91d5df18b0d2cf58",
|
11453 | 1
|
11454 | ],
|
11455 | [
|
11456 | "0xed99c5acb25eedf5",
|
11457 | 3
|
11458 | ],
|
11459 | [
|
11460 | "0xcbca25e39f142387",
|
11461 | 2
|
11462 | ],
|
11463 | [
|
11464 | "0x687ad44ad37f03c2",
|
11465 | 1
|
11466 | ],
|
11467 | [
|
11468 | "0xab3c0572291feb8b",
|
11469 | 1
|
11470 | ],
|
11471 | [
|
11472 | "0xbc9d89904f5b923f",
|
11473 | 1
|
11474 | ],
|
11475 | [
|
11476 | "0x37c8bb1350a9a2a8",
|
11477 | 1
|
11478 | ]
|
11479 | ]
|
11480 | ],
|
11481 | [
|
11482 | 12405451,
|
11483 | 9190,
|
11484 | [
|
11485 | [
|
11486 | "0xdf6acb689907609b",
|
11487 | 4
|
11488 | ],
|
11489 | [
|
11490 | "0x37e397fc7c91f5e4",
|
11491 | 1
|
11492 | ],
|
11493 | [
|
11494 | "0x40fe3ad401f8959a",
|
11495 | 6
|
11496 | ],
|
11497 | [
|
11498 | "0xd2bc9897eed08f15",
|
11499 | 3
|
11500 | ],
|
11501 | [
|
11502 | "0xf78b278be53f454c",
|
11503 | 2
|
11504 | ],
|
11505 | [
|
11506 | "0xaf2c0297a23e6d3d",
|
11507 | 2
|
11508 | ],
|
11509 | [
|
11510 | "0x49eaaf1b548a0cb0",
|
11511 | 1
|
11512 | ],
|
11513 | [
|
11514 | "0x91d5df18b0d2cf58",
|
11515 | 1
|
11516 | ],
|
11517 | [
|
11518 | "0xed99c5acb25eedf5",
|
11519 | 3
|
11520 | ],
|
11521 | [
|
11522 | "0xcbca25e39f142387",
|
11523 | 2
|
11524 | ],
|
11525 | [
|
11526 | "0x687ad44ad37f03c2",
|
11527 | 1
|
11528 | ],
|
11529 | [
|
11530 | "0xab3c0572291feb8b",
|
11531 | 1
|
11532 | ],
|
11533 | [
|
11534 | "0xbc9d89904f5b923f",
|
11535 | 1
|
11536 | ],
|
11537 | [
|
11538 | "0x37c8bb1350a9a2a8",
|
11539 | 1
|
11540 | ]
|
11541 | ]
|
11542 | ],
|
11543 | [
|
11544 | 12665416,
|
11545 | 9200,
|
11546 | [
|
11547 | [
|
11548 | "0xdf6acb689907609b",
|
11549 | 4
|
11550 | ],
|
11551 | [
|
11552 | "0x37e397fc7c91f5e4",
|
11553 | 1
|
11554 | ],
|
11555 | [
|
11556 | "0x40fe3ad401f8959a",
|
11557 | 6
|
11558 | ],
|
11559 | [
|
11560 | "0xd2bc9897eed08f15",
|
11561 | 3
|
11562 | ],
|
11563 | [
|
11564 | "0xf78b278be53f454c",
|
11565 | 2
|
11566 | ],
|
11567 | [
|
11568 | "0xaf2c0297a23e6d3d",
|
11569 | 2
|
11570 | ],
|
11571 | [
|
11572 | "0x49eaaf1b548a0cb0",
|
11573 | 1
|
11574 | ],
|
11575 | [
|
11576 | "0x91d5df18b0d2cf58",
|
11577 | 1
|
11578 | ],
|
11579 | [
|
11580 | "0xed99c5acb25eedf5",
|
11581 | 3
|
11582 | ],
|
11583 | [
|
11584 | "0xcbca25e39f142387",
|
11585 | 2
|
11586 | ],
|
11587 | [
|
11588 | "0x687ad44ad37f03c2",
|
11589 | 1
|
11590 | ],
|
11591 | [
|
11592 | "0xab3c0572291feb8b",
|
11593 | 1
|
11594 | ],
|
11595 | [
|
11596 | "0xbc9d89904f5b923f",
|
11597 | 1
|
11598 | ],
|
11599 | [
|
11600 | "0x37c8bb1350a9a2a8",
|
11601 | 1
|
11602 | ]
|
11603 | ]
|
11604 | ],
|
11605 | [
|
11606 | 12909508,
|
11607 | 9220,
|
11608 | [
|
11609 | [
|
11610 | "0xdf6acb689907609b",
|
11611 | 4
|
11612 | ],
|
11613 | [
|
11614 | "0x37e397fc7c91f5e4",
|
11615 | 1
|
11616 | ],
|
11617 | [
|
11618 | "0x40fe3ad401f8959a",
|
11619 | 6
|
11620 | ],
|
11621 | [
|
11622 | "0xd2bc9897eed08f15",
|
11623 | 3
|
11624 | ],
|
11625 | [
|
11626 | "0xf78b278be53f454c",
|
11627 | 2
|
11628 | ],
|
11629 | [
|
11630 | "0xaf2c0297a23e6d3d",
|
11631 | 2
|
11632 | ],
|
11633 | [
|
11634 | "0x49eaaf1b548a0cb0",
|
11635 | 1
|
11636 | ],
|
11637 | [
|
11638 | "0x91d5df18b0d2cf58",
|
11639 | 1
|
11640 | ],
|
11641 | [
|
11642 | "0xed99c5acb25eedf5",
|
11643 | 3
|
11644 | ],
|
11645 | [
|
11646 | "0xcbca25e39f142387",
|
11647 | 2
|
11648 | ],
|
11649 | [
|
11650 | "0x687ad44ad37f03c2",
|
11651 | 1
|
11652 | ],
|
11653 | [
|
11654 | "0xab3c0572291feb8b",
|
11655 | 1
|
11656 | ],
|
11657 | [
|
11658 | "0xbc9d89904f5b923f",
|
11659 | 1
|
11660 | ],
|
11661 | [
|
11662 | "0x37c8bb1350a9a2a8",
|
11663 | 1
|
11664 | ]
|
11665 | ]
|
11666 | ],
|
11667 | [
|
11668 | 13109752,
|
11669 | 9230,
|
11670 | [
|
11671 | [
|
11672 | "0xdf6acb689907609b",
|
11673 | 4
|
11674 | ],
|
11675 | [
|
11676 | "0x37e397fc7c91f5e4",
|
11677 | 1
|
11678 | ],
|
11679 | [
|
11680 | "0x40fe3ad401f8959a",
|
11681 | 6
|
11682 | ],
|
11683 | [
|
11684 | "0xd2bc9897eed08f15",
|
11685 | 3
|
11686 | ],
|
11687 | [
|
11688 | "0xf78b278be53f454c",
|
11689 | 2
|
11690 | ],
|
11691 | [
|
11692 | "0xaf2c0297a23e6d3d",
|
11693 | 2
|
11694 | ],
|
11695 | [
|
11696 | "0x49eaaf1b548a0cb0",
|
11697 | 1
|
11698 | ],
|
11699 | [
|
11700 | "0x91d5df18b0d2cf58",
|
11701 | 1
|
11702 | ],
|
11703 | [
|
11704 | "0xed99c5acb25eedf5",
|
11705 | 3
|
11706 | ],
|
11707 | [
|
11708 | "0xcbca25e39f142387",
|
11709 | 2
|
11710 | ],
|
11711 | [
|
11712 | "0x687ad44ad37f03c2",
|
11713 | 1
|
11714 | ],
|
11715 | [
|
11716 | "0xab3c0572291feb8b",
|
11717 | 1
|
11718 | ],
|
11719 | [
|
11720 | "0xbc9d89904f5b923f",
|
11721 | 1
|
11722 | ],
|
11723 | [
|
11724 | "0x37c8bb1350a9a2a8",
|
11725 | 1
|
11726 | ]
|
11727 | ]
|
11728 | ],
|
11729 | [
|
11730 | 13555777,
|
11731 | 9250,
|
11732 | [
|
11733 | [
|
11734 | "0xdf6acb689907609b",
|
11735 | 4
|
11736 | ],
|
11737 | [
|
11738 | "0x37e397fc7c91f5e4",
|
11739 | 1
|
11740 | ],
|
11741 | [
|
11742 | "0x40fe3ad401f8959a",
|
11743 | 6
|
11744 | ],
|
11745 | [
|
11746 | "0xd2bc9897eed08f15",
|
11747 | 3
|
11748 | ],
|
11749 | [
|
11750 | "0xf78b278be53f454c",
|
11751 | 2
|
11752 | ],
|
11753 | [
|
11754 | "0xaf2c0297a23e6d3d",
|
11755 | 2
|
11756 | ],
|
11757 | [
|
11758 | "0x49eaaf1b548a0cb0",
|
11759 | 1
|
11760 | ],
|
11761 | [
|
11762 | "0x91d5df18b0d2cf58",
|
11763 | 1
|
11764 | ],
|
11765 | [
|
11766 | "0xed99c5acb25eedf5",
|
11767 | 3
|
11768 | ],
|
11769 | [
|
11770 | "0xcbca25e39f142387",
|
11771 | 2
|
11772 | ],
|
11773 | [
|
11774 | "0x687ad44ad37f03c2",
|
11775 | 1
|
11776 | ],
|
11777 | [
|
11778 | "0xab3c0572291feb8b",
|
11779 | 1
|
11780 | ],
|
11781 | [
|
11782 | "0xbc9d89904f5b923f",
|
11783 | 1
|
11784 | ],
|
11785 | [
|
11786 | "0x37c8bb1350a9a2a8",
|
11787 | 1
|
11788 | ]
|
11789 | ]
|
11790 | ],
|
11791 | [
|
11792 | 13727747,
|
11793 | 9260,
|
11794 | [
|
11795 | [
|
11796 | "0xdf6acb689907609b",
|
11797 | 4
|
11798 | ],
|
11799 | [
|
11800 | "0x37e397fc7c91f5e4",
|
11801 | 1
|
11802 | ],
|
11803 | [
|
11804 | "0x40fe3ad401f8959a",
|
11805 | 6
|
11806 | ],
|
11807 | [
|
11808 | "0xd2bc9897eed08f15",
|
11809 | 3
|
11810 | ],
|
11811 | [
|
11812 | "0xf78b278be53f454c",
|
11813 | 2
|
11814 | ],
|
11815 | [
|
11816 | "0xaf2c0297a23e6d3d",
|
11817 | 2
|
11818 | ],
|
11819 | [
|
11820 | "0x49eaaf1b548a0cb0",
|
11821 | 1
|
11822 | ],
|
11823 | [
|
11824 | "0x91d5df18b0d2cf58",
|
11825 | 1
|
11826 | ],
|
11827 | [
|
11828 | "0xed99c5acb25eedf5",
|
11829 | 3
|
11830 | ],
|
11831 | [
|
11832 | "0xcbca25e39f142387",
|
11833 | 2
|
11834 | ],
|
11835 | [
|
11836 | "0x687ad44ad37f03c2",
|
11837 | 1
|
11838 | ],
|
11839 | [
|
11840 | "0xab3c0572291feb8b",
|
11841 | 1
|
11842 | ],
|
11843 | [
|
11844 | "0xbc9d89904f5b923f",
|
11845 | 1
|
11846 | ],
|
11847 | [
|
11848 | "0x37c8bb1350a9a2a8",
|
11849 | 1
|
11850 | ]
|
11851 | ]
|
11852 | ],
|
11853 | [
|
11854 | 14248044,
|
11855 | 9271,
|
11856 | [
|
11857 | [
|
11858 | "0xdf6acb689907609b",
|
11859 | 4
|
11860 | ],
|
11861 | [
|
11862 | "0x37e397fc7c91f5e4",
|
11863 | 1
|
11864 | ],
|
11865 | [
|
11866 | "0x40fe3ad401f8959a",
|
11867 | 6
|
11868 | ],
|
11869 | [
|
11870 | "0xd2bc9897eed08f15",
|
11871 | 3
|
11872 | ],
|
11873 | [
|
11874 | "0xf78b278be53f454c",
|
11875 | 2
|
11876 | ],
|
11877 | [
|
11878 | "0xaf2c0297a23e6d3d",
|
11879 | 2
|
11880 | ],
|
11881 | [
|
11882 | "0x49eaaf1b548a0cb0",
|
11883 | 1
|
11884 | ],
|
11885 | [
|
11886 | "0x91d5df18b0d2cf58",
|
11887 | 1
|
11888 | ],
|
11889 | [
|
11890 | "0xed99c5acb25eedf5",
|
11891 | 3
|
11892 | ],
|
11893 | [
|
11894 | "0xcbca25e39f142387",
|
11895 | 2
|
11896 | ],
|
11897 | [
|
11898 | "0x687ad44ad37f03c2",
|
11899 | 1
|
11900 | ],
|
11901 | [
|
11902 | "0xab3c0572291feb8b",
|
11903 | 1
|
11904 | ],
|
11905 | [
|
11906 | "0xbc9d89904f5b923f",
|
11907 | 1
|
11908 | ],
|
11909 | [
|
11910 | "0x37c8bb1350a9a2a8",
|
11911 | 1
|
11912 | ],
|
11913 | [
|
11914 | "0x17a6bc0d0062aeb3",
|
11915 | 1
|
11916 | ]
|
11917 | ]
|
11918 | ],
|
11919 | [
|
11920 | 14433840,
|
11921 | 9280,
|
11922 | [
|
11923 | [
|
11924 | "0xdf6acb689907609b",
|
11925 | 4
|
11926 | ],
|
11927 | [
|
11928 | "0x37e397fc7c91f5e4",
|
11929 | 1
|
11930 | ],
|
11931 | [
|
11932 | "0x40fe3ad401f8959a",
|
11933 | 6
|
11934 | ],
|
11935 | [
|
11936 | "0xd2bc9897eed08f15",
|
11937 | 3
|
11938 | ],
|
11939 | [
|
11940 | "0xf78b278be53f454c",
|
11941 | 2
|
11942 | ],
|
11943 | [
|
11944 | "0xaf2c0297a23e6d3d",
|
11945 | 2
|
11946 | ],
|
11947 | [
|
11948 | "0x49eaaf1b548a0cb0",
|
11949 | 1
|
11950 | ],
|
11951 | [
|
11952 | "0x91d5df18b0d2cf58",
|
11953 | 1
|
11954 | ],
|
11955 | [
|
11956 | "0xed99c5acb25eedf5",
|
11957 | 3
|
11958 | ],
|
11959 | [
|
11960 | "0xcbca25e39f142387",
|
11961 | 2
|
11962 | ],
|
11963 | [
|
11964 | "0x687ad44ad37f03c2",
|
11965 | 1
|
11966 | ],
|
11967 | [
|
11968 | "0xab3c0572291feb8b",
|
11969 | 1
|
11970 | ],
|
11971 | [
|
11972 | "0xbc9d89904f5b923f",
|
11973 | 1
|
11974 | ],
|
11975 | [
|
11976 | "0x37c8bb1350a9a2a8",
|
11977 | 1
|
11978 | ],
|
11979 | [
|
11980 | "0xf3ff14d5ab527059",
|
11981 | 1
|
11982 | ],
|
11983 | [
|
11984 | "0x17a6bc0d0062aeb3",
|
11985 | 1
|
11986 | ]
|
11987 | ]
|
11988 | ],
|
11989 | [
|
11990 | 14645900,
|
11991 | 9291,
|
11992 | [
|
11993 | [
|
11994 | "0xdf6acb689907609b",
|
11995 | 4
|
11996 | ],
|
11997 | [
|
11998 | "0x37e397fc7c91f5e4",
|
11999 | 1
|
12000 | ],
|
12001 | [
|
12002 | "0x40fe3ad401f8959a",
|
12003 | 6
|
12004 | ],
|
12005 | [
|
12006 | "0xd2bc9897eed08f15",
|
12007 | 3
|
12008 | ],
|
12009 | [
|
12010 | "0xf78b278be53f454c",
|
12011 | 2
|
12012 | ],
|
12013 | [
|
12014 | "0xaf2c0297a23e6d3d",
|
12015 | 2
|
12016 | ],
|
12017 | [
|
12018 | "0x49eaaf1b548a0cb0",
|
12019 | 1
|
12020 | ],
|
12021 | [
|
12022 | "0x91d5df18b0d2cf58",
|
12023 | 1
|
12024 | ],
|
12025 | [
|
12026 | "0xed99c5acb25eedf5",
|
12027 | 3
|
12028 | ],
|
12029 | [
|
12030 | "0xcbca25e39f142387",
|
12031 | 2
|
12032 | ],
|
12033 | [
|
12034 | "0x687ad44ad37f03c2",
|
12035 | 1
|
12036 | ],
|
12037 | [
|
12038 | "0xab3c0572291feb8b",
|
12039 | 1
|
12040 | ],
|
12041 | [
|
12042 | "0xbc9d89904f5b923f",
|
12043 | 1
|
12044 | ],
|
12045 | [
|
12046 | "0x37c8bb1350a9a2a8",
|
12047 | 1
|
12048 | ],
|
12049 | [
|
12050 | "0xf3ff14d5ab527059",
|
12051 | 1
|
12052 | ],
|
12053 | [
|
12054 | "0x17a6bc0d0062aeb3",
|
12055 | 1
|
12056 | ]
|
12057 | ]
|
12058 | ],
|
12059 | [
|
12060 | 15048375,
|
12061 | 9300,
|
12062 | [
|
12063 | [
|
12064 | "0xdf6acb689907609b",
|
12065 | 4
|
12066 | ],
|
12067 | [
|
12068 | "0x37e397fc7c91f5e4",
|
12069 | 1
|
12070 | ],
|
12071 | [
|
12072 | "0x40fe3ad401f8959a",
|
12073 | 6
|
12074 | ],
|
12075 | [
|
12076 | "0xd2bc9897eed08f15",
|
12077 | 3
|
12078 | ],
|
12079 | [
|
12080 | "0xf78b278be53f454c",
|
12081 | 2
|
12082 | ],
|
12083 | [
|
12084 | "0xaf2c0297a23e6d3d",
|
12085 | 2
|
12086 | ],
|
12087 | [
|
12088 | "0x49eaaf1b548a0cb0",
|
12089 | 1
|
12090 | ],
|
12091 | [
|
12092 | "0x91d5df18b0d2cf58",
|
12093 | 1
|
12094 | ],
|
12095 | [
|
12096 | "0xed99c5acb25eedf5",
|
12097 | 3
|
12098 | ],
|
12099 | [
|
12100 | "0xcbca25e39f142387",
|
12101 | 2
|
12102 | ],
|
12103 | [
|
12104 | "0x687ad44ad37f03c2",
|
12105 | 1
|
12106 | ],
|
12107 | [
|
12108 | "0xab3c0572291feb8b",
|
12109 | 1
|
12110 | ],
|
12111 | [
|
12112 | "0xbc9d89904f5b923f",
|
12113 | 1
|
12114 | ],
|
12115 | [
|
12116 | "0x37c8bb1350a9a2a8",
|
12117 | 1
|
12118 | ],
|
12119 | [
|
12120 | "0xf3ff14d5ab527059",
|
12121 | 1
|
12122 | ],
|
12123 | [
|
12124 | "0x17a6bc0d0062aeb3",
|
12125 | 1
|
12126 | ]
|
12127 | ]
|
12128 | ],
|
12129 | [
|
12130 | 15426015,
|
12131 | 9320,
|
12132 | [
|
12133 | [
|
12134 | "0xdf6acb689907609b",
|
12135 | 4
|
12136 | ],
|
12137 | [
|
12138 | "0x37e397fc7c91f5e4",
|
12139 | 1
|
12140 | ],
|
12141 | [
|
12142 | "0x40fe3ad401f8959a",
|
12143 | 6
|
12144 | ],
|
12145 | [
|
12146 | "0xd2bc9897eed08f15",
|
12147 | 3
|
12148 | ],
|
12149 | [
|
12150 | "0xf78b278be53f454c",
|
12151 | 2
|
12152 | ],
|
12153 | [
|
12154 | "0xaf2c0297a23e6d3d",
|
12155 | 2
|
12156 | ],
|
12157 | [
|
12158 | "0x49eaaf1b548a0cb0",
|
12159 | 1
|
12160 | ],
|
12161 | [
|
12162 | "0x91d5df18b0d2cf58",
|
12163 | 1
|
12164 | ],
|
12165 | [
|
12166 | "0xed99c5acb25eedf5",
|
12167 | 3
|
12168 | ],
|
12169 | [
|
12170 | "0xcbca25e39f142387",
|
12171 | 2
|
12172 | ],
|
12173 | [
|
12174 | "0x687ad44ad37f03c2",
|
12175 | 1
|
12176 | ],
|
12177 | [
|
12178 | "0xab3c0572291feb8b",
|
12179 | 1
|
12180 | ],
|
12181 | [
|
12182 | "0xbc9d89904f5b923f",
|
12183 | 1
|
12184 | ],
|
12185 | [
|
12186 | "0x37c8bb1350a9a2a8",
|
12187 | 2
|
12188 | ],
|
12189 | [
|
12190 | "0xf3ff14d5ab527059",
|
12191 | 2
|
12192 | ],
|
12193 | [
|
12194 | "0x17a6bc0d0062aeb3",
|
12195 | 1
|
12196 | ]
|
12197 | ]
|
12198 | ],
|
12199 | [
|
12200 | 15680713,
|
12201 | 9340,
|
12202 | [
|
12203 | [
|
12204 | "0xdf6acb689907609b",
|
12205 | 4
|
12206 | ],
|
12207 | [
|
12208 | "0x37e397fc7c91f5e4",
|
12209 | 1
|
12210 | ],
|
12211 | [
|
12212 | "0x40fe3ad401f8959a",
|
12213 | 6
|
12214 | ],
|
12215 | [
|
12216 | "0xd2bc9897eed08f15",
|
12217 | 3
|
12218 | ],
|
12219 | [
|
12220 | "0xf78b278be53f454c",
|
12221 | 2
|
12222 | ],
|
12223 | [
|
12224 | "0xaf2c0297a23e6d3d",
|
12225 | 2
|
12226 | ],
|
12227 | [
|
12228 | "0x49eaaf1b548a0cb0",
|
12229 | 1
|
12230 | ],
|
12231 | [
|
12232 | "0x91d5df18b0d2cf58",
|
12233 | 1
|
12234 | ],
|
12235 | [
|
12236 | "0xed99c5acb25eedf5",
|
12237 | 3
|
12238 | ],
|
12239 | [
|
12240 | "0xcbca25e39f142387",
|
12241 | 2
|
12242 | ],
|
12243 | [
|
12244 | "0x687ad44ad37f03c2",
|
12245 | 1
|
12246 | ],
|
12247 | [
|
12248 | "0xab3c0572291feb8b",
|
12249 | 1
|
12250 | ],
|
12251 | [
|
12252 | "0xbc9d89904f5b923f",
|
12253 | 1
|
12254 | ],
|
12255 | [
|
12256 | "0x37c8bb1350a9a2a8",
|
12257 | 2
|
12258 | ],
|
12259 | [
|
12260 | "0xf3ff14d5ab527059",
|
12261 | 2
|
12262 | ],
|
12263 | [
|
12264 | "0x17a6bc0d0062aeb3",
|
12265 | 1
|
12266 | ]
|
12267 | ]
|
12268 | ],
|
12269 | [
|
12270 | 15756296,
|
12271 | 9350,
|
12272 | [
|
12273 | [
|
12274 | "0xdf6acb689907609b",
|
12275 | 4
|
12276 | ],
|
12277 | [
|
12278 | "0x37e397fc7c91f5e4",
|
12279 | 1
|
12280 | ],
|
12281 | [
|
12282 | "0x40fe3ad401f8959a",
|
12283 | 6
|
12284 | ],
|
12285 | [
|
12286 | "0xd2bc9897eed08f15",
|
12287 | 3
|
12288 | ],
|
12289 | [
|
12290 | "0xf78b278be53f454c",
|
12291 | 2
|
12292 | ],
|
12293 | [
|
12294 | "0xaf2c0297a23e6d3d",
|
12295 | 2
|
12296 | ],
|
12297 | [
|
12298 | "0x49eaaf1b548a0cb0",
|
12299 | 1
|
12300 | ],
|
12301 | [
|
12302 | "0x91d5df18b0d2cf58",
|
12303 | 1
|
12304 | ],
|
12305 | [
|
12306 | "0xed99c5acb25eedf5",
|
12307 | 3
|
12308 | ],
|
12309 | [
|
12310 | "0xcbca25e39f142387",
|
12311 | 2
|
12312 | ],
|
12313 | [
|
12314 | "0x687ad44ad37f03c2",
|
12315 | 1
|
12316 | ],
|
12317 | [
|
12318 | "0xab3c0572291feb8b",
|
12319 | 1
|
12320 | ],
|
12321 | [
|
12322 | "0xbc9d89904f5b923f",
|
12323 | 1
|
12324 | ],
|
12325 | [
|
12326 | "0x37c8bb1350a9a2a8",
|
12327 | 2
|
12328 | ],
|
12329 | [
|
12330 | "0xf3ff14d5ab527059",
|
12331 | 2
|
12332 | ],
|
12333 | [
|
12334 | "0x17a6bc0d0062aeb3",
|
12335 | 1
|
12336 | ]
|
12337 | ]
|
12338 | ],
|
12339 | [
|
12340 | 15912007,
|
12341 | 9360,
|
12342 | [
|
12343 | [
|
12344 | "0xdf6acb689907609b",
|
12345 | 4
|
12346 | ],
|
12347 | [
|
12348 | "0x37e397fc7c91f5e4",
|
12349 | 1
|
12350 | ],
|
12351 | [
|
12352 | "0x40fe3ad401f8959a",
|
12353 | 6
|
12354 | ],
|
12355 | [
|
12356 | "0xd2bc9897eed08f15",
|
12357 | 3
|
12358 | ],
|
12359 | [
|
12360 | "0xf78b278be53f454c",
|
12361 | 2
|
12362 | ],
|
12363 | [
|
12364 | "0xaf2c0297a23e6d3d",
|
12365 | 2
|
12366 | ],
|
12367 | [
|
12368 | "0x49eaaf1b548a0cb0",
|
12369 | 1
|
12370 | ],
|
12371 | [
|
12372 | "0x91d5df18b0d2cf58",
|
12373 | 1
|
12374 | ],
|
12375 | [
|
12376 | "0xed99c5acb25eedf5",
|
12377 | 3
|
12378 | ],
|
12379 | [
|
12380 | "0xcbca25e39f142387",
|
12381 | 2
|
12382 | ],
|
12383 | [
|
12384 | "0x687ad44ad37f03c2",
|
12385 | 1
|
12386 | ],
|
12387 | [
|
12388 | "0xab3c0572291feb8b",
|
12389 | 1
|
12390 | ],
|
12391 | [
|
12392 | "0xbc9d89904f5b923f",
|
12393 | 1
|
12394 | ],
|
12395 | [
|
12396 | "0x37c8bb1350a9a2a8",
|
12397 | 2
|
12398 | ],
|
12399 | [
|
12400 | "0xf3ff14d5ab527059",
|
12401 | 2
|
12402 | ],
|
12403 | [
|
12404 | "0x17a6bc0d0062aeb3",
|
12405 | 1
|
12406 | ]
|
12407 | ]
|
12408 | ],
|
12409 | [
|
12410 | 16356547,
|
12411 | 9370,
|
12412 | [
|
12413 | [
|
12414 | "0xdf6acb689907609b",
|
12415 | 4
|
12416 | ],
|
12417 | [
|
12418 | "0x37e397fc7c91f5e4",
|
12419 | 1
|
12420 | ],
|
12421 | [
|
12422 | "0x40fe3ad401f8959a",
|
12423 | 6
|
12424 | ],
|
12425 | [
|
12426 | "0xd2bc9897eed08f15",
|
12427 | 3
|
12428 | ],
|
12429 | [
|
12430 | "0xf78b278be53f454c",
|
12431 | 2
|
12432 | ],
|
12433 | [
|
12434 | "0xaf2c0297a23e6d3d",
|
12435 | 2
|
12436 | ],
|
12437 | [
|
12438 | "0x49eaaf1b548a0cb0",
|
12439 | 1
|
12440 | ],
|
12441 | [
|
12442 | "0x91d5df18b0d2cf58",
|
12443 | 1
|
12444 | ],
|
12445 | [
|
12446 | "0xed99c5acb25eedf5",
|
12447 | 3
|
12448 | ],
|
12449 | [
|
12450 | "0xcbca25e39f142387",
|
12451 | 2
|
12452 | ],
|
12453 | [
|
12454 | "0x687ad44ad37f03c2",
|
12455 | 1
|
12456 | ],
|
12457 | [
|
12458 | "0xab3c0572291feb8b",
|
12459 | 1
|
12460 | ],
|
12461 | [
|
12462 | "0xbc9d89904f5b923f",
|
12463 | 1
|
12464 | ],
|
12465 | [
|
12466 | "0x37c8bb1350a9a2a8",
|
12467 | 2
|
12468 | ],
|
12469 | [
|
12470 | "0xf3ff14d5ab527059",
|
12471 | 2
|
12472 | ],
|
12473 | [
|
12474 | "0x17a6bc0d0062aeb3",
|
12475 | 1
|
12476 | ]
|
12477 | ]
|
12478 | ],
|
12479 | [
|
12480 | 17335450,
|
12481 | 9381,
|
12482 | [
|
12483 | [
|
12484 | "0xdf6acb689907609b",
|
12485 | 4
|
12486 | ],
|
12487 | [
|
12488 | "0x37e397fc7c91f5e4",
|
12489 | 1
|
12490 | ],
|
12491 | [
|
12492 | "0x40fe3ad401f8959a",
|
12493 | 6
|
12494 | ],
|
12495 | [
|
12496 | "0xd2bc9897eed08f15",
|
12497 | 3
|
12498 | ],
|
12499 | [
|
12500 | "0xf78b278be53f454c",
|
12501 | 2
|
12502 | ],
|
12503 | [
|
12504 | "0xaf2c0297a23e6d3d",
|
12505 | 2
|
12506 | ],
|
12507 | [
|
12508 | "0x49eaaf1b548a0cb0",
|
12509 | 1
|
12510 | ],
|
12511 | [
|
12512 | "0x91d5df18b0d2cf58",
|
12513 | 1
|
12514 | ],
|
12515 | [
|
12516 | "0xed99c5acb25eedf5",
|
12517 | 3
|
12518 | ],
|
12519 | [
|
12520 | "0xcbca25e39f142387",
|
12521 | 2
|
12522 | ],
|
12523 | [
|
12524 | "0x687ad44ad37f03c2",
|
12525 | 1
|
12526 | ],
|
12527 | [
|
12528 | "0xab3c0572291feb8b",
|
12529 | 1
|
12530 | ],
|
12531 | [
|
12532 | "0xbc9d89904f5b923f",
|
12533 | 1
|
12534 | ],
|
12535 | [
|
12536 | "0x37c8bb1350a9a2a8",
|
12537 | 3
|
12538 | ],
|
12539 | [
|
12540 | "0xf3ff14d5ab527059",
|
12541 | 3
|
12542 | ],
|
12543 | [
|
12544 | "0x17a6bc0d0062aeb3",
|
12545 | 1
|
12546 | ]
|
12547 | ]
|
12548 | ],
|
12549 | [
|
12550 | 18062739,
|
12551 | 9420,
|
12552 | [
|
12553 | [
|
12554 | "0xdf6acb689907609b",
|
12555 | 4
|
12556 | ],
|
12557 | [
|
12558 | "0x37e397fc7c91f5e4",
|
12559 | 2
|
12560 | ],
|
12561 | [
|
12562 | "0x40fe3ad401f8959a",
|
12563 | 6
|
12564 | ],
|
12565 | [
|
12566 | "0xd2bc9897eed08f15",
|
12567 | 3
|
12568 | ],
|
12569 | [
|
12570 | "0xf78b278be53f454c",
|
12571 | 2
|
12572 | ],
|
12573 | [
|
12574 | "0xaf2c0297a23e6d3d",
|
12575 | 4
|
12576 | ],
|
12577 | [
|
12578 | "0x49eaaf1b548a0cb0",
|
12579 | 2
|
12580 | ],
|
12581 | [
|
12582 | "0x91d5df18b0d2cf58",
|
12583 | 2
|
12584 | ],
|
12585 | [
|
12586 | "0xed99c5acb25eedf5",
|
12587 | 3
|
12588 | ],
|
12589 | [
|
12590 | "0xcbca25e39f142387",
|
12591 | 2
|
12592 | ],
|
12593 | [
|
12594 | "0x687ad44ad37f03c2",
|
12595 | 1
|
12596 | ],
|
12597 | [
|
12598 | "0xab3c0572291feb8b",
|
12599 | 1
|
12600 | ],
|
12601 | [
|
12602 | "0xbc9d89904f5b923f",
|
12603 | 1
|
12604 | ],
|
12605 | [
|
12606 | "0x37c8bb1350a9a2a8",
|
12607 | 4
|
12608 | ],
|
12609 | [
|
12610 | "0xf3ff14d5ab527059",
|
12611 | 3
|
12612 | ],
|
12613 | [
|
12614 | "0x17a6bc0d0062aeb3",
|
12615 | 1
|
12616 | ],
|
12617 | [
|
12618 | "0x18ef58a3b67ba770",
|
12619 | 1
|
12620 | ]
|
12621 | ]
|
12622 | ],
|
12623 | [
|
12624 | 18625000,
|
12625 | 9430,
|
12626 | [
|
12627 | [
|
12628 | "0xdf6acb689907609b",
|
12629 | 4
|
12630 | ],
|
12631 | [
|
12632 | "0x37e397fc7c91f5e4",
|
12633 | 2
|
12634 | ],
|
12635 | [
|
12636 | "0x40fe3ad401f8959a",
|
12637 | 6
|
12638 | ],
|
12639 | [
|
12640 | "0xd2bc9897eed08f15",
|
12641 | 3
|
12642 | ],
|
12643 | [
|
12644 | "0xf78b278be53f454c",
|
12645 | 2
|
12646 | ],
|
12647 | [
|
12648 | "0xaf2c0297a23e6d3d",
|
12649 | 4
|
12650 | ],
|
12651 | [
|
12652 | "0x49eaaf1b548a0cb0",
|
12653 | 2
|
12654 | ],
|
12655 | [
|
12656 | "0x91d5df18b0d2cf58",
|
12657 | 2
|
12658 | ],
|
12659 | [
|
12660 | "0xed99c5acb25eedf5",
|
12661 | 3
|
12662 | ],
|
12663 | [
|
12664 | "0xcbca25e39f142387",
|
12665 | 2
|
12666 | ],
|
12667 | [
|
12668 | "0x687ad44ad37f03c2",
|
12669 | 1
|
12670 | ],
|
12671 | [
|
12672 | "0xab3c0572291feb8b",
|
12673 | 1
|
12674 | ],
|
12675 | [
|
12676 | "0xbc9d89904f5b923f",
|
12677 | 1
|
12678 | ],
|
12679 | [
|
12680 | "0x37c8bb1350a9a2a8",
|
12681 | 4
|
12682 | ],
|
12683 | [
|
12684 | "0xf3ff14d5ab527059",
|
12685 | 3
|
12686 | ],
|
12687 | [
|
12688 | "0x17a6bc0d0062aeb3",
|
12689 | 1
|
12690 | ],
|
12691 | [
|
12692 | "0x18ef58a3b67ba770",
|
12693 | 1
|
12694 | ]
|
12695 | ]
|
12696 | ],
|
12697 | [
|
12698 | 20465806,
|
12699 | 1000000,
|
12700 | [
|
12701 | [
|
12702 | "0xdf6acb689907609b",
|
12703 | 4
|
12704 | ],
|
12705 | [
|
12706 | "0x37e397fc7c91f5e4",
|
12707 | 2
|
12708 | ],
|
12709 | [
|
12710 | "0x40fe3ad401f8959a",
|
12711 | 6
|
12712 | ],
|
12713 | [
|
12714 | "0xd2bc9897eed08f15",
|
12715 | 3
|
12716 | ],
|
12717 | [
|
12718 | "0xf78b278be53f454c",
|
12719 | 2
|
12720 | ],
|
12721 | [
|
12722 | "0xaf2c0297a23e6d3d",
|
12723 | 5
|
12724 | ],
|
12725 | [
|
12726 | "0x49eaaf1b548a0cb0",
|
12727 | 3
|
12728 | ],
|
12729 | [
|
12730 | "0x91d5df18b0d2cf58",
|
12731 | 2
|
12732 | ],
|
12733 | [
|
12734 | "0x2a5e924655399e60",
|
12735 | 1
|
12736 | ],
|
12737 | [
|
12738 | "0xed99c5acb25eedf5",
|
12739 | 3
|
12740 | ],
|
12741 | [
|
12742 | "0xcbca25e39f142387",
|
12743 | 2
|
12744 | ],
|
12745 | [
|
12746 | "0x687ad44ad37f03c2",
|
12747 | 1
|
12748 | ],
|
12749 | [
|
12750 | "0xab3c0572291feb8b",
|
12751 | 1
|
12752 | ],
|
12753 | [
|
12754 | "0xbc9d89904f5b923f",
|
12755 | 1
|
12756 | ],
|
12757 | [
|
12758 | "0x37c8bb1350a9a2a8",
|
12759 | 4
|
12760 | ],
|
12761 | [
|
12762 | "0xf3ff14d5ab527059",
|
12763 | 3
|
12764 | ],
|
12765 | [
|
12766 | "0x17a6bc0d0062aeb3",
|
12767 | 1
|
12768 | ],
|
12769 | [
|
12770 | "0x18ef58a3b67ba770",
|
12771 | 1
|
12772 | ]
|
12773 | ]
|
12774 | ],
|
12775 | [
|
12776 | 21570000,
|
12777 | 1001000,
|
12778 | [
|
12779 | [
|
12780 | "0xdf6acb689907609b",
|
12781 | 4
|
12782 | ],
|
12783 | [
|
12784 | "0x37e397fc7c91f5e4",
|
12785 | 2
|
12786 | ],
|
12787 | [
|
12788 | "0x40fe3ad401f8959a",
|
12789 | 6
|
12790 | ],
|
12791 | [
|
12792 | "0xd2bc9897eed08f15",
|
12793 | 3
|
12794 | ],
|
12795 | [
|
12796 | "0xf78b278be53f454c",
|
12797 | 2
|
12798 | ],
|
12799 | [
|
12800 | "0xaf2c0297a23e6d3d",
|
12801 | 7
|
12802 | ],
|
12803 | [
|
12804 | "0x49eaaf1b548a0cb0",
|
12805 | 3
|
12806 | ],
|
12807 | [
|
12808 | "0x91d5df18b0d2cf58",
|
12809 | 2
|
12810 | ],
|
12811 | [
|
12812 | "0x2a5e924655399e60",
|
12813 | 1
|
12814 | ],
|
12815 | [
|
12816 | "0xed99c5acb25eedf5",
|
12817 | 3
|
12818 | ],
|
12819 | [
|
12820 | "0xcbca25e39f142387",
|
12821 | 2
|
12822 | ],
|
12823 | [
|
12824 | "0x687ad44ad37f03c2",
|
12825 | 1
|
12826 | ],
|
12827 | [
|
12828 | "0xab3c0572291feb8b",
|
12829 | 1
|
12830 | ],
|
12831 | [
|
12832 | "0xbc9d89904f5b923f",
|
12833 | 1
|
12834 | ],
|
12835 | [
|
12836 | "0x37c8bb1350a9a2a8",
|
12837 | 4
|
12838 | ],
|
12839 | [
|
12840 | "0xf3ff14d5ab527059",
|
12841 | 3
|
12842 | ],
|
12843 | [
|
12844 | "0x17a6bc0d0062aeb3",
|
12845 | 1
|
12846 | ],
|
12847 | [
|
12848 | "0x18ef58a3b67ba770",
|
12849 | 1
|
12850 | ],
|
12851 | [
|
12852 | "0xfbc577b9d747efd6",
|
12853 | 1
|
12854 | ]
|
12855 | ]
|
12856 | ],
|
12857 | [
|
12858 | 21786291,
|
12859 | 1001002,
|
12860 | [
|
12861 | [
|
12862 | "0xdf6acb689907609b",
|
12863 | 4
|
12864 | ],
|
12865 | [
|
12866 | "0x37e397fc7c91f5e4",
|
12867 | 2
|
12868 | ],
|
12869 | [
|
12870 | "0x40fe3ad401f8959a",
|
12871 | 6
|
12872 | ],
|
12873 | [
|
12874 | "0xd2bc9897eed08f15",
|
12875 | 3
|
12876 | ],
|
12877 | [
|
12878 | "0xf78b278be53f454c",
|
12879 | 2
|
12880 | ],
|
12881 | [
|
12882 | "0xaf2c0297a23e6d3d",
|
12883 | 7
|
12884 | ],
|
12885 | [
|
12886 | "0x49eaaf1b548a0cb0",
|
12887 | 3
|
12888 | ],
|
12889 | [
|
12890 | "0x91d5df18b0d2cf58",
|
12891 | 2
|
12892 | ],
|
12893 | [
|
12894 | "0x2a5e924655399e60",
|
12895 | 1
|
12896 | ],
|
12897 | [
|
12898 | "0xed99c5acb25eedf5",
|
12899 | 3
|
12900 | ],
|
12901 | [
|
12902 | "0xcbca25e39f142387",
|
12903 | 2
|
12904 | ],
|
12905 | [
|
12906 | "0x687ad44ad37f03c2",
|
12907 | 1
|
12908 | ],
|
12909 | [
|
12910 | "0xab3c0572291feb8b",
|
12911 | 1
|
12912 | ],
|
12913 | [
|
12914 | "0xbc9d89904f5b923f",
|
12915 | 1
|
12916 | ],
|
12917 | [
|
12918 | "0x37c8bb1350a9a2a8",
|
12919 | 4
|
12920 | ],
|
12921 | [
|
12922 | "0xf3ff14d5ab527059",
|
12923 | 3
|
12924 | ],
|
12925 | [
|
12926 | "0x17a6bc0d0062aeb3",
|
12927 | 1
|
12928 | ],
|
12929 | [
|
12930 | "0x18ef58a3b67ba770",
|
12931 | 1
|
12932 | ],
|
12933 | [
|
12934 | "0xfbc577b9d747efd6",
|
12935 | 1
|
12936 | ]
|
12937 | ]
|
12938 | ],
|
12939 | [
|
12940 | 22515962,
|
12941 | 1001003,
|
12942 | [
|
12943 | [
|
12944 | "0xdf6acb689907609b",
|
12945 | 4
|
12946 | ],
|
12947 | [
|
12948 | "0x37e397fc7c91f5e4",
|
12949 | 2
|
12950 | ],
|
12951 | [
|
12952 | "0x40fe3ad401f8959a",
|
12953 | 6
|
12954 | ],
|
12955 | [
|
12956 | "0xd2bc9897eed08f15",
|
12957 | 3
|
12958 | ],
|
12959 | [
|
12960 | "0xf78b278be53f454c",
|
12961 | 2
|
12962 | ],
|
12963 | [
|
12964 | "0xaf2c0297a23e6d3d",
|
12965 | 7
|
12966 | ],
|
12967 | [
|
12968 | "0x49eaaf1b548a0cb0",
|
12969 | 3
|
12970 | ],
|
12971 | [
|
12972 | "0x91d5df18b0d2cf58",
|
12973 | 2
|
12974 | ],
|
12975 | [
|
12976 | "0x2a5e924655399e60",
|
12977 | 1
|
12978 | ],
|
12979 | [
|
12980 | "0xed99c5acb25eedf5",
|
12981 | 3
|
12982 | ],
|
12983 | [
|
12984 | "0xcbca25e39f142387",
|
12985 | 2
|
12986 | ],
|
12987 | [
|
12988 | "0x687ad44ad37f03c2",
|
12989 | 1
|
12990 | ],
|
12991 | [
|
12992 | "0xab3c0572291feb8b",
|
12993 | 1
|
12994 | ],
|
12995 | [
|
12996 | "0xbc9d89904f5b923f",
|
12997 | 1
|
12998 | ],
|
12999 | [
|
13000 | "0x37c8bb1350a9a2a8",
|
13001 | 4
|
13002 | ],
|
13003 | [
|
13004 | "0xf3ff14d5ab527059",
|
13005 | 3
|
13006 | ],
|
13007 | [
|
13008 | "0x17a6bc0d0062aeb3",
|
13009 | 1
|
13010 | ],
|
13011 | [
|
13012 | "0x18ef58a3b67ba770",
|
13013 | 1
|
13014 | ],
|
13015 | [
|
13016 | "0xfbc577b9d747efd6",
|
13017 | 1
|
13018 | ]
|
13019 | ]
|
13020 | ],
|
13021 | [
|
13022 | 22790000,
|
13023 | 1002000,
|
13024 | [
|
13025 | [
|
13026 | "0xdf6acb689907609b",
|
13027 | 4
|
13028 | ],
|
13029 | [
|
13030 | "0x37e397fc7c91f5e4",
|
13031 | 2
|
13032 | ],
|
13033 | [
|
13034 | "0x40fe3ad401f8959a",
|
13035 | 6
|
13036 | ],
|
13037 | [
|
13038 | "0xd2bc9897eed08f15",
|
13039 | 3
|
13040 | ],
|
13041 | [
|
13042 | "0xf78b278be53f454c",
|
13043 | 2
|
13044 | ],
|
13045 | [
|
13046 | "0xaf2c0297a23e6d3d",
|
13047 | 10
|
13048 | ],
|
13049 | [
|
13050 | "0x49eaaf1b548a0cb0",
|
13051 | 3
|
13052 | ],
|
13053 | [
|
13054 | "0x91d5df18b0d2cf58",
|
13055 | 2
|
13056 | ],
|
13057 | [
|
13058 | "0x2a5e924655399e60",
|
13059 | 1
|
13060 | ],
|
13061 | [
|
13062 | "0xed99c5acb25eedf5",
|
13063 | 3
|
13064 | ],
|
13065 | [
|
13066 | "0xcbca25e39f142387",
|
13067 | 2
|
13068 | ],
|
13069 | [
|
13070 | "0x687ad44ad37f03c2",
|
13071 | 1
|
13072 | ],
|
13073 | [
|
13074 | "0xab3c0572291feb8b",
|
13075 | 1
|
13076 | ],
|
13077 | [
|
13078 | "0xbc9d89904f5b923f",
|
13079 | 1
|
13080 | ],
|
13081 | [
|
13082 | "0x37c8bb1350a9a2a8",
|
13083 | 4
|
13084 | ],
|
13085 | [
|
13086 | "0xf3ff14d5ab527059",
|
13087 | 3
|
13088 | ],
|
13089 | [
|
13090 | "0x17a6bc0d0062aeb3",
|
13091 | 1
|
13092 | ],
|
13093 | [
|
13094 | "0x18ef58a3b67ba770",
|
13095 | 1
|
13096 | ],
|
13097 | [
|
13098 | "0xfbc577b9d747efd6",
|
13099 | 1
|
13100 | ]
|
13101 | ]
|
13102 | ],
|
13103 | [
|
13104 | 23176015,
|
13105 | 1002001,
|
13106 | [
|
13107 | [
|
13108 | "0xdf6acb689907609b",
|
13109 | 4
|
13110 | ],
|
13111 | [
|
13112 | "0x37e397fc7c91f5e4",
|
13113 | 2
|
13114 | ],
|
13115 | [
|
13116 | "0x40fe3ad401f8959a",
|
13117 | 6
|
13118 | ],
|
13119 | [
|
13120 | "0xd2bc9897eed08f15",
|
13121 | 3
|
13122 | ],
|
13123 | [
|
13124 | "0xf78b278be53f454c",
|
13125 | 2
|
13126 | ],
|
13127 | [
|
13128 | "0xaf2c0297a23e6d3d",
|
13129 | 10
|
13130 | ],
|
13131 | [
|
13132 | "0x49eaaf1b548a0cb0",
|
13133 | 3
|
13134 | ],
|
13135 | [
|
13136 | "0x91d5df18b0d2cf58",
|
13137 | 2
|
13138 | ],
|
13139 | [
|
13140 | "0x2a5e924655399e60",
|
13141 | 1
|
13142 | ],
|
13143 | [
|
13144 | "0xed99c5acb25eedf5",
|
13145 | 3
|
13146 | ],
|
13147 | [
|
13148 | "0xcbca25e39f142387",
|
13149 | 2
|
13150 | ],
|
13151 | [
|
13152 | "0x687ad44ad37f03c2",
|
13153 | 1
|
13154 | ],
|
13155 | [
|
13156 | "0xab3c0572291feb8b",
|
13157 | 1
|
13158 | ],
|
13159 | [
|
13160 | "0xbc9d89904f5b923f",
|
13161 | 1
|
13162 | ],
|
13163 | [
|
13164 | "0x37c8bb1350a9a2a8",
|
13165 | 4
|
13166 | ],
|
13167 | [
|
13168 | "0xf3ff14d5ab527059",
|
13169 | 3
|
13170 | ],
|
13171 | [
|
13172 | "0x17a6bc0d0062aeb3",
|
13173 | 1
|
13174 | ],
|
13175 | [
|
13176 | "0x18ef58a3b67ba770",
|
13177 | 1
|
13178 | ],
|
13179 | [
|
13180 | "0xfbc577b9d747efd6",
|
13181 | 1
|
13182 | ]
|
13183 | ]
|
13184 | ],
|
13185 | [
|
13186 | 23450253,
|
13187 | 1002004,
|
13188 | [
|
13189 | [
|
13190 | "0xdf6acb689907609b",
|
13191 | 4
|
13192 | ],
|
13193 | [
|
13194 | "0x37e397fc7c91f5e4",
|
13195 | 2
|
13196 | ],
|
13197 | [
|
13198 | "0x40fe3ad401f8959a",
|
13199 | 6
|
13200 | ],
|
13201 | [
|
13202 | "0xd2bc9897eed08f15",
|
13203 | 3
|
13204 | ],
|
13205 | [
|
13206 | "0xf78b278be53f454c",
|
13207 | 2
|
13208 | ],
|
13209 | [
|
13210 | "0xaf2c0297a23e6d3d",
|
13211 | 10
|
13212 | ],
|
13213 | [
|
13214 | "0x49eaaf1b548a0cb0",
|
13215 | 3
|
13216 | ],
|
13217 | [
|
13218 | "0x91d5df18b0d2cf58",
|
13219 | 2
|
13220 | ],
|
13221 | [
|
13222 | "0x2a5e924655399e60",
|
13223 | 1
|
13224 | ],
|
13225 | [
|
13226 | "0xed99c5acb25eedf5",
|
13227 | 3
|
13228 | ],
|
13229 | [
|
13230 | "0xcbca25e39f142387",
|
13231 | 2
|
13232 | ],
|
13233 | [
|
13234 | "0x687ad44ad37f03c2",
|
13235 | 1
|
13236 | ],
|
13237 | [
|
13238 | "0xab3c0572291feb8b",
|
13239 | 1
|
13240 | ],
|
13241 | [
|
13242 | "0xbc9d89904f5b923f",
|
13243 | 1
|
13244 | ],
|
13245 | [
|
13246 | "0x37c8bb1350a9a2a8",
|
13247 | 4
|
13248 | ],
|
13249 | [
|
13250 | "0xf3ff14d5ab527059",
|
13251 | 3
|
13252 | ],
|
13253 | [
|
13254 | "0x17a6bc0d0062aeb3",
|
13255 | 1
|
13256 | ],
|
13257 | [
|
13258 | "0x18ef58a3b67ba770",
|
13259 | 1
|
13260 | ],
|
13261 | [
|
13262 | "0xfbc577b9d747efd6",
|
13263 | 1
|
13264 | ]
|
13265 | ]
|
13266 | ],
|
13267 | [
|
13268 | 23565293,
|
13269 | 1002005,
|
13270 | [
|
13271 | [
|
13272 | "0xdf6acb689907609b",
|
13273 | 4
|
13274 | ],
|
13275 | [
|
13276 | "0x37e397fc7c91f5e4",
|
13277 | 2
|
13278 | ],
|
13279 | [
|
13280 | "0x40fe3ad401f8959a",
|
13281 | 6
|
13282 | ],
|
13283 | [
|
13284 | "0xd2bc9897eed08f15",
|
13285 | 3
|
13286 | ],
|
13287 | [
|
13288 | "0xf78b278be53f454c",
|
13289 | 2
|
13290 | ],
|
13291 | [
|
13292 | "0xaf2c0297a23e6d3d",
|
13293 | 10
|
13294 | ],
|
13295 | [
|
13296 | "0x49eaaf1b548a0cb0",
|
13297 | 3
|
13298 | ],
|
13299 | [
|
13300 | "0x91d5df18b0d2cf58",
|
13301 | 2
|
13302 | ],
|
13303 | [
|
13304 | "0x2a5e924655399e60",
|
13305 | 1
|
13306 | ],
|
13307 | [
|
13308 | "0xed99c5acb25eedf5",
|
13309 | 3
|
13310 | ],
|
13311 | [
|
13312 | "0xcbca25e39f142387",
|
13313 | 2
|
13314 | ],
|
13315 | [
|
13316 | "0x687ad44ad37f03c2",
|
13317 | 1
|
13318 | ],
|
13319 | [
|
13320 | "0xab3c0572291feb8b",
|
13321 | 1
|
13322 | ],
|
13323 | [
|
13324 | "0xbc9d89904f5b923f",
|
13325 | 1
|
13326 | ],
|
13327 | [
|
13328 | "0x37c8bb1350a9a2a8",
|
13329 | 4
|
13330 | ],
|
13331 | [
|
13332 | "0xf3ff14d5ab527059",
|
13333 | 3
|
13334 | ],
|
13335 | [
|
13336 | "0x17a6bc0d0062aeb3",
|
13337 | 1
|
13338 | ],
|
13339 | [
|
13340 | "0x18ef58a3b67ba770",
|
13341 | 1
|
13342 | ],
|
13343 | [
|
13344 | "0xfbc577b9d747efd6",
|
13345 | 1
|
13346 | ]
|
13347 | ]
|
13348 | ]
|
13349 | ];
|
13350 |
|
13351 | const upgrades$2 = [
|
13352 | [
|
13353 | 0,
|
13354 | 0,
|
13355 | [
|
13356 | [
|
13357 | "0xdf6acb689907609b",
|
13358 | 3
|
13359 | ],
|
13360 | [
|
13361 | "0x37e397fc7c91f5e4",
|
13362 | 1
|
13363 | ],
|
13364 | [
|
13365 | "0x40fe3ad401f8959a",
|
13366 | 4
|
13367 | ],
|
13368 | [
|
13369 | "0xd2bc9897eed08f15",
|
13370 | 2
|
13371 | ],
|
13372 | [
|
13373 | "0xf78b278be53f454c",
|
13374 | 2
|
13375 | ],
|
13376 | [
|
13377 | "0xaf2c0297a23e6d3d",
|
13378 | 3
|
13379 | ],
|
13380 | [
|
13381 | "0xed99c5acb25eedf5",
|
13382 | 2
|
13383 | ],
|
13384 | [
|
13385 | "0xcbca25e39f142387",
|
13386 | 2
|
13387 | ],
|
13388 | [
|
13389 | "0x687ad44ad37f03c2",
|
13390 | 1
|
13391 | ],
|
13392 | [
|
13393 | "0xab3c0572291feb8b",
|
13394 | 1
|
13395 | ],
|
13396 | [
|
13397 | "0xbc9d89904f5b923f",
|
13398 | 1
|
13399 | ],
|
13400 | [
|
13401 | "0x37c8bb1350a9a2a8",
|
13402 | 1
|
13403 | ]
|
13404 | ]
|
13405 | ],
|
13406 | [
|
13407 | 29231,
|
13408 | 1,
|
13409 | [
|
13410 | [
|
13411 | "0xdf6acb689907609b",
|
13412 | 3
|
13413 | ],
|
13414 | [
|
13415 | "0x37e397fc7c91f5e4",
|
13416 | 1
|
13417 | ],
|
13418 | [
|
13419 | "0x40fe3ad401f8959a",
|
13420 | 4
|
13421 | ],
|
13422 | [
|
13423 | "0xd2bc9897eed08f15",
|
13424 | 2
|
13425 | ],
|
13426 | [
|
13427 | "0xf78b278be53f454c",
|
13428 | 2
|
13429 | ],
|
13430 | [
|
13431 | "0xaf2c0297a23e6d3d",
|
13432 | 3
|
13433 | ],
|
13434 | [
|
13435 | "0xed99c5acb25eedf5",
|
13436 | 2
|
13437 | ],
|
13438 | [
|
13439 | "0xcbca25e39f142387",
|
13440 | 2
|
13441 | ],
|
13442 | [
|
13443 | "0x687ad44ad37f03c2",
|
13444 | 1
|
13445 | ],
|
13446 | [
|
13447 | "0xab3c0572291feb8b",
|
13448 | 1
|
13449 | ],
|
13450 | [
|
13451 | "0xbc9d89904f5b923f",
|
13452 | 1
|
13453 | ],
|
13454 | [
|
13455 | "0x37c8bb1350a9a2a8",
|
13456 | 1
|
13457 | ]
|
13458 | ]
|
13459 | ],
|
13460 | [
|
13461 | 188836,
|
13462 | 5,
|
13463 | [
|
13464 | [
|
13465 | "0xdf6acb689907609b",
|
13466 | 3
|
13467 | ],
|
13468 | [
|
13469 | "0x37e397fc7c91f5e4",
|
13470 | 1
|
13471 | ],
|
13472 | [
|
13473 | "0x40fe3ad401f8959a",
|
13474 | 4
|
13475 | ],
|
13476 | [
|
13477 | "0xd2bc9897eed08f15",
|
13478 | 2
|
13479 | ],
|
13480 | [
|
13481 | "0xf78b278be53f454c",
|
13482 | 2
|
13483 | ],
|
13484 | [
|
13485 | "0xaf2c0297a23e6d3d",
|
13486 | 3
|
13487 | ],
|
13488 | [
|
13489 | "0xed99c5acb25eedf5",
|
13490 | 2
|
13491 | ],
|
13492 | [
|
13493 | "0xcbca25e39f142387",
|
13494 | 2
|
13495 | ],
|
13496 | [
|
13497 | "0x687ad44ad37f03c2",
|
13498 | 1
|
13499 | ],
|
13500 | [
|
13501 | "0xab3c0572291feb8b",
|
13502 | 1
|
13503 | ],
|
13504 | [
|
13505 | "0xbc9d89904f5b923f",
|
13506 | 1
|
13507 | ],
|
13508 | [
|
13509 | "0x37c8bb1350a9a2a8",
|
13510 | 1
|
13511 | ]
|
13512 | ]
|
13513 | ],
|
13514 | [
|
13515 | 199405,
|
13516 | 6,
|
13517 | [
|
13518 | [
|
13519 | "0xdf6acb689907609b",
|
13520 | 3
|
13521 | ],
|
13522 | [
|
13523 | "0x37e397fc7c91f5e4",
|
13524 | 1
|
13525 | ],
|
13526 | [
|
13527 | "0x40fe3ad401f8959a",
|
13528 | 4
|
13529 | ],
|
13530 | [
|
13531 | "0xd2bc9897eed08f15",
|
13532 | 2
|
13533 | ],
|
13534 | [
|
13535 | "0xf78b278be53f454c",
|
13536 | 2
|
13537 | ],
|
13538 | [
|
13539 | "0xaf2c0297a23e6d3d",
|
13540 | 3
|
13541 | ],
|
13542 | [
|
13543 | "0xed99c5acb25eedf5",
|
13544 | 2
|
13545 | ],
|
13546 | [
|
13547 | "0xcbca25e39f142387",
|
13548 | 2
|
13549 | ],
|
13550 | [
|
13551 | "0x687ad44ad37f03c2",
|
13552 | 1
|
13553 | ],
|
13554 | [
|
13555 | "0xab3c0572291feb8b",
|
13556 | 1
|
13557 | ],
|
13558 | [
|
13559 | "0xbc9d89904f5b923f",
|
13560 | 1
|
13561 | ],
|
13562 | [
|
13563 | "0x37c8bb1350a9a2a8",
|
13564 | 1
|
13565 | ]
|
13566 | ]
|
13567 | ],
|
13568 | [
|
13569 | 214264,
|
13570 | 7,
|
13571 | [
|
13572 | [
|
13573 | "0xdf6acb689907609b",
|
13574 | 3
|
13575 | ],
|
13576 | [
|
13577 | "0x37e397fc7c91f5e4",
|
13578 | 1
|
13579 | ],
|
13580 | [
|
13581 | "0x40fe3ad401f8959a",
|
13582 | 4
|
13583 | ],
|
13584 | [
|
13585 | "0xd2bc9897eed08f15",
|
13586 | 2
|
13587 | ],
|
13588 | [
|
13589 | "0xf78b278be53f454c",
|
13590 | 2
|
13591 | ],
|
13592 | [
|
13593 | "0xaf2c0297a23e6d3d",
|
13594 | 3
|
13595 | ],
|
13596 | [
|
13597 | "0xed99c5acb25eedf5",
|
13598 | 2
|
13599 | ],
|
13600 | [
|
13601 | "0xcbca25e39f142387",
|
13602 | 2
|
13603 | ],
|
13604 | [
|
13605 | "0x687ad44ad37f03c2",
|
13606 | 1
|
13607 | ],
|
13608 | [
|
13609 | "0xab3c0572291feb8b",
|
13610 | 1
|
13611 | ],
|
13612 | [
|
13613 | "0xbc9d89904f5b923f",
|
13614 | 1
|
13615 | ],
|
13616 | [
|
13617 | "0x37c8bb1350a9a2a8",
|
13618 | 1
|
13619 | ]
|
13620 | ]
|
13621 | ],
|
13622 | [
|
13623 | 244358,
|
13624 | 8,
|
13625 | [
|
13626 | [
|
13627 | "0xdf6acb689907609b",
|
13628 | 3
|
13629 | ],
|
13630 | [
|
13631 | "0x37e397fc7c91f5e4",
|
13632 | 1
|
13633 | ],
|
13634 | [
|
13635 | "0x40fe3ad401f8959a",
|
13636 | 4
|
13637 | ],
|
13638 | [
|
13639 | "0xd2bc9897eed08f15",
|
13640 | 2
|
13641 | ],
|
13642 | [
|
13643 | "0xf78b278be53f454c",
|
13644 | 2
|
13645 | ],
|
13646 | [
|
13647 | "0xaf2c0297a23e6d3d",
|
13648 | 3
|
13649 | ],
|
13650 | [
|
13651 | "0xed99c5acb25eedf5",
|
13652 | 2
|
13653 | ],
|
13654 | [
|
13655 | "0xcbca25e39f142387",
|
13656 | 2
|
13657 | ],
|
13658 | [
|
13659 | "0x687ad44ad37f03c2",
|
13660 | 1
|
13661 | ],
|
13662 | [
|
13663 | "0xab3c0572291feb8b",
|
13664 | 1
|
13665 | ],
|
13666 | [
|
13667 | "0xbc9d89904f5b923f",
|
13668 | 1
|
13669 | ],
|
13670 | [
|
13671 | "0x37c8bb1350a9a2a8",
|
13672 | 1
|
13673 | ]
|
13674 | ]
|
13675 | ],
|
13676 | [
|
13677 | 303079,
|
13678 | 9,
|
13679 | [
|
13680 | [
|
13681 | "0xdf6acb689907609b",
|
13682 | 3
|
13683 | ],
|
13684 | [
|
13685 | "0x37e397fc7c91f5e4",
|
13686 | 1
|
13687 | ],
|
13688 | [
|
13689 | "0x40fe3ad401f8959a",
|
13690 | 4
|
13691 | ],
|
13692 | [
|
13693 | "0xd2bc9897eed08f15",
|
13694 | 2
|
13695 | ],
|
13696 | [
|
13697 | "0xf78b278be53f454c",
|
13698 | 2
|
13699 | ],
|
13700 | [
|
13701 | "0xaf2c0297a23e6d3d",
|
13702 | 3
|
13703 | ],
|
13704 | [
|
13705 | "0xed99c5acb25eedf5",
|
13706 | 2
|
13707 | ],
|
13708 | [
|
13709 | "0xcbca25e39f142387",
|
13710 | 2
|
13711 | ],
|
13712 | [
|
13713 | "0x687ad44ad37f03c2",
|
13714 | 1
|
13715 | ],
|
13716 | [
|
13717 | "0xab3c0572291feb8b",
|
13718 | 1
|
13719 | ],
|
13720 | [
|
13721 | "0xbc9d89904f5b923f",
|
13722 | 1
|
13723 | ],
|
13724 | [
|
13725 | "0x37c8bb1350a9a2a8",
|
13726 | 1
|
13727 | ]
|
13728 | ]
|
13729 | ],
|
13730 | [
|
13731 | 314201,
|
13732 | 10,
|
13733 | [
|
13734 | [
|
13735 | "0xdf6acb689907609b",
|
13736 | 3
|
13737 | ],
|
13738 | [
|
13739 | "0x37e397fc7c91f5e4",
|
13740 | 1
|
13741 | ],
|
13742 | [
|
13743 | "0x40fe3ad401f8959a",
|
13744 | 4
|
13745 | ],
|
13746 | [
|
13747 | "0xd2bc9897eed08f15",
|
13748 | 2
|
13749 | ],
|
13750 | [
|
13751 | "0xf78b278be53f454c",
|
13752 | 2
|
13753 | ],
|
13754 | [
|
13755 | "0xaf2c0297a23e6d3d",
|
13756 | 3
|
13757 | ],
|
13758 | [
|
13759 | "0xed99c5acb25eedf5",
|
13760 | 2
|
13761 | ],
|
13762 | [
|
13763 | "0xcbca25e39f142387",
|
13764 | 2
|
13765 | ],
|
13766 | [
|
13767 | "0x687ad44ad37f03c2",
|
13768 | 1
|
13769 | ],
|
13770 | [
|
13771 | "0xab3c0572291feb8b",
|
13772 | 1
|
13773 | ],
|
13774 | [
|
13775 | "0xbc9d89904f5b923f",
|
13776 | 1
|
13777 | ],
|
13778 | [
|
13779 | "0x37c8bb1350a9a2a8",
|
13780 | 1
|
13781 | ]
|
13782 | ]
|
13783 | ],
|
13784 | [
|
13785 | 342400,
|
13786 | 11,
|
13787 | [
|
13788 | [
|
13789 | "0xdf6acb689907609b",
|
13790 | 3
|
13791 | ],
|
13792 | [
|
13793 | "0x37e397fc7c91f5e4",
|
13794 | 1
|
13795 | ],
|
13796 | [
|
13797 | "0x40fe3ad401f8959a",
|
13798 | 4
|
13799 | ],
|
13800 | [
|
13801 | "0xd2bc9897eed08f15",
|
13802 | 2
|
13803 | ],
|
13804 | [
|
13805 | "0xf78b278be53f454c",
|
13806 | 2
|
13807 | ],
|
13808 | [
|
13809 | "0xaf2c0297a23e6d3d",
|
13810 | 3
|
13811 | ],
|
13812 | [
|
13813 | "0xed99c5acb25eedf5",
|
13814 | 2
|
13815 | ],
|
13816 | [
|
13817 | "0xcbca25e39f142387",
|
13818 | 2
|
13819 | ],
|
13820 | [
|
13821 | "0x687ad44ad37f03c2",
|
13822 | 1
|
13823 | ],
|
13824 | [
|
13825 | "0xab3c0572291feb8b",
|
13826 | 1
|
13827 | ],
|
13828 | [
|
13829 | "0xbc9d89904f5b923f",
|
13830 | 1
|
13831 | ],
|
13832 | [
|
13833 | "0x37c8bb1350a9a2a8",
|
13834 | 1
|
13835 | ]
|
13836 | ]
|
13837 | ],
|
13838 | [
|
13839 | 443963,
|
13840 | 12,
|
13841 | [
|
13842 | [
|
13843 | "0xdf6acb689907609b",
|
13844 | 3
|
13845 | ],
|
13846 | [
|
13847 | "0x37e397fc7c91f5e4",
|
13848 | 1
|
13849 | ],
|
13850 | [
|
13851 | "0x40fe3ad401f8959a",
|
13852 | 4
|
13853 | ],
|
13854 | [
|
13855 | "0xd2bc9897eed08f15",
|
13856 | 2
|
13857 | ],
|
13858 | [
|
13859 | "0xf78b278be53f454c",
|
13860 | 2
|
13861 | ],
|
13862 | [
|
13863 | "0xaf2c0297a23e6d3d",
|
13864 | 3
|
13865 | ],
|
13866 | [
|
13867 | "0xed99c5acb25eedf5",
|
13868 | 2
|
13869 | ],
|
13870 | [
|
13871 | "0xcbca25e39f142387",
|
13872 | 2
|
13873 | ],
|
13874 | [
|
13875 | "0x687ad44ad37f03c2",
|
13876 | 1
|
13877 | ],
|
13878 | [
|
13879 | "0xab3c0572291feb8b",
|
13880 | 1
|
13881 | ],
|
13882 | [
|
13883 | "0xbc9d89904f5b923f",
|
13884 | 1
|
13885 | ],
|
13886 | [
|
13887 | "0x37c8bb1350a9a2a8",
|
13888 | 1
|
13889 | ]
|
13890 | ]
|
13891 | ],
|
13892 | [
|
13893 | 528470,
|
13894 | 13,
|
13895 | [
|
13896 | [
|
13897 | "0xdf6acb689907609b",
|
13898 | 3
|
13899 | ],
|
13900 | [
|
13901 | "0x37e397fc7c91f5e4",
|
13902 | 1
|
13903 | ],
|
13904 | [
|
13905 | "0x40fe3ad401f8959a",
|
13906 | 4
|
13907 | ],
|
13908 | [
|
13909 | "0xd2bc9897eed08f15",
|
13910 | 2
|
13911 | ],
|
13912 | [
|
13913 | "0xf78b278be53f454c",
|
13914 | 2
|
13915 | ],
|
13916 | [
|
13917 | "0xaf2c0297a23e6d3d",
|
13918 | 3
|
13919 | ],
|
13920 | [
|
13921 | "0xed99c5acb25eedf5",
|
13922 | 2
|
13923 | ],
|
13924 | [
|
13925 | "0xcbca25e39f142387",
|
13926 | 2
|
13927 | ],
|
13928 | [
|
13929 | "0x687ad44ad37f03c2",
|
13930 | 1
|
13931 | ],
|
13932 | [
|
13933 | "0xab3c0572291feb8b",
|
13934 | 1
|
13935 | ],
|
13936 | [
|
13937 | "0xbc9d89904f5b923f",
|
13938 | 1
|
13939 | ],
|
13940 | [
|
13941 | "0x37c8bb1350a9a2a8",
|
13942 | 1
|
13943 | ]
|
13944 | ]
|
13945 | ],
|
13946 | [
|
13947 | 687751,
|
13948 | 14,
|
13949 | [
|
13950 | [
|
13951 | "0xdf6acb689907609b",
|
13952 | 3
|
13953 | ],
|
13954 | [
|
13955 | "0x37e397fc7c91f5e4",
|
13956 | 1
|
13957 | ],
|
13958 | [
|
13959 | "0x40fe3ad401f8959a",
|
13960 | 4
|
13961 | ],
|
13962 | [
|
13963 | "0xd2bc9897eed08f15",
|
13964 | 2
|
13965 | ],
|
13966 | [
|
13967 | "0xf78b278be53f454c",
|
13968 | 2
|
13969 | ],
|
13970 | [
|
13971 | "0xaf2c0297a23e6d3d",
|
13972 | 3
|
13973 | ],
|
13974 | [
|
13975 | "0xed99c5acb25eedf5",
|
13976 | 2
|
13977 | ],
|
13978 | [
|
13979 | "0xcbca25e39f142387",
|
13980 | 2
|
13981 | ],
|
13982 | [
|
13983 | "0x687ad44ad37f03c2",
|
13984 | 1
|
13985 | ],
|
13986 | [
|
13987 | "0xab3c0572291feb8b",
|
13988 | 1
|
13989 | ],
|
13990 | [
|
13991 | "0xbc9d89904f5b923f",
|
13992 | 1
|
13993 | ],
|
13994 | [
|
13995 | "0x37c8bb1350a9a2a8",
|
13996 | 1
|
13997 | ]
|
13998 | ]
|
13999 | ],
|
14000 | [
|
14001 | 746085,
|
14002 | 15,
|
14003 | [
|
14004 | [
|
14005 | "0xdf6acb689907609b",
|
14006 | 3
|
14007 | ],
|
14008 | [
|
14009 | "0x37e397fc7c91f5e4",
|
14010 | 1
|
14011 | ],
|
14012 | [
|
14013 | "0x40fe3ad401f8959a",
|
14014 | 4
|
14015 | ],
|
14016 | [
|
14017 | "0xd2bc9897eed08f15",
|
14018 | 2
|
14019 | ],
|
14020 | [
|
14021 | "0xf78b278be53f454c",
|
14022 | 2
|
14023 | ],
|
14024 | [
|
14025 | "0xaf2c0297a23e6d3d",
|
14026 | 3
|
14027 | ],
|
14028 | [
|
14029 | "0xed99c5acb25eedf5",
|
14030 | 2
|
14031 | ],
|
14032 | [
|
14033 | "0xcbca25e39f142387",
|
14034 | 2
|
14035 | ],
|
14036 | [
|
14037 | "0x687ad44ad37f03c2",
|
14038 | 1
|
14039 | ],
|
14040 | [
|
14041 | "0xab3c0572291feb8b",
|
14042 | 1
|
14043 | ],
|
14044 | [
|
14045 | "0xbc9d89904f5b923f",
|
14046 | 1
|
14047 | ],
|
14048 | [
|
14049 | "0x37c8bb1350a9a2a8",
|
14050 | 1
|
14051 | ]
|
14052 | ]
|
14053 | ],
|
14054 | [
|
14055 | 787923,
|
14056 | 16,
|
14057 | [
|
14058 | [
|
14059 | "0xdf6acb689907609b",
|
14060 | 3
|
14061 | ],
|
14062 | [
|
14063 | "0x37e397fc7c91f5e4",
|
14064 | 1
|
14065 | ],
|
14066 | [
|
14067 | "0x40fe3ad401f8959a",
|
14068 | 4
|
14069 | ],
|
14070 | [
|
14071 | "0xd2bc9897eed08f15",
|
14072 | 2
|
14073 | ],
|
14074 | [
|
14075 | "0xf78b278be53f454c",
|
14076 | 2
|
14077 | ],
|
14078 | [
|
14079 | "0xaf2c0297a23e6d3d",
|
14080 | 3
|
14081 | ],
|
14082 | [
|
14083 | "0xed99c5acb25eedf5",
|
14084 | 2
|
14085 | ],
|
14086 | [
|
14087 | "0xcbca25e39f142387",
|
14088 | 2
|
14089 | ],
|
14090 | [
|
14091 | "0x687ad44ad37f03c2",
|
14092 | 1
|
14093 | ],
|
14094 | [
|
14095 | "0xab3c0572291feb8b",
|
14096 | 1
|
14097 | ],
|
14098 | [
|
14099 | "0xbc9d89904f5b923f",
|
14100 | 1
|
14101 | ],
|
14102 | [
|
14103 | "0x37c8bb1350a9a2a8",
|
14104 | 1
|
14105 | ]
|
14106 | ]
|
14107 | ],
|
14108 | [
|
14109 | 799302,
|
14110 | 17,
|
14111 | [
|
14112 | [
|
14113 | "0xdf6acb689907609b",
|
14114 | 3
|
14115 | ],
|
14116 | [
|
14117 | "0x37e397fc7c91f5e4",
|
14118 | 1
|
14119 | ],
|
14120 | [
|
14121 | "0x40fe3ad401f8959a",
|
14122 | 4
|
14123 | ],
|
14124 | [
|
14125 | "0xd2bc9897eed08f15",
|
14126 | 2
|
14127 | ],
|
14128 | [
|
14129 | "0xf78b278be53f454c",
|
14130 | 2
|
14131 | ],
|
14132 | [
|
14133 | "0xaf2c0297a23e6d3d",
|
14134 | 3
|
14135 | ],
|
14136 | [
|
14137 | "0xed99c5acb25eedf5",
|
14138 | 2
|
14139 | ],
|
14140 | [
|
14141 | "0xcbca25e39f142387",
|
14142 | 2
|
14143 | ],
|
14144 | [
|
14145 | "0x687ad44ad37f03c2",
|
14146 | 1
|
14147 | ],
|
14148 | [
|
14149 | "0xab3c0572291feb8b",
|
14150 | 1
|
14151 | ],
|
14152 | [
|
14153 | "0xbc9d89904f5b923f",
|
14154 | 1
|
14155 | ],
|
14156 | [
|
14157 | "0x37c8bb1350a9a2a8",
|
14158 | 1
|
14159 | ]
|
14160 | ]
|
14161 | ],
|
14162 | [
|
14163 | 1205128,
|
14164 | 18,
|
14165 | [
|
14166 | [
|
14167 | "0xdf6acb689907609b",
|
14168 | 3
|
14169 | ],
|
14170 | [
|
14171 | "0x37e397fc7c91f5e4",
|
14172 | 1
|
14173 | ],
|
14174 | [
|
14175 | "0x40fe3ad401f8959a",
|
14176 | 4
|
14177 | ],
|
14178 | [
|
14179 | "0xd2bc9897eed08f15",
|
14180 | 2
|
14181 | ],
|
14182 | [
|
14183 | "0xf78b278be53f454c",
|
14184 | 2
|
14185 | ],
|
14186 | [
|
14187 | "0xaf2c0297a23e6d3d",
|
14188 | 3
|
14189 | ],
|
14190 | [
|
14191 | "0xed99c5acb25eedf5",
|
14192 | 2
|
14193 | ],
|
14194 | [
|
14195 | "0xcbca25e39f142387",
|
14196 | 2
|
14197 | ],
|
14198 | [
|
14199 | "0x687ad44ad37f03c2",
|
14200 | 1
|
14201 | ],
|
14202 | [
|
14203 | "0xab3c0572291feb8b",
|
14204 | 1
|
14205 | ],
|
14206 | [
|
14207 | "0xbc9d89904f5b923f",
|
14208 | 1
|
14209 | ],
|
14210 | [
|
14211 | "0x37c8bb1350a9a2a8",
|
14212 | 1
|
14213 | ]
|
14214 | ]
|
14215 | ],
|
14216 | [
|
14217 | 1603423,
|
14218 | 23,
|
14219 | [
|
14220 | [
|
14221 | "0xdf6acb689907609b",
|
14222 | 3
|
14223 | ],
|
14224 | [
|
14225 | "0x37e397fc7c91f5e4",
|
14226 | 1
|
14227 | ],
|
14228 | [
|
14229 | "0x40fe3ad401f8959a",
|
14230 | 4
|
14231 | ],
|
14232 | [
|
14233 | "0xd2bc9897eed08f15",
|
14234 | 2
|
14235 | ],
|
14236 | [
|
14237 | "0xf78b278be53f454c",
|
14238 | 2
|
14239 | ],
|
14240 | [
|
14241 | "0xaf2c0297a23e6d3d",
|
14242 | 3
|
14243 | ],
|
14244 | [
|
14245 | "0xed99c5acb25eedf5",
|
14246 | 2
|
14247 | ],
|
14248 | [
|
14249 | "0xcbca25e39f142387",
|
14250 | 2
|
14251 | ],
|
14252 | [
|
14253 | "0x687ad44ad37f03c2",
|
14254 | 1
|
14255 | ],
|
14256 | [
|
14257 | "0xab3c0572291feb8b",
|
14258 | 1
|
14259 | ],
|
14260 | [
|
14261 | "0xbc9d89904f5b923f",
|
14262 | 1
|
14263 | ],
|
14264 | [
|
14265 | "0x37c8bb1350a9a2a8",
|
14266 | 1
|
14267 | ]
|
14268 | ]
|
14269 | ],
|
14270 | [
|
14271 | 1733218,
|
14272 | 24,
|
14273 | [
|
14274 | [
|
14275 | "0xdf6acb689907609b",
|
14276 | 3
|
14277 | ],
|
14278 | [
|
14279 | "0x37e397fc7c91f5e4",
|
14280 | 1
|
14281 | ],
|
14282 | [
|
14283 | "0x40fe3ad401f8959a",
|
14284 | 4
|
14285 | ],
|
14286 | [
|
14287 | "0xd2bc9897eed08f15",
|
14288 | 2
|
14289 | ],
|
14290 | [
|
14291 | "0xf78b278be53f454c",
|
14292 | 2
|
14293 | ],
|
14294 | [
|
14295 | "0xaf2c0297a23e6d3d",
|
14296 | 3
|
14297 | ],
|
14298 | [
|
14299 | "0xed99c5acb25eedf5",
|
14300 | 2
|
14301 | ],
|
14302 | [
|
14303 | "0xcbca25e39f142387",
|
14304 | 2
|
14305 | ],
|
14306 | [
|
14307 | "0x687ad44ad37f03c2",
|
14308 | 1
|
14309 | ],
|
14310 | [
|
14311 | "0xab3c0572291feb8b",
|
14312 | 1
|
14313 | ],
|
14314 | [
|
14315 | "0xbc9d89904f5b923f",
|
14316 | 1
|
14317 | ],
|
14318 | [
|
14319 | "0x37c8bb1350a9a2a8",
|
14320 | 1
|
14321 | ]
|
14322 | ]
|
14323 | ],
|
14324 | [
|
14325 | 2005673,
|
14326 | 25,
|
14327 | [
|
14328 | [
|
14329 | "0xdf6acb689907609b",
|
14330 | 3
|
14331 | ],
|
14332 | [
|
14333 | "0x37e397fc7c91f5e4",
|
14334 | 1
|
14335 | ],
|
14336 | [
|
14337 | "0x40fe3ad401f8959a",
|
14338 | 4
|
14339 | ],
|
14340 | [
|
14341 | "0xd2bc9897eed08f15",
|
14342 | 2
|
14343 | ],
|
14344 | [
|
14345 | "0xf78b278be53f454c",
|
14346 | 2
|
14347 | ],
|
14348 | [
|
14349 | "0xaf2c0297a23e6d3d",
|
14350 | 1
|
14351 | ],
|
14352 | [
|
14353 | "0xed99c5acb25eedf5",
|
14354 | 2
|
14355 | ],
|
14356 | [
|
14357 | "0xcbca25e39f142387",
|
14358 | 2
|
14359 | ],
|
14360 | [
|
14361 | "0x687ad44ad37f03c2",
|
14362 | 1
|
14363 | ],
|
14364 | [
|
14365 | "0xab3c0572291feb8b",
|
14366 | 1
|
14367 | ],
|
14368 | [
|
14369 | "0xbc9d89904f5b923f",
|
14370 | 1
|
14371 | ],
|
14372 | [
|
14373 | "0x37c8bb1350a9a2a8",
|
14374 | 1
|
14375 | ]
|
14376 | ]
|
14377 | ],
|
14378 | [
|
14379 | 2436698,
|
14380 | 26,
|
14381 | [
|
14382 | [
|
14383 | "0xdf6acb689907609b",
|
14384 | 3
|
14385 | ],
|
14386 | [
|
14387 | "0x37e397fc7c91f5e4",
|
14388 | 1
|
14389 | ],
|
14390 | [
|
14391 | "0x40fe3ad401f8959a",
|
14392 | 4
|
14393 | ],
|
14394 | [
|
14395 | "0xd2bc9897eed08f15",
|
14396 | 2
|
14397 | ],
|
14398 | [
|
14399 | "0xf78b278be53f454c",
|
14400 | 2
|
14401 | ],
|
14402 | [
|
14403 | "0xaf2c0297a23e6d3d",
|
14404 | 1
|
14405 | ],
|
14406 | [
|
14407 | "0xed99c5acb25eedf5",
|
14408 | 2
|
14409 | ],
|
14410 | [
|
14411 | "0xcbca25e39f142387",
|
14412 | 2
|
14413 | ],
|
14414 | [
|
14415 | "0x687ad44ad37f03c2",
|
14416 | 1
|
14417 | ],
|
14418 | [
|
14419 | "0xab3c0572291feb8b",
|
14420 | 1
|
14421 | ],
|
14422 | [
|
14423 | "0xbc9d89904f5b923f",
|
14424 | 1
|
14425 | ],
|
14426 | [
|
14427 | "0x37c8bb1350a9a2a8",
|
14428 | 1
|
14429 | ]
|
14430 | ]
|
14431 | ],
|
14432 | [
|
14433 | 3613564,
|
14434 | 27,
|
14435 | [
|
14436 | [
|
14437 | "0xdf6acb689907609b",
|
14438 | 3
|
14439 | ],
|
14440 | [
|
14441 | "0x37e397fc7c91f5e4",
|
14442 | 1
|
14443 | ],
|
14444 | [
|
14445 | "0x40fe3ad401f8959a",
|
14446 | 4
|
14447 | ],
|
14448 | [
|
14449 | "0xd2bc9897eed08f15",
|
14450 | 2
|
14451 | ],
|
14452 | [
|
14453 | "0xf78b278be53f454c",
|
14454 | 2
|
14455 | ],
|
14456 | [
|
14457 | "0xaf2c0297a23e6d3d",
|
14458 | 1
|
14459 | ],
|
14460 | [
|
14461 | "0xed99c5acb25eedf5",
|
14462 | 2
|
14463 | ],
|
14464 | [
|
14465 | "0xcbca25e39f142387",
|
14466 | 2
|
14467 | ],
|
14468 | [
|
14469 | "0x687ad44ad37f03c2",
|
14470 | 1
|
14471 | ],
|
14472 | [
|
14473 | "0xab3c0572291feb8b",
|
14474 | 1
|
14475 | ],
|
14476 | [
|
14477 | "0xbc9d89904f5b923f",
|
14478 | 1
|
14479 | ],
|
14480 | [
|
14481 | "0x37c8bb1350a9a2a8",
|
14482 | 1
|
14483 | ]
|
14484 | ]
|
14485 | ],
|
14486 | [
|
14487 | 3899547,
|
14488 | 28,
|
14489 | [
|
14490 | [
|
14491 | "0xdf6acb689907609b",
|
14492 | 3
|
14493 | ],
|
14494 | [
|
14495 | "0x37e397fc7c91f5e4",
|
14496 | 1
|
14497 | ],
|
14498 | [
|
14499 | "0x40fe3ad401f8959a",
|
14500 | 4
|
14501 | ],
|
14502 | [
|
14503 | "0xd2bc9897eed08f15",
|
14504 | 2
|
14505 | ],
|
14506 | [
|
14507 | "0xf78b278be53f454c",
|
14508 | 2
|
14509 | ],
|
14510 | [
|
14511 | "0xaf2c0297a23e6d3d",
|
14512 | 1
|
14513 | ],
|
14514 | [
|
14515 | "0xed99c5acb25eedf5",
|
14516 | 2
|
14517 | ],
|
14518 | [
|
14519 | "0xcbca25e39f142387",
|
14520 | 2
|
14521 | ],
|
14522 | [
|
14523 | "0x687ad44ad37f03c2",
|
14524 | 1
|
14525 | ],
|
14526 | [
|
14527 | "0xab3c0572291feb8b",
|
14528 | 1
|
14529 | ],
|
14530 | [
|
14531 | "0xbc9d89904f5b923f",
|
14532 | 1
|
14533 | ],
|
14534 | [
|
14535 | "0x37c8bb1350a9a2a8",
|
14536 | 1
|
14537 | ]
|
14538 | ]
|
14539 | ],
|
14540 | [
|
14541 | 4345767,
|
14542 | 29,
|
14543 | [
|
14544 | [
|
14545 | "0xdf6acb689907609b",
|
14546 | 3
|
14547 | ],
|
14548 | [
|
14549 | "0x37e397fc7c91f5e4",
|
14550 | 1
|
14551 | ],
|
14552 | [
|
14553 | "0x40fe3ad401f8959a",
|
14554 | 4
|
14555 | ],
|
14556 | [
|
14557 | "0xd2bc9897eed08f15",
|
14558 | 2
|
14559 | ],
|
14560 | [
|
14561 | "0xf78b278be53f454c",
|
14562 | 2
|
14563 | ],
|
14564 | [
|
14565 | "0xaf2c0297a23e6d3d",
|
14566 | 1
|
14567 | ],
|
14568 | [
|
14569 | "0xed99c5acb25eedf5",
|
14570 | 2
|
14571 | ],
|
14572 | [
|
14573 | "0xcbca25e39f142387",
|
14574 | 2
|
14575 | ],
|
14576 | [
|
14577 | "0x687ad44ad37f03c2",
|
14578 | 1
|
14579 | ],
|
14580 | [
|
14581 | "0xab3c0572291feb8b",
|
14582 | 1
|
14583 | ],
|
14584 | [
|
14585 | "0xbc9d89904f5b923f",
|
14586 | 1
|
14587 | ],
|
14588 | [
|
14589 | "0x37c8bb1350a9a2a8",
|
14590 | 1
|
14591 | ]
|
14592 | ]
|
14593 | ],
|
14594 | [
|
14595 | 4876134,
|
14596 | 30,
|
14597 | [
|
14598 | [
|
14599 | "0xdf6acb689907609b",
|
14600 | 3
|
14601 | ],
|
14602 | [
|
14603 | "0x37e397fc7c91f5e4",
|
14604 | 1
|
14605 | ],
|
14606 | [
|
14607 | "0x40fe3ad401f8959a",
|
14608 | 4
|
14609 | ],
|
14610 | [
|
14611 | "0xd2bc9897eed08f15",
|
14612 | 2
|
14613 | ],
|
14614 | [
|
14615 | "0xf78b278be53f454c",
|
14616 | 2
|
14617 | ],
|
14618 | [
|
14619 | "0xaf2c0297a23e6d3d",
|
14620 | 1
|
14621 | ],
|
14622 | [
|
14623 | "0xed99c5acb25eedf5",
|
14624 | 2
|
14625 | ],
|
14626 | [
|
14627 | "0xcbca25e39f142387",
|
14628 | 2
|
14629 | ],
|
14630 | [
|
14631 | "0x687ad44ad37f03c2",
|
14632 | 1
|
14633 | ],
|
14634 | [
|
14635 | "0xab3c0572291feb8b",
|
14636 | 1
|
14637 | ],
|
14638 | [
|
14639 | "0xbc9d89904f5b923f",
|
14640 | 1
|
14641 | ],
|
14642 | [
|
14643 | "0x37c8bb1350a9a2a8",
|
14644 | 1
|
14645 | ]
|
14646 | ]
|
14647 | ],
|
14648 | [
|
14649 | 5661442,
|
14650 | 9050,
|
14651 | [
|
14652 | [
|
14653 | "0xdf6acb689907609b",
|
14654 | 3
|
14655 | ],
|
14656 | [
|
14657 | "0x37e397fc7c91f5e4",
|
14658 | 1
|
14659 | ],
|
14660 | [
|
14661 | "0x40fe3ad401f8959a",
|
14662 | 5
|
14663 | ],
|
14664 | [
|
14665 | "0xd2bc9897eed08f15",
|
14666 | 2
|
14667 | ],
|
14668 | [
|
14669 | "0xf78b278be53f454c",
|
14670 | 2
|
14671 | ],
|
14672 | [
|
14673 | "0xaf2c0297a23e6d3d",
|
14674 | 1
|
14675 | ],
|
14676 | [
|
14677 | "0x49eaaf1b548a0cb0",
|
14678 | 1
|
14679 | ],
|
14680 | [
|
14681 | "0x91d5df18b0d2cf58",
|
14682 | 1
|
14683 | ],
|
14684 | [
|
14685 | "0xed99c5acb25eedf5",
|
14686 | 2
|
14687 | ],
|
14688 | [
|
14689 | "0xcbca25e39f142387",
|
14690 | 2
|
14691 | ],
|
14692 | [
|
14693 | "0x687ad44ad37f03c2",
|
14694 | 1
|
14695 | ],
|
14696 | [
|
14697 | "0xab3c0572291feb8b",
|
14698 | 1
|
14699 | ],
|
14700 | [
|
14701 | "0xbc9d89904f5b923f",
|
14702 | 1
|
14703 | ],
|
14704 | [
|
14705 | "0x37c8bb1350a9a2a8",
|
14706 | 1
|
14707 | ]
|
14708 | ]
|
14709 | ],
|
14710 | [
|
14711 | 6321619,
|
14712 | 9080,
|
14713 | [
|
14714 | [
|
14715 | "0xdf6acb689907609b",
|
14716 | 3
|
14717 | ],
|
14718 | [
|
14719 | "0x37e397fc7c91f5e4",
|
14720 | 1
|
14721 | ],
|
14722 | [
|
14723 | "0x40fe3ad401f8959a",
|
14724 | 5
|
14725 | ],
|
14726 | [
|
14727 | "0xd2bc9897eed08f15",
|
14728 | 3
|
14729 | ],
|
14730 | [
|
14731 | "0xf78b278be53f454c",
|
14732 | 2
|
14733 | ],
|
14734 | [
|
14735 | "0xaf2c0297a23e6d3d",
|
14736 | 1
|
14737 | ],
|
14738 | [
|
14739 | "0x49eaaf1b548a0cb0",
|
14740 | 1
|
14741 | ],
|
14742 | [
|
14743 | "0x91d5df18b0d2cf58",
|
14744 | 1
|
14745 | ],
|
14746 | [
|
14747 | "0xed99c5acb25eedf5",
|
14748 | 2
|
14749 | ],
|
14750 | [
|
14751 | "0xcbca25e39f142387",
|
14752 | 2
|
14753 | ],
|
14754 | [
|
14755 | "0x687ad44ad37f03c2",
|
14756 | 1
|
14757 | ],
|
14758 | [
|
14759 | "0xab3c0572291feb8b",
|
14760 | 1
|
14761 | ],
|
14762 | [
|
14763 | "0xbc9d89904f5b923f",
|
14764 | 1
|
14765 | ],
|
14766 | [
|
14767 | "0x37c8bb1350a9a2a8",
|
14768 | 1
|
14769 | ]
|
14770 | ]
|
14771 | ],
|
14772 | [
|
14773 | 6713249,
|
14774 | 9090,
|
14775 | [
|
14776 | [
|
14777 | "0xdf6acb689907609b",
|
14778 | 3
|
14779 | ],
|
14780 | [
|
14781 | "0x37e397fc7c91f5e4",
|
14782 | 1
|
14783 | ],
|
14784 | [
|
14785 | "0x40fe3ad401f8959a",
|
14786 | 5
|
14787 | ],
|
14788 | [
|
14789 | "0xd2bc9897eed08f15",
|
14790 | 3
|
14791 | ],
|
14792 | [
|
14793 | "0xf78b278be53f454c",
|
14794 | 2
|
14795 | ],
|
14796 | [
|
14797 | "0xaf2c0297a23e6d3d",
|
14798 | 1
|
14799 | ],
|
14800 | [
|
14801 | "0x49eaaf1b548a0cb0",
|
14802 | 1
|
14803 | ],
|
14804 | [
|
14805 | "0x91d5df18b0d2cf58",
|
14806 | 1
|
14807 | ],
|
14808 | [
|
14809 | "0xed99c5acb25eedf5",
|
14810 | 3
|
14811 | ],
|
14812 | [
|
14813 | "0xcbca25e39f142387",
|
14814 | 2
|
14815 | ],
|
14816 | [
|
14817 | "0x687ad44ad37f03c2",
|
14818 | 1
|
14819 | ],
|
14820 | [
|
14821 | "0xab3c0572291feb8b",
|
14822 | 1
|
14823 | ],
|
14824 | [
|
14825 | "0xbc9d89904f5b923f",
|
14826 | 1
|
14827 | ],
|
14828 | [
|
14829 | "0x37c8bb1350a9a2a8",
|
14830 | 1
|
14831 | ]
|
14832 | ]
|
14833 | ],
|
14834 | [
|
14835 | 7217907,
|
14836 | 9100,
|
14837 | [
|
14838 | [
|
14839 | "0xdf6acb689907609b",
|
14840 | 3
|
14841 | ],
|
14842 | [
|
14843 | "0x37e397fc7c91f5e4",
|
14844 | 1
|
14845 | ],
|
14846 | [
|
14847 | "0x40fe3ad401f8959a",
|
14848 | 5
|
14849 | ],
|
14850 | [
|
14851 | "0xd2bc9897eed08f15",
|
14852 | 3
|
14853 | ],
|
14854 | [
|
14855 | "0xf78b278be53f454c",
|
14856 | 2
|
14857 | ],
|
14858 | [
|
14859 | "0xaf2c0297a23e6d3d",
|
14860 | 1
|
14861 | ],
|
14862 | [
|
14863 | "0x49eaaf1b548a0cb0",
|
14864 | 1
|
14865 | ],
|
14866 | [
|
14867 | "0x91d5df18b0d2cf58",
|
14868 | 1
|
14869 | ],
|
14870 | [
|
14871 | "0xed99c5acb25eedf5",
|
14872 | 3
|
14873 | ],
|
14874 | [
|
14875 | "0xcbca25e39f142387",
|
14876 | 2
|
14877 | ],
|
14878 | [
|
14879 | "0x687ad44ad37f03c2",
|
14880 | 1
|
14881 | ],
|
14882 | [
|
14883 | "0xab3c0572291feb8b",
|
14884 | 1
|
14885 | ],
|
14886 | [
|
14887 | "0xbc9d89904f5b923f",
|
14888 | 1
|
14889 | ],
|
14890 | [
|
14891 | "0x37c8bb1350a9a2a8",
|
14892 | 1
|
14893 | ]
|
14894 | ]
|
14895 | ],
|
14896 | [
|
14897 | 7229126,
|
14898 | 9110,
|
14899 | [
|
14900 | [
|
14901 | "0xdf6acb689907609b",
|
14902 | 3
|
14903 | ],
|
14904 | [
|
14905 | "0x37e397fc7c91f5e4",
|
14906 | 1
|
14907 | ],
|
14908 | [
|
14909 | "0x40fe3ad401f8959a",
|
14910 | 5
|
14911 | ],
|
14912 | [
|
14913 | "0xd2bc9897eed08f15",
|
14914 | 3
|
14915 | ],
|
14916 | [
|
14917 | "0xf78b278be53f454c",
|
14918 | 2
|
14919 | ],
|
14920 | [
|
14921 | "0xaf2c0297a23e6d3d",
|
14922 | 1
|
14923 | ],
|
14924 | [
|
14925 | "0x49eaaf1b548a0cb0",
|
14926 | 1
|
14927 | ],
|
14928 | [
|
14929 | "0x91d5df18b0d2cf58",
|
14930 | 1
|
14931 | ],
|
14932 | [
|
14933 | "0xed99c5acb25eedf5",
|
14934 | 3
|
14935 | ],
|
14936 | [
|
14937 | "0xcbca25e39f142387",
|
14938 | 2
|
14939 | ],
|
14940 | [
|
14941 | "0x687ad44ad37f03c2",
|
14942 | 1
|
14943 | ],
|
14944 | [
|
14945 | "0xab3c0572291feb8b",
|
14946 | 1
|
14947 | ],
|
14948 | [
|
14949 | "0xbc9d89904f5b923f",
|
14950 | 1
|
14951 | ],
|
14952 | [
|
14953 | "0x37c8bb1350a9a2a8",
|
14954 | 1
|
14955 | ]
|
14956 | ]
|
14957 | ],
|
14958 | [
|
14959 | 7560558,
|
14960 | 9122,
|
14961 | [
|
14962 | [
|
14963 | "0xdf6acb689907609b",
|
14964 | 3
|
14965 | ],
|
14966 | [
|
14967 | "0x37e397fc7c91f5e4",
|
14968 | 1
|
14969 | ],
|
14970 | [
|
14971 | "0x40fe3ad401f8959a",
|
14972 | 5
|
14973 | ],
|
14974 | [
|
14975 | "0xd2bc9897eed08f15",
|
14976 | 3
|
14977 | ],
|
14978 | [
|
14979 | "0xf78b278be53f454c",
|
14980 | 2
|
14981 | ],
|
14982 | [
|
14983 | "0xaf2c0297a23e6d3d",
|
14984 | 1
|
14985 | ],
|
14986 | [
|
14987 | "0x49eaaf1b548a0cb0",
|
14988 | 1
|
14989 | ],
|
14990 | [
|
14991 | "0x91d5df18b0d2cf58",
|
14992 | 1
|
14993 | ],
|
14994 | [
|
14995 | "0xed99c5acb25eedf5",
|
14996 | 3
|
14997 | ],
|
14998 | [
|
14999 | "0xcbca25e39f142387",
|
15000 | 2
|
15001 | ],
|
15002 | [
|
15003 | "0x687ad44ad37f03c2",
|
15004 | 1
|
15005 | ],
|
15006 | [
|
15007 | "0xab3c0572291feb8b",
|
15008 | 1
|
15009 | ],
|
15010 | [
|
15011 | "0xbc9d89904f5b923f",
|
15012 | 1
|
15013 | ],
|
15014 | [
|
15015 | "0x37c8bb1350a9a2a8",
|
15016 | 1
|
15017 | ]
|
15018 | ]
|
15019 | ],
|
15020 | [
|
15021 | 8115869,
|
15022 | 9140,
|
15023 | [
|
15024 | [
|
15025 | "0xdf6acb689907609b",
|
15026 | 3
|
15027 | ],
|
15028 | [
|
15029 | "0x37e397fc7c91f5e4",
|
15030 | 1
|
15031 | ],
|
15032 | [
|
15033 | "0x40fe3ad401f8959a",
|
15034 | 5
|
15035 | ],
|
15036 | [
|
15037 | "0xd2bc9897eed08f15",
|
15038 | 3
|
15039 | ],
|
15040 | [
|
15041 | "0xf78b278be53f454c",
|
15042 | 2
|
15043 | ],
|
15044 | [
|
15045 | "0xaf2c0297a23e6d3d",
|
15046 | 1
|
15047 | ],
|
15048 | [
|
15049 | "0x49eaaf1b548a0cb0",
|
15050 | 1
|
15051 | ],
|
15052 | [
|
15053 | "0x91d5df18b0d2cf58",
|
15054 | 1
|
15055 | ],
|
15056 | [
|
15057 | "0xed99c5acb25eedf5",
|
15058 | 3
|
15059 | ],
|
15060 | [
|
15061 | "0xcbca25e39f142387",
|
15062 | 2
|
15063 | ],
|
15064 | [
|
15065 | "0x687ad44ad37f03c2",
|
15066 | 1
|
15067 | ],
|
15068 | [
|
15069 | "0xab3c0572291feb8b",
|
15070 | 1
|
15071 | ],
|
15072 | [
|
15073 | "0xbc9d89904f5b923f",
|
15074 | 1
|
15075 | ],
|
15076 | [
|
15077 | "0x37c8bb1350a9a2a8",
|
15078 | 1
|
15079 | ]
|
15080 | ]
|
15081 | ],
|
15082 | [
|
15083 | 8638103,
|
15084 | 9151,
|
15085 | [
|
15086 | [
|
15087 | "0xdf6acb689907609b",
|
15088 | 3
|
15089 | ],
|
15090 | [
|
15091 | "0x37e397fc7c91f5e4",
|
15092 | 1
|
15093 | ],
|
15094 | [
|
15095 | "0x40fe3ad401f8959a",
|
15096 | 5
|
15097 | ],
|
15098 | [
|
15099 | "0xd2bc9897eed08f15",
|
15100 | 3
|
15101 | ],
|
15102 | [
|
15103 | "0xf78b278be53f454c",
|
15104 | 2
|
15105 | ],
|
15106 | [
|
15107 | "0xaf2c0297a23e6d3d",
|
15108 | 1
|
15109 | ],
|
15110 | [
|
15111 | "0x49eaaf1b548a0cb0",
|
15112 | 1
|
15113 | ],
|
15114 | [
|
15115 | "0x91d5df18b0d2cf58",
|
15116 | 1
|
15117 | ],
|
15118 | [
|
15119 | "0xed99c5acb25eedf5",
|
15120 | 3
|
15121 | ],
|
15122 | [
|
15123 | "0xcbca25e39f142387",
|
15124 | 2
|
15125 | ],
|
15126 | [
|
15127 | "0x687ad44ad37f03c2",
|
15128 | 1
|
15129 | ],
|
15130 | [
|
15131 | "0xab3c0572291feb8b",
|
15132 | 1
|
15133 | ],
|
15134 | [
|
15135 | "0xbc9d89904f5b923f",
|
15136 | 1
|
15137 | ],
|
15138 | [
|
15139 | "0x37c8bb1350a9a2a8",
|
15140 | 1
|
15141 | ]
|
15142 | ]
|
15143 | ],
|
15144 | [
|
15145 | 9280179,
|
15146 | 9170,
|
15147 | [
|
15148 | [
|
15149 | "0xdf6acb689907609b",
|
15150 | 4
|
15151 | ],
|
15152 | [
|
15153 | "0x37e397fc7c91f5e4",
|
15154 | 1
|
15155 | ],
|
15156 | [
|
15157 | "0x40fe3ad401f8959a",
|
15158 | 5
|
15159 | ],
|
15160 | [
|
15161 | "0xd2bc9897eed08f15",
|
15162 | 3
|
15163 | ],
|
15164 | [
|
15165 | "0xf78b278be53f454c",
|
15166 | 2
|
15167 | ],
|
15168 | [
|
15169 | "0xaf2c0297a23e6d3d",
|
15170 | 2
|
15171 | ],
|
15172 | [
|
15173 | "0x49eaaf1b548a0cb0",
|
15174 | 1
|
15175 | ],
|
15176 | [
|
15177 | "0x91d5df18b0d2cf58",
|
15178 | 1
|
15179 | ],
|
15180 | [
|
15181 | "0xed99c5acb25eedf5",
|
15182 | 3
|
15183 | ],
|
15184 | [
|
15185 | "0xcbca25e39f142387",
|
15186 | 2
|
15187 | ],
|
15188 | [
|
15189 | "0x687ad44ad37f03c2",
|
15190 | 1
|
15191 | ],
|
15192 | [
|
15193 | "0xab3c0572291feb8b",
|
15194 | 1
|
15195 | ],
|
15196 | [
|
15197 | "0xbc9d89904f5b923f",
|
15198 | 1
|
15199 | ],
|
15200 | [
|
15201 | "0x37c8bb1350a9a2a8",
|
15202 | 1
|
15203 | ]
|
15204 | ]
|
15205 | ],
|
15206 | [
|
15207 | 9738717,
|
15208 | 9180,
|
15209 | [
|
15210 | [
|
15211 | "0xdf6acb689907609b",
|
15212 | 4
|
15213 | ],
|
15214 | [
|
15215 | "0x37e397fc7c91f5e4",
|
15216 | 1
|
15217 | ],
|
15218 | [
|
15219 | "0x40fe3ad401f8959a",
|
15220 | 5
|
15221 | ],
|
15222 | [
|
15223 | "0xd2bc9897eed08f15",
|
15224 | 3
|
15225 | ],
|
15226 | [
|
15227 | "0xf78b278be53f454c",
|
15228 | 2
|
15229 | ],
|
15230 | [
|
15231 | "0xaf2c0297a23e6d3d",
|
15232 | 2
|
15233 | ],
|
15234 | [
|
15235 | "0x49eaaf1b548a0cb0",
|
15236 | 1
|
15237 | ],
|
15238 | [
|
15239 | "0x91d5df18b0d2cf58",
|
15240 | 1
|
15241 | ],
|
15242 | [
|
15243 | "0xed99c5acb25eedf5",
|
15244 | 3
|
15245 | ],
|
15246 | [
|
15247 | "0xcbca25e39f142387",
|
15248 | 2
|
15249 | ],
|
15250 | [
|
15251 | "0x687ad44ad37f03c2",
|
15252 | 1
|
15253 | ],
|
15254 | [
|
15255 | "0xab3c0572291feb8b",
|
15256 | 1
|
15257 | ],
|
15258 | [
|
15259 | "0xbc9d89904f5b923f",
|
15260 | 1
|
15261 | ],
|
15262 | [
|
15263 | "0x37c8bb1350a9a2a8",
|
15264 | 1
|
15265 | ]
|
15266 | ]
|
15267 | ],
|
15268 | [
|
15269 | 10156856,
|
15270 | 9190,
|
15271 | [
|
15272 | [
|
15273 | "0xdf6acb689907609b",
|
15274 | 4
|
15275 | ],
|
15276 | [
|
15277 | "0x37e397fc7c91f5e4",
|
15278 | 1
|
15279 | ],
|
15280 | [
|
15281 | "0x40fe3ad401f8959a",
|
15282 | 6
|
15283 | ],
|
15284 | [
|
15285 | "0xd2bc9897eed08f15",
|
15286 | 3
|
15287 | ],
|
15288 | [
|
15289 | "0xf78b278be53f454c",
|
15290 | 2
|
15291 | ],
|
15292 | [
|
15293 | "0xaf2c0297a23e6d3d",
|
15294 | 2
|
15295 | ],
|
15296 | [
|
15297 | "0x49eaaf1b548a0cb0",
|
15298 | 1
|
15299 | ],
|
15300 | [
|
15301 | "0x91d5df18b0d2cf58",
|
15302 | 1
|
15303 | ],
|
15304 | [
|
15305 | "0xed99c5acb25eedf5",
|
15306 | 3
|
15307 | ],
|
15308 | [
|
15309 | "0xcbca25e39f142387",
|
15310 | 2
|
15311 | ],
|
15312 | [
|
15313 | "0x687ad44ad37f03c2",
|
15314 | 1
|
15315 | ],
|
15316 | [
|
15317 | "0xab3c0572291feb8b",
|
15318 | 1
|
15319 | ],
|
15320 | [
|
15321 | "0xbc9d89904f5b923f",
|
15322 | 1
|
15323 | ],
|
15324 | [
|
15325 | "0x37c8bb1350a9a2a8",
|
15326 | 1
|
15327 | ]
|
15328 | ]
|
15329 | ],
|
15330 | [
|
15331 | 10458576,
|
15332 | 9200,
|
15333 | [
|
15334 | [
|
15335 | "0xdf6acb689907609b",
|
15336 | 4
|
15337 | ],
|
15338 | [
|
15339 | "0x37e397fc7c91f5e4",
|
15340 | 1
|
15341 | ],
|
15342 | [
|
15343 | "0x40fe3ad401f8959a",
|
15344 | 6
|
15345 | ],
|
15346 | [
|
15347 | "0xd2bc9897eed08f15",
|
15348 | 3
|
15349 | ],
|
15350 | [
|
15351 | "0xf78b278be53f454c",
|
15352 | 2
|
15353 | ],
|
15354 | [
|
15355 | "0xaf2c0297a23e6d3d",
|
15356 | 2
|
15357 | ],
|
15358 | [
|
15359 | "0x49eaaf1b548a0cb0",
|
15360 | 1
|
15361 | ],
|
15362 | [
|
15363 | "0x91d5df18b0d2cf58",
|
15364 | 1
|
15365 | ],
|
15366 | [
|
15367 | "0xed99c5acb25eedf5",
|
15368 | 3
|
15369 | ],
|
15370 | [
|
15371 | "0xcbca25e39f142387",
|
15372 | 2
|
15373 | ],
|
15374 | [
|
15375 | "0x687ad44ad37f03c2",
|
15376 | 1
|
15377 | ],
|
15378 | [
|
15379 | "0xab3c0572291feb8b",
|
15380 | 1
|
15381 | ],
|
15382 | [
|
15383 | "0xbc9d89904f5b923f",
|
15384 | 1
|
15385 | ],
|
15386 | [
|
15387 | "0x37c8bb1350a9a2a8",
|
15388 | 1
|
15389 | ]
|
15390 | ]
|
15391 | ],
|
15392 | [
|
15393 | 10655116,
|
15394 | 9220,
|
15395 | [
|
15396 | [
|
15397 | "0xdf6acb689907609b",
|
15398 | 4
|
15399 | ],
|
15400 | [
|
15401 | "0x37e397fc7c91f5e4",
|
15402 | 1
|
15403 | ],
|
15404 | [
|
15405 | "0x40fe3ad401f8959a",
|
15406 | 6
|
15407 | ],
|
15408 | [
|
15409 | "0xd2bc9897eed08f15",
|
15410 | 3
|
15411 | ],
|
15412 | [
|
15413 | "0xf78b278be53f454c",
|
15414 | 2
|
15415 | ],
|
15416 | [
|
15417 | "0xaf2c0297a23e6d3d",
|
15418 | 2
|
15419 | ],
|
15420 | [
|
15421 | "0x49eaaf1b548a0cb0",
|
15422 | 1
|
15423 | ],
|
15424 | [
|
15425 | "0x91d5df18b0d2cf58",
|
15426 | 1
|
15427 | ],
|
15428 | [
|
15429 | "0xed99c5acb25eedf5",
|
15430 | 3
|
15431 | ],
|
15432 | [
|
15433 | "0xcbca25e39f142387",
|
15434 | 2
|
15435 | ],
|
15436 | [
|
15437 | "0x687ad44ad37f03c2",
|
15438 | 1
|
15439 | ],
|
15440 | [
|
15441 | "0xab3c0572291feb8b",
|
15442 | 1
|
15443 | ],
|
15444 | [
|
15445 | "0xbc9d89904f5b923f",
|
15446 | 1
|
15447 | ],
|
15448 | [
|
15449 | "0x37c8bb1350a9a2a8",
|
15450 | 1
|
15451 | ]
|
15452 | ]
|
15453 | ],
|
15454 | [
|
15455 | 10879371,
|
15456 | 9230,
|
15457 | [
|
15458 | [
|
15459 | "0xdf6acb689907609b",
|
15460 | 4
|
15461 | ],
|
15462 | [
|
15463 | "0x37e397fc7c91f5e4",
|
15464 | 1
|
15465 | ],
|
15466 | [
|
15467 | "0x40fe3ad401f8959a",
|
15468 | 6
|
15469 | ],
|
15470 | [
|
15471 | "0xd2bc9897eed08f15",
|
15472 | 3
|
15473 | ],
|
15474 | [
|
15475 | "0xf78b278be53f454c",
|
15476 | 2
|
15477 | ],
|
15478 | [
|
15479 | "0xaf2c0297a23e6d3d",
|
15480 | 2
|
15481 | ],
|
15482 | [
|
15483 | "0x49eaaf1b548a0cb0",
|
15484 | 1
|
15485 | ],
|
15486 | [
|
15487 | "0x91d5df18b0d2cf58",
|
15488 | 1
|
15489 | ],
|
15490 | [
|
15491 | "0xed99c5acb25eedf5",
|
15492 | 3
|
15493 | ],
|
15494 | [
|
15495 | "0xcbca25e39f142387",
|
15496 | 2
|
15497 | ],
|
15498 | [
|
15499 | "0x687ad44ad37f03c2",
|
15500 | 1
|
15501 | ],
|
15502 | [
|
15503 | "0xab3c0572291feb8b",
|
15504 | 1
|
15505 | ],
|
15506 | [
|
15507 | "0xbc9d89904f5b923f",
|
15508 | 1
|
15509 | ],
|
15510 | [
|
15511 | "0x37c8bb1350a9a2a8",
|
15512 | 1
|
15513 | ]
|
15514 | ]
|
15515 | ],
|
15516 | [
|
15517 | 11328884,
|
15518 | 9250,
|
15519 | [
|
15520 | [
|
15521 | "0xdf6acb689907609b",
|
15522 | 4
|
15523 | ],
|
15524 | [
|
15525 | "0x37e397fc7c91f5e4",
|
15526 | 1
|
15527 | ],
|
15528 | [
|
15529 | "0x40fe3ad401f8959a",
|
15530 | 6
|
15531 | ],
|
15532 | [
|
15533 | "0xd2bc9897eed08f15",
|
15534 | 3
|
15535 | ],
|
15536 | [
|
15537 | "0xf78b278be53f454c",
|
15538 | 2
|
15539 | ],
|
15540 | [
|
15541 | "0xaf2c0297a23e6d3d",
|
15542 | 2
|
15543 | ],
|
15544 | [
|
15545 | "0x49eaaf1b548a0cb0",
|
15546 | 1
|
15547 | ],
|
15548 | [
|
15549 | "0x91d5df18b0d2cf58",
|
15550 | 1
|
15551 | ],
|
15552 | [
|
15553 | "0xed99c5acb25eedf5",
|
15554 | 3
|
15555 | ],
|
15556 | [
|
15557 | "0xcbca25e39f142387",
|
15558 | 2
|
15559 | ],
|
15560 | [
|
15561 | "0x687ad44ad37f03c2",
|
15562 | 1
|
15563 | ],
|
15564 | [
|
15565 | "0xab3c0572291feb8b",
|
15566 | 1
|
15567 | ],
|
15568 | [
|
15569 | "0xbc9d89904f5b923f",
|
15570 | 1
|
15571 | ],
|
15572 | [
|
15573 | "0x37c8bb1350a9a2a8",
|
15574 | 1
|
15575 | ]
|
15576 | ]
|
15577 | ],
|
15578 | [
|
15579 | 11532856,
|
15580 | 9260,
|
15581 | [
|
15582 | [
|
15583 | "0xdf6acb689907609b",
|
15584 | 4
|
15585 | ],
|
15586 | [
|
15587 | "0x37e397fc7c91f5e4",
|
15588 | 1
|
15589 | ],
|
15590 | [
|
15591 | "0x40fe3ad401f8959a",
|
15592 | 6
|
15593 | ],
|
15594 | [
|
15595 | "0xd2bc9897eed08f15",
|
15596 | 3
|
15597 | ],
|
15598 | [
|
15599 | "0xf78b278be53f454c",
|
15600 | 2
|
15601 | ],
|
15602 | [
|
15603 | "0xaf2c0297a23e6d3d",
|
15604 | 2
|
15605 | ],
|
15606 | [
|
15607 | "0x49eaaf1b548a0cb0",
|
15608 | 1
|
15609 | ],
|
15610 | [
|
15611 | "0x91d5df18b0d2cf58",
|
15612 | 1
|
15613 | ],
|
15614 | [
|
15615 | "0xed99c5acb25eedf5",
|
15616 | 3
|
15617 | ],
|
15618 | [
|
15619 | "0xcbca25e39f142387",
|
15620 | 2
|
15621 | ],
|
15622 | [
|
15623 | "0x687ad44ad37f03c2",
|
15624 | 1
|
15625 | ],
|
15626 | [
|
15627 | "0xab3c0572291feb8b",
|
15628 | 1
|
15629 | ],
|
15630 | [
|
15631 | "0xbc9d89904f5b923f",
|
15632 | 1
|
15633 | ],
|
15634 | [
|
15635 | "0x37c8bb1350a9a2a8",
|
15636 | 1
|
15637 | ]
|
15638 | ]
|
15639 | ],
|
15640 | [
|
15641 | 11933818,
|
15642 | 9270,
|
15643 | [
|
15644 | [
|
15645 | "0xdf6acb689907609b",
|
15646 | 4
|
15647 | ],
|
15648 | [
|
15649 | "0x37e397fc7c91f5e4",
|
15650 | 1
|
15651 | ],
|
15652 | [
|
15653 | "0x40fe3ad401f8959a",
|
15654 | 6
|
15655 | ],
|
15656 | [
|
15657 | "0xd2bc9897eed08f15",
|
15658 | 3
|
15659 | ],
|
15660 | [
|
15661 | "0xf78b278be53f454c",
|
15662 | 2
|
15663 | ],
|
15664 | [
|
15665 | "0xaf2c0297a23e6d3d",
|
15666 | 2
|
15667 | ],
|
15668 | [
|
15669 | "0x49eaaf1b548a0cb0",
|
15670 | 1
|
15671 | ],
|
15672 | [
|
15673 | "0x91d5df18b0d2cf58",
|
15674 | 1
|
15675 | ],
|
15676 | [
|
15677 | "0xed99c5acb25eedf5",
|
15678 | 3
|
15679 | ],
|
15680 | [
|
15681 | "0xcbca25e39f142387",
|
15682 | 2
|
15683 | ],
|
15684 | [
|
15685 | "0x687ad44ad37f03c2",
|
15686 | 1
|
15687 | ],
|
15688 | [
|
15689 | "0xab3c0572291feb8b",
|
15690 | 1
|
15691 | ],
|
15692 | [
|
15693 | "0xbc9d89904f5b923f",
|
15694 | 1
|
15695 | ],
|
15696 | [
|
15697 | "0x37c8bb1350a9a2a8",
|
15698 | 1
|
15699 | ]
|
15700 | ]
|
15701 | ],
|
15702 | [
|
15703 | 12217535,
|
15704 | 9280,
|
15705 | [
|
15706 | [
|
15707 | "0xdf6acb689907609b",
|
15708 | 4
|
15709 | ],
|
15710 | [
|
15711 | "0x37e397fc7c91f5e4",
|
15712 | 1
|
15713 | ],
|
15714 | [
|
15715 | "0x40fe3ad401f8959a",
|
15716 | 6
|
15717 | ],
|
15718 | [
|
15719 | "0xd2bc9897eed08f15",
|
15720 | 3
|
15721 | ],
|
15722 | [
|
15723 | "0xf78b278be53f454c",
|
15724 | 2
|
15725 | ],
|
15726 | [
|
15727 | "0xaf2c0297a23e6d3d",
|
15728 | 2
|
15729 | ],
|
15730 | [
|
15731 | "0x49eaaf1b548a0cb0",
|
15732 | 1
|
15733 | ],
|
15734 | [
|
15735 | "0x91d5df18b0d2cf58",
|
15736 | 1
|
15737 | ],
|
15738 | [
|
15739 | "0xed99c5acb25eedf5",
|
15740 | 3
|
15741 | ],
|
15742 | [
|
15743 | "0xcbca25e39f142387",
|
15744 | 2
|
15745 | ],
|
15746 | [
|
15747 | "0x687ad44ad37f03c2",
|
15748 | 1
|
15749 | ],
|
15750 | [
|
15751 | "0xab3c0572291feb8b",
|
15752 | 1
|
15753 | ],
|
15754 | [
|
15755 | "0xbc9d89904f5b923f",
|
15756 | 1
|
15757 | ],
|
15758 | [
|
15759 | "0x37c8bb1350a9a2a8",
|
15760 | 1
|
15761 | ],
|
15762 | [
|
15763 | "0xf3ff14d5ab527059",
|
15764 | 1
|
15765 | ]
|
15766 | ]
|
15767 | ],
|
15768 | [
|
15769 | 12245277,
|
15770 | 9281,
|
15771 | [
|
15772 | [
|
15773 | "0xdf6acb689907609b",
|
15774 | 4
|
15775 | ],
|
15776 | [
|
15777 | "0x37e397fc7c91f5e4",
|
15778 | 1
|
15779 | ],
|
15780 | [
|
15781 | "0x40fe3ad401f8959a",
|
15782 | 6
|
15783 | ],
|
15784 | [
|
15785 | "0xd2bc9897eed08f15",
|
15786 | 3
|
15787 | ],
|
15788 | [
|
15789 | "0xf78b278be53f454c",
|
15790 | 2
|
15791 | ],
|
15792 | [
|
15793 | "0xaf2c0297a23e6d3d",
|
15794 | 2
|
15795 | ],
|
15796 | [
|
15797 | "0x49eaaf1b548a0cb0",
|
15798 | 1
|
15799 | ],
|
15800 | [
|
15801 | "0x91d5df18b0d2cf58",
|
15802 | 1
|
15803 | ],
|
15804 | [
|
15805 | "0xed99c5acb25eedf5",
|
15806 | 3
|
15807 | ],
|
15808 | [
|
15809 | "0xcbca25e39f142387",
|
15810 | 2
|
15811 | ],
|
15812 | [
|
15813 | "0x687ad44ad37f03c2",
|
15814 | 1
|
15815 | ],
|
15816 | [
|
15817 | "0xab3c0572291feb8b",
|
15818 | 1
|
15819 | ],
|
15820 | [
|
15821 | "0xbc9d89904f5b923f",
|
15822 | 1
|
15823 | ],
|
15824 | [
|
15825 | "0x37c8bb1350a9a2a8",
|
15826 | 1
|
15827 | ],
|
15828 | [
|
15829 | "0xf3ff14d5ab527059",
|
15830 | 1
|
15831 | ]
|
15832 | ]
|
15833 | ],
|
15834 | [
|
15835 | 12532644,
|
15836 | 9291,
|
15837 | [
|
15838 | [
|
15839 | "0xdf6acb689907609b",
|
15840 | 4
|
15841 | ],
|
15842 | [
|
15843 | "0x37e397fc7c91f5e4",
|
15844 | 1
|
15845 | ],
|
15846 | [
|
15847 | "0x40fe3ad401f8959a",
|
15848 | 6
|
15849 | ],
|
15850 | [
|
15851 | "0x17a6bc0d0062aeb3",
|
15852 | 1
|
15853 | ],
|
15854 | [
|
15855 | "0xd2bc9897eed08f15",
|
15856 | 3
|
15857 | ],
|
15858 | [
|
15859 | "0xf78b278be53f454c",
|
15860 | 2
|
15861 | ],
|
15862 | [
|
15863 | "0xaf2c0297a23e6d3d",
|
15864 | 2
|
15865 | ],
|
15866 | [
|
15867 | "0x49eaaf1b548a0cb0",
|
15868 | 1
|
15869 | ],
|
15870 | [
|
15871 | "0x91d5df18b0d2cf58",
|
15872 | 1
|
15873 | ],
|
15874 | [
|
15875 | "0xed99c5acb25eedf5",
|
15876 | 3
|
15877 | ],
|
15878 | [
|
15879 | "0xcbca25e39f142387",
|
15880 | 2
|
15881 | ],
|
15882 | [
|
15883 | "0x687ad44ad37f03c2",
|
15884 | 1
|
15885 | ],
|
15886 | [
|
15887 | "0xab3c0572291feb8b",
|
15888 | 1
|
15889 | ],
|
15890 | [
|
15891 | "0xbc9d89904f5b923f",
|
15892 | 1
|
15893 | ],
|
15894 | [
|
15895 | "0x37c8bb1350a9a2a8",
|
15896 | 1
|
15897 | ],
|
15898 | [
|
15899 | "0xf3ff14d5ab527059",
|
15900 | 1
|
15901 | ]
|
15902 | ]
|
15903 | ],
|
15904 | [
|
15905 | 12876189,
|
15906 | 9300,
|
15907 | [
|
15908 | [
|
15909 | "0xdf6acb689907609b",
|
15910 | 4
|
15911 | ],
|
15912 | [
|
15913 | "0x37e397fc7c91f5e4",
|
15914 | 1
|
15915 | ],
|
15916 | [
|
15917 | "0x40fe3ad401f8959a",
|
15918 | 6
|
15919 | ],
|
15920 | [
|
15921 | "0x17a6bc0d0062aeb3",
|
15922 | 1
|
15923 | ],
|
15924 | [
|
15925 | "0xd2bc9897eed08f15",
|
15926 | 3
|
15927 | ],
|
15928 | [
|
15929 | "0xf78b278be53f454c",
|
15930 | 2
|
15931 | ],
|
15932 | [
|
15933 | "0xaf2c0297a23e6d3d",
|
15934 | 2
|
15935 | ],
|
15936 | [
|
15937 | "0x49eaaf1b548a0cb0",
|
15938 | 1
|
15939 | ],
|
15940 | [
|
15941 | "0x91d5df18b0d2cf58",
|
15942 | 1
|
15943 | ],
|
15944 | [
|
15945 | "0xed99c5acb25eedf5",
|
15946 | 3
|
15947 | ],
|
15948 | [
|
15949 | "0xcbca25e39f142387",
|
15950 | 2
|
15951 | ],
|
15952 | [
|
15953 | "0x687ad44ad37f03c2",
|
15954 | 1
|
15955 | ],
|
15956 | [
|
15957 | "0xab3c0572291feb8b",
|
15958 | 1
|
15959 | ],
|
15960 | [
|
15961 | "0xbc9d89904f5b923f",
|
15962 | 1
|
15963 | ],
|
15964 | [
|
15965 | "0x37c8bb1350a9a2a8",
|
15966 | 1
|
15967 | ],
|
15968 | [
|
15969 | "0xf3ff14d5ab527059",
|
15970 | 1
|
15971 | ]
|
15972 | ]
|
15973 | ],
|
15974 | [
|
15975 | 13800015,
|
15976 | 9340,
|
15977 | [
|
15978 | [
|
15979 | "0xdf6acb689907609b",
|
15980 | 4
|
15981 | ],
|
15982 | [
|
15983 | "0x37e397fc7c91f5e4",
|
15984 | 1
|
15985 | ],
|
15986 | [
|
15987 | "0x40fe3ad401f8959a",
|
15988 | 6
|
15989 | ],
|
15990 | [
|
15991 | "0x17a6bc0d0062aeb3",
|
15992 | 1
|
15993 | ],
|
15994 | [
|
15995 | "0xd2bc9897eed08f15",
|
15996 | 3
|
15997 | ],
|
15998 | [
|
15999 | "0xf78b278be53f454c",
|
16000 | 2
|
16001 | ],
|
16002 | [
|
16003 | "0xaf2c0297a23e6d3d",
|
16004 | 2
|
16005 | ],
|
16006 | [
|
16007 | "0x49eaaf1b548a0cb0",
|
16008 | 1
|
16009 | ],
|
16010 | [
|
16011 | "0x91d5df18b0d2cf58",
|
16012 | 1
|
16013 | ],
|
16014 | [
|
16015 | "0xed99c5acb25eedf5",
|
16016 | 3
|
16017 | ],
|
16018 | [
|
16019 | "0xcbca25e39f142387",
|
16020 | 2
|
16021 | ],
|
16022 | [
|
16023 | "0x687ad44ad37f03c2",
|
16024 | 1
|
16025 | ],
|
16026 | [
|
16027 | "0xab3c0572291feb8b",
|
16028 | 1
|
16029 | ],
|
16030 | [
|
16031 | "0xbc9d89904f5b923f",
|
16032 | 1
|
16033 | ],
|
16034 | [
|
16035 | "0x37c8bb1350a9a2a8",
|
16036 | 2
|
16037 | ],
|
16038 | [
|
16039 | "0xf3ff14d5ab527059",
|
16040 | 2
|
16041 | ]
|
16042 | ]
|
16043 | ],
|
16044 | [
|
16045 | 14188833,
|
16046 | 9360,
|
16047 | [
|
16048 | [
|
16049 | "0xdf6acb689907609b",
|
16050 | 4
|
16051 | ],
|
16052 | [
|
16053 | "0x37e397fc7c91f5e4",
|
16054 | 1
|
16055 | ],
|
16056 | [
|
16057 | "0x40fe3ad401f8959a",
|
16058 | 6
|
16059 | ],
|
16060 | [
|
16061 | "0x17a6bc0d0062aeb3",
|
16062 | 1
|
16063 | ],
|
16064 | [
|
16065 | "0xd2bc9897eed08f15",
|
16066 | 3
|
16067 | ],
|
16068 | [
|
16069 | "0xf78b278be53f454c",
|
16070 | 2
|
16071 | ],
|
16072 | [
|
16073 | "0xaf2c0297a23e6d3d",
|
16074 | 2
|
16075 | ],
|
16076 | [
|
16077 | "0x49eaaf1b548a0cb0",
|
16078 | 1
|
16079 | ],
|
16080 | [
|
16081 | "0x91d5df18b0d2cf58",
|
16082 | 1
|
16083 | ],
|
16084 | [
|
16085 | "0xed99c5acb25eedf5",
|
16086 | 3
|
16087 | ],
|
16088 | [
|
16089 | "0xcbca25e39f142387",
|
16090 | 2
|
16091 | ],
|
16092 | [
|
16093 | "0x687ad44ad37f03c2",
|
16094 | 1
|
16095 | ],
|
16096 | [
|
16097 | "0xab3c0572291feb8b",
|
16098 | 1
|
16099 | ],
|
16100 | [
|
16101 | "0xbc9d89904f5b923f",
|
16102 | 1
|
16103 | ],
|
16104 | [
|
16105 | "0x37c8bb1350a9a2a8",
|
16106 | 2
|
16107 | ],
|
16108 | [
|
16109 | "0xf3ff14d5ab527059",
|
16110 | 2
|
16111 | ]
|
16112 | ]
|
16113 | ],
|
16114 | [
|
16115 | 14543918,
|
16116 | 9370,
|
16117 | [
|
16118 | [
|
16119 | "0xdf6acb689907609b",
|
16120 | 4
|
16121 | ],
|
16122 | [
|
16123 | "0x37e397fc7c91f5e4",
|
16124 | 1
|
16125 | ],
|
16126 | [
|
16127 | "0x40fe3ad401f8959a",
|
16128 | 6
|
16129 | ],
|
16130 | [
|
16131 | "0x17a6bc0d0062aeb3",
|
16132 | 1
|
16133 | ],
|
16134 | [
|
16135 | "0xd2bc9897eed08f15",
|
16136 | 3
|
16137 | ],
|
16138 | [
|
16139 | "0xf78b278be53f454c",
|
16140 | 2
|
16141 | ],
|
16142 | [
|
16143 | "0xaf2c0297a23e6d3d",
|
16144 | 2
|
16145 | ],
|
16146 | [
|
16147 | "0x49eaaf1b548a0cb0",
|
16148 | 1
|
16149 | ],
|
16150 | [
|
16151 | "0x91d5df18b0d2cf58",
|
16152 | 1
|
16153 | ],
|
16154 | [
|
16155 | "0xed99c5acb25eedf5",
|
16156 | 3
|
16157 | ],
|
16158 | [
|
16159 | "0xcbca25e39f142387",
|
16160 | 2
|
16161 | ],
|
16162 | [
|
16163 | "0x687ad44ad37f03c2",
|
16164 | 1
|
16165 | ],
|
16166 | [
|
16167 | "0xab3c0572291feb8b",
|
16168 | 1
|
16169 | ],
|
16170 | [
|
16171 | "0xbc9d89904f5b923f",
|
16172 | 1
|
16173 | ],
|
16174 | [
|
16175 | "0x37c8bb1350a9a2a8",
|
16176 | 2
|
16177 | ],
|
16178 | [
|
16179 | "0xf3ff14d5ab527059",
|
16180 | 2
|
16181 | ]
|
16182 | ]
|
16183 | ],
|
16184 | [
|
16185 | 15978362,
|
16186 | 9420,
|
16187 | [
|
16188 | [
|
16189 | "0xdf6acb689907609b",
|
16190 | 4
|
16191 | ],
|
16192 | [
|
16193 | "0x37e397fc7c91f5e4",
|
16194 | 2
|
16195 | ],
|
16196 | [
|
16197 | "0x40fe3ad401f8959a",
|
16198 | 6
|
16199 | ],
|
16200 | [
|
16201 | "0x17a6bc0d0062aeb3",
|
16202 | 1
|
16203 | ],
|
16204 | [
|
16205 | "0x18ef58a3b67ba770",
|
16206 | 1
|
16207 | ],
|
16208 | [
|
16209 | "0xd2bc9897eed08f15",
|
16210 | 3
|
16211 | ],
|
16212 | [
|
16213 | "0xf78b278be53f454c",
|
16214 | 2
|
16215 | ],
|
16216 | [
|
16217 | "0xaf2c0297a23e6d3d",
|
16218 | 4
|
16219 | ],
|
16220 | [
|
16221 | "0x49eaaf1b548a0cb0",
|
16222 | 2
|
16223 | ],
|
16224 | [
|
16225 | "0x91d5df18b0d2cf58",
|
16226 | 2
|
16227 | ],
|
16228 | [
|
16229 | "0xed99c5acb25eedf5",
|
16230 | 3
|
16231 | ],
|
16232 | [
|
16233 | "0xcbca25e39f142387",
|
16234 | 2
|
16235 | ],
|
16236 | [
|
16237 | "0x687ad44ad37f03c2",
|
16238 | 1
|
16239 | ],
|
16240 | [
|
16241 | "0xab3c0572291feb8b",
|
16242 | 1
|
16243 | ],
|
16244 | [
|
16245 | "0xbc9d89904f5b923f",
|
16246 | 1
|
16247 | ],
|
16248 | [
|
16249 | "0x37c8bb1350a9a2a8",
|
16250 | 4
|
16251 | ],
|
16252 | [
|
16253 | "0xf3ff14d5ab527059",
|
16254 | 3
|
16255 | ]
|
16256 | ]
|
16257 | ],
|
16258 | [
|
16259 | 16450000,
|
16260 | 9430,
|
16261 | [
|
16262 | [
|
16263 | "0xdf6acb689907609b",
|
16264 | 4
|
16265 | ],
|
16266 | [
|
16267 | "0x37e397fc7c91f5e4",
|
16268 | 2
|
16269 | ],
|
16270 | [
|
16271 | "0x40fe3ad401f8959a",
|
16272 | 6
|
16273 | ],
|
16274 | [
|
16275 | "0x17a6bc0d0062aeb3",
|
16276 | 1
|
16277 | ],
|
16278 | [
|
16279 | "0x18ef58a3b67ba770",
|
16280 | 1
|
16281 | ],
|
16282 | [
|
16283 | "0xd2bc9897eed08f15",
|
16284 | 3
|
16285 | ],
|
16286 | [
|
16287 | "0xf78b278be53f454c",
|
16288 | 2
|
16289 | ],
|
16290 | [
|
16291 | "0xaf2c0297a23e6d3d",
|
16292 | 4
|
16293 | ],
|
16294 | [
|
16295 | "0x49eaaf1b548a0cb0",
|
16296 | 2
|
16297 | ],
|
16298 | [
|
16299 | "0x91d5df18b0d2cf58",
|
16300 | 2
|
16301 | ],
|
16302 | [
|
16303 | "0xed99c5acb25eedf5",
|
16304 | 3
|
16305 | ],
|
16306 | [
|
16307 | "0xcbca25e39f142387",
|
16308 | 2
|
16309 | ],
|
16310 | [
|
16311 | "0x687ad44ad37f03c2",
|
16312 | 1
|
16313 | ],
|
16314 | [
|
16315 | "0xab3c0572291feb8b",
|
16316 | 1
|
16317 | ],
|
16318 | [
|
16319 | "0xbc9d89904f5b923f",
|
16320 | 1
|
16321 | ],
|
16322 | [
|
16323 | "0x37c8bb1350a9a2a8",
|
16324 | 4
|
16325 | ],
|
16326 | [
|
16327 | "0xf3ff14d5ab527059",
|
16328 | 3
|
16329 | ]
|
16330 | ]
|
16331 | ],
|
16332 | [
|
16333 | 17840000,
|
16334 | 9431,
|
16335 | [
|
16336 | [
|
16337 | "0xdf6acb689907609b",
|
16338 | 4
|
16339 | ],
|
16340 | [
|
16341 | "0x37e397fc7c91f5e4",
|
16342 | 2
|
16343 | ],
|
16344 | [
|
16345 | "0x40fe3ad401f8959a",
|
16346 | 6
|
16347 | ],
|
16348 | [
|
16349 | "0x17a6bc0d0062aeb3",
|
16350 | 1
|
16351 | ],
|
16352 | [
|
16353 | "0x18ef58a3b67ba770",
|
16354 | 1
|
16355 | ],
|
16356 | [
|
16357 | "0xd2bc9897eed08f15",
|
16358 | 3
|
16359 | ],
|
16360 | [
|
16361 | "0xf78b278be53f454c",
|
16362 | 2
|
16363 | ],
|
16364 | [
|
16365 | "0xaf2c0297a23e6d3d",
|
16366 | 4
|
16367 | ],
|
16368 | [
|
16369 | "0x49eaaf1b548a0cb0",
|
16370 | 2
|
16371 | ],
|
16372 | [
|
16373 | "0x91d5df18b0d2cf58",
|
16374 | 2
|
16375 | ],
|
16376 | [
|
16377 | "0xed99c5acb25eedf5",
|
16378 | 3
|
16379 | ],
|
16380 | [
|
16381 | "0xcbca25e39f142387",
|
16382 | 2
|
16383 | ],
|
16384 | [
|
16385 | "0x687ad44ad37f03c2",
|
16386 | 1
|
16387 | ],
|
16388 | [
|
16389 | "0xab3c0572291feb8b",
|
16390 | 1
|
16391 | ],
|
16392 | [
|
16393 | "0xbc9d89904f5b923f",
|
16394 | 1
|
16395 | ],
|
16396 | [
|
16397 | "0x37c8bb1350a9a2a8",
|
16398 | 4
|
16399 | ],
|
16400 | [
|
16401 | "0xf3ff14d5ab527059",
|
16402 | 3
|
16403 | ]
|
16404 | ]
|
16405 | ],
|
16406 | [
|
16407 | 18407475,
|
16408 | 1000001,
|
16409 | [
|
16410 | [
|
16411 | "0xdf6acb689907609b",
|
16412 | 4
|
16413 | ],
|
16414 | [
|
16415 | "0x37e397fc7c91f5e4",
|
16416 | 2
|
16417 | ],
|
16418 | [
|
16419 | "0x40fe3ad401f8959a",
|
16420 | 6
|
16421 | ],
|
16422 | [
|
16423 | "0x17a6bc0d0062aeb3",
|
16424 | 1
|
16425 | ],
|
16426 | [
|
16427 | "0x18ef58a3b67ba770",
|
16428 | 1
|
16429 | ],
|
16430 | [
|
16431 | "0xd2bc9897eed08f15",
|
16432 | 3
|
16433 | ],
|
16434 | [
|
16435 | "0xf78b278be53f454c",
|
16436 | 2
|
16437 | ],
|
16438 | [
|
16439 | "0xaf2c0297a23e6d3d",
|
16440 | 5
|
16441 | ],
|
16442 | [
|
16443 | "0x49eaaf1b548a0cb0",
|
16444 | 3
|
16445 | ],
|
16446 | [
|
16447 | "0x91d5df18b0d2cf58",
|
16448 | 2
|
16449 | ],
|
16450 | [
|
16451 | "0xed99c5acb25eedf5",
|
16452 | 3
|
16453 | ],
|
16454 | [
|
16455 | "0xcbca25e39f142387",
|
16456 | 2
|
16457 | ],
|
16458 | [
|
16459 | "0x687ad44ad37f03c2",
|
16460 | 1
|
16461 | ],
|
16462 | [
|
16463 | "0xab3c0572291feb8b",
|
16464 | 1
|
16465 | ],
|
16466 | [
|
16467 | "0xbc9d89904f5b923f",
|
16468 | 1
|
16469 | ],
|
16470 | [
|
16471 | "0x37c8bb1350a9a2a8",
|
16472 | 4
|
16473 | ],
|
16474 | [
|
16475 | "0xf3ff14d5ab527059",
|
16476 | 3
|
16477 | ]
|
16478 | ]
|
16479 | ],
|
16480 | [
|
16481 | 19551000,
|
16482 | 1001002,
|
16483 | [
|
16484 | [
|
16485 | "0xdf6acb689907609b",
|
16486 | 4
|
16487 | ],
|
16488 | [
|
16489 | "0x37e397fc7c91f5e4",
|
16490 | 2
|
16491 | ],
|
16492 | [
|
16493 | "0x40fe3ad401f8959a",
|
16494 | 6
|
16495 | ],
|
16496 | [
|
16497 | "0x17a6bc0d0062aeb3",
|
16498 | 1
|
16499 | ],
|
16500 | [
|
16501 | "0x18ef58a3b67ba770",
|
16502 | 1
|
16503 | ],
|
16504 | [
|
16505 | "0xd2bc9897eed08f15",
|
16506 | 3
|
16507 | ],
|
16508 | [
|
16509 | "0xf78b278be53f454c",
|
16510 | 2
|
16511 | ],
|
16512 | [
|
16513 | "0xaf2c0297a23e6d3d",
|
16514 | 5
|
16515 | ],
|
16516 | [
|
16517 | "0x49eaaf1b548a0cb0",
|
16518 | 3
|
16519 | ],
|
16520 | [
|
16521 | "0x91d5df18b0d2cf58",
|
16522 | 2
|
16523 | ],
|
16524 | [
|
16525 | "0x2a5e924655399e60",
|
16526 | 1
|
16527 | ],
|
16528 | [
|
16529 | "0xed99c5acb25eedf5",
|
16530 | 3
|
16531 | ],
|
16532 | [
|
16533 | "0xcbca25e39f142387",
|
16534 | 2
|
16535 | ],
|
16536 | [
|
16537 | "0x687ad44ad37f03c2",
|
16538 | 1
|
16539 | ],
|
16540 | [
|
16541 | "0xab3c0572291feb8b",
|
16542 | 1
|
16543 | ],
|
16544 | [
|
16545 | "0xbc9d89904f5b923f",
|
16546 | 1
|
16547 | ],
|
16548 | [
|
16549 | "0x37c8bb1350a9a2a8",
|
16550 | 4
|
16551 | ],
|
16552 | [
|
16553 | "0xf3ff14d5ab527059",
|
16554 | 3
|
16555 | ],
|
16556 | [
|
16557 | "0xfbc577b9d747efd6",
|
16558 | 1
|
16559 | ]
|
16560 | ]
|
16561 | ],
|
16562 | [
|
16563 | 20181758,
|
16564 | 1001003,
|
16565 | [
|
16566 | [
|
16567 | "0xdf6acb689907609b",
|
16568 | 4
|
16569 | ],
|
16570 | [
|
16571 | "0x37e397fc7c91f5e4",
|
16572 | 2
|
16573 | ],
|
16574 | [
|
16575 | "0x40fe3ad401f8959a",
|
16576 | 6
|
16577 | ],
|
16578 | [
|
16579 | "0x17a6bc0d0062aeb3",
|
16580 | 1
|
16581 | ],
|
16582 | [
|
16583 | "0x18ef58a3b67ba770",
|
16584 | 1
|
16585 | ],
|
16586 | [
|
16587 | "0xd2bc9897eed08f15",
|
16588 | 3
|
16589 | ],
|
16590 | [
|
16591 | "0xf78b278be53f454c",
|
16592 | 2
|
16593 | ],
|
16594 | [
|
16595 | "0xaf2c0297a23e6d3d",
|
16596 | 5
|
16597 | ],
|
16598 | [
|
16599 | "0x49eaaf1b548a0cb0",
|
16600 | 3
|
16601 | ],
|
16602 | [
|
16603 | "0x91d5df18b0d2cf58",
|
16604 | 2
|
16605 | ],
|
16606 | [
|
16607 | "0x2a5e924655399e60",
|
16608 | 1
|
16609 | ],
|
16610 | [
|
16611 | "0xed99c5acb25eedf5",
|
16612 | 3
|
16613 | ],
|
16614 | [
|
16615 | "0xcbca25e39f142387",
|
16616 | 2
|
16617 | ],
|
16618 | [
|
16619 | "0x687ad44ad37f03c2",
|
16620 | 1
|
16621 | ],
|
16622 | [
|
16623 | "0xab3c0572291feb8b",
|
16624 | 1
|
16625 | ],
|
16626 | [
|
16627 | "0xbc9d89904f5b923f",
|
16628 | 1
|
16629 | ],
|
16630 | [
|
16631 | "0x37c8bb1350a9a2a8",
|
16632 | 4
|
16633 | ],
|
16634 | [
|
16635 | "0xf3ff14d5ab527059",
|
16636 | 3
|
16637 | ],
|
16638 | [
|
16639 | "0xfbc577b9d747efd6",
|
16640 | 1
|
16641 | ]
|
16642 | ]
|
16643 | ],
|
16644 | [
|
16645 | 20438530,
|
16646 | 1002000,
|
16647 | [
|
16648 | [
|
16649 | "0xdf6acb689907609b",
|
16650 | 4
|
16651 | ],
|
16652 | [
|
16653 | "0x37e397fc7c91f5e4",
|
16654 | 2
|
16655 | ],
|
16656 | [
|
16657 | "0x40fe3ad401f8959a",
|
16658 | 6
|
16659 | ],
|
16660 | [
|
16661 | "0x17a6bc0d0062aeb3",
|
16662 | 1
|
16663 | ],
|
16664 | [
|
16665 | "0x18ef58a3b67ba770",
|
16666 | 1
|
16667 | ],
|
16668 | [
|
16669 | "0xd2bc9897eed08f15",
|
16670 | 3
|
16671 | ],
|
16672 | [
|
16673 | "0xf78b278be53f454c",
|
16674 | 2
|
16675 | ],
|
16676 | [
|
16677 | "0xaf2c0297a23e6d3d",
|
16678 | 10
|
16679 | ],
|
16680 | [
|
16681 | "0x49eaaf1b548a0cb0",
|
16682 | 3
|
16683 | ],
|
16684 | [
|
16685 | "0x91d5df18b0d2cf58",
|
16686 | 2
|
16687 | ],
|
16688 | [
|
16689 | "0x2a5e924655399e60",
|
16690 | 1
|
16691 | ],
|
16692 | [
|
16693 | "0xed99c5acb25eedf5",
|
16694 | 3
|
16695 | ],
|
16696 | [
|
16697 | "0xcbca25e39f142387",
|
16698 | 2
|
16699 | ],
|
16700 | [
|
16701 | "0x687ad44ad37f03c2",
|
16702 | 1
|
16703 | ],
|
16704 | [
|
16705 | "0xab3c0572291feb8b",
|
16706 | 1
|
16707 | ],
|
16708 | [
|
16709 | "0xbc9d89904f5b923f",
|
16710 | 1
|
16711 | ],
|
16712 | [
|
16713 | "0x37c8bb1350a9a2a8",
|
16714 | 4
|
16715 | ],
|
16716 | [
|
16717 | "0xf3ff14d5ab527059",
|
16718 | 3
|
16719 | ],
|
16720 | [
|
16721 | "0xfbc577b9d747efd6",
|
16722 | 1
|
16723 | ]
|
16724 | ]
|
16725 | ],
|
16726 | [
|
16727 | 21169168,
|
16728 | 1002004,
|
16729 | [
|
16730 | [
|
16731 | "0xdf6acb689907609b",
|
16732 | 4
|
16733 | ],
|
16734 | [
|
16735 | "0x37e397fc7c91f5e4",
|
16736 | 2
|
16737 | ],
|
16738 | [
|
16739 | "0x40fe3ad401f8959a",
|
16740 | 6
|
16741 | ],
|
16742 | [
|
16743 | "0x17a6bc0d0062aeb3",
|
16744 | 1
|
16745 | ],
|
16746 | [
|
16747 | "0x18ef58a3b67ba770",
|
16748 | 1
|
16749 | ],
|
16750 | [
|
16751 | "0xd2bc9897eed08f15",
|
16752 | 3
|
16753 | ],
|
16754 | [
|
16755 | "0xf78b278be53f454c",
|
16756 | 2
|
16757 | ],
|
16758 | [
|
16759 | "0xaf2c0297a23e6d3d",
|
16760 | 10
|
16761 | ],
|
16762 | [
|
16763 | "0x49eaaf1b548a0cb0",
|
16764 | 3
|
16765 | ],
|
16766 | [
|
16767 | "0x91d5df18b0d2cf58",
|
16768 | 2
|
16769 | ],
|
16770 | [
|
16771 | "0x2a5e924655399e60",
|
16772 | 1
|
16773 | ],
|
16774 | [
|
16775 | "0xed99c5acb25eedf5",
|
16776 | 3
|
16777 | ],
|
16778 | [
|
16779 | "0xcbca25e39f142387",
|
16780 | 2
|
16781 | ],
|
16782 | [
|
16783 | "0x687ad44ad37f03c2",
|
16784 | 1
|
16785 | ],
|
16786 | [
|
16787 | "0xab3c0572291feb8b",
|
16788 | 1
|
16789 | ],
|
16790 | [
|
16791 | "0xbc9d89904f5b923f",
|
16792 | 1
|
16793 | ],
|
16794 | [
|
16795 | "0x37c8bb1350a9a2a8",
|
16796 | 4
|
16797 | ],
|
16798 | [
|
16799 | "0xf3ff14d5ab527059",
|
16800 | 3
|
16801 | ],
|
16802 | [
|
16803 | "0xfbc577b9d747efd6",
|
16804 | 1
|
16805 | ]
|
16806 | ]
|
16807 | ]
|
16808 | ];
|
16809 |
|
16810 | const upgrades$1 = [
|
16811 | [
|
16812 | 214356,
|
16813 | 4,
|
16814 | [
|
16815 | [
|
16816 | "0xdf6acb689907609b",
|
16817 | 3
|
16818 | ],
|
16819 | [
|
16820 | "0x37e397fc7c91f5e4",
|
16821 | 1
|
16822 | ],
|
16823 | [
|
16824 | "0x40fe3ad401f8959a",
|
16825 | 4
|
16826 | ],
|
16827 | [
|
16828 | "0xd2bc9897eed08f15",
|
16829 | 2
|
16830 | ],
|
16831 | [
|
16832 | "0xf78b278be53f454c",
|
16833 | 2
|
16834 | ],
|
16835 | [
|
16836 | "0xaf2c0297a23e6d3d",
|
16837 | 3
|
16838 | ],
|
16839 | [
|
16840 | "0xed99c5acb25eedf5",
|
16841 | 2
|
16842 | ],
|
16843 | [
|
16844 | "0xcbca25e39f142387",
|
16845 | 1
|
16846 | ],
|
16847 | [
|
16848 | "0x687ad44ad37f03c2",
|
16849 | 1
|
16850 | ],
|
16851 | [
|
16852 | "0xab3c0572291feb8b",
|
16853 | 1
|
16854 | ],
|
16855 | [
|
16856 | "0xbc9d89904f5b923f",
|
16857 | 1
|
16858 | ],
|
16859 | [
|
16860 | "0x37c8bb1350a9a2a8",
|
16861 | 1
|
16862 | ]
|
16863 | ]
|
16864 | ],
|
16865 | [
|
16866 | 392764,
|
16867 | 7,
|
16868 | [
|
16869 | [
|
16870 | "0xdf6acb689907609b",
|
16871 | 3
|
16872 | ],
|
16873 | [
|
16874 | "0x37e397fc7c91f5e4",
|
16875 | 1
|
16876 | ],
|
16877 | [
|
16878 | "0x40fe3ad401f8959a",
|
16879 | 4
|
16880 | ],
|
16881 | [
|
16882 | "0xd2bc9897eed08f15",
|
16883 | 2
|
16884 | ],
|
16885 | [
|
16886 | "0xf78b278be53f454c",
|
16887 | 2
|
16888 | ],
|
16889 | [
|
16890 | "0xaf2c0297a23e6d3d",
|
16891 | 3
|
16892 | ],
|
16893 | [
|
16894 | "0xed99c5acb25eedf5",
|
16895 | 2
|
16896 | ],
|
16897 | [
|
16898 | "0xcbca25e39f142387",
|
16899 | 2
|
16900 | ],
|
16901 | [
|
16902 | "0x687ad44ad37f03c2",
|
16903 | 1
|
16904 | ],
|
16905 | [
|
16906 | "0xab3c0572291feb8b",
|
16907 | 1
|
16908 | ],
|
16909 | [
|
16910 | "0xbc9d89904f5b923f",
|
16911 | 1
|
16912 | ],
|
16913 | [
|
16914 | "0x37c8bb1350a9a2a8",
|
16915 | 1
|
16916 | ]
|
16917 | ]
|
16918 | ],
|
16919 | [
|
16920 | 409740,
|
16921 | 8,
|
16922 | [
|
16923 | [
|
16924 | "0xdf6acb689907609b",
|
16925 | 3
|
16926 | ],
|
16927 | [
|
16928 | "0x37e397fc7c91f5e4",
|
16929 | 1
|
16930 | ],
|
16931 | [
|
16932 | "0x40fe3ad401f8959a",
|
16933 | 4
|
16934 | ],
|
16935 | [
|
16936 | "0xd2bc9897eed08f15",
|
16937 | 2
|
16938 | ],
|
16939 | [
|
16940 | "0xf78b278be53f454c",
|
16941 | 2
|
16942 | ],
|
16943 | [
|
16944 | "0xaf2c0297a23e6d3d",
|
16945 | 3
|
16946 | ],
|
16947 | [
|
16948 | "0xed99c5acb25eedf5",
|
16949 | 2
|
16950 | ],
|
16951 | [
|
16952 | "0xcbca25e39f142387",
|
16953 | 2
|
16954 | ],
|
16955 | [
|
16956 | "0x687ad44ad37f03c2",
|
16957 | 1
|
16958 | ],
|
16959 | [
|
16960 | "0xab3c0572291feb8b",
|
16961 | 1
|
16962 | ],
|
16963 | [
|
16964 | "0xbc9d89904f5b923f",
|
16965 | 1
|
16966 | ],
|
16967 | [
|
16968 | "0x37c8bb1350a9a2a8",
|
16969 | 1
|
16970 | ]
|
16971 | ]
|
16972 | ],
|
16973 | [
|
16974 | 809976,
|
16975 | 20,
|
16976 | [
|
16977 | [
|
16978 | "0xdf6acb689907609b",
|
16979 | 3
|
16980 | ],
|
16981 | [
|
16982 | "0x37e397fc7c91f5e4",
|
16983 | 1
|
16984 | ],
|
16985 | [
|
16986 | "0x40fe3ad401f8959a",
|
16987 | 4
|
16988 | ],
|
16989 | [
|
16990 | "0xd2bc9897eed08f15",
|
16991 | 2
|
16992 | ],
|
16993 | [
|
16994 | "0xf78b278be53f454c",
|
16995 | 2
|
16996 | ],
|
16997 | [
|
16998 | "0xaf2c0297a23e6d3d",
|
16999 | 3
|
17000 | ],
|
17001 | [
|
17002 | "0xed99c5acb25eedf5",
|
17003 | 2
|
17004 | ],
|
17005 | [
|
17006 | "0xcbca25e39f142387",
|
17007 | 2
|
17008 | ],
|
17009 | [
|
17010 | "0x687ad44ad37f03c2",
|
17011 | 1
|
17012 | ],
|
17013 | [
|
17014 | "0xab3c0572291feb8b",
|
17015 | 1
|
17016 | ],
|
17017 | [
|
17018 | "0xbc9d89904f5b923f",
|
17019 | 1
|
17020 | ],
|
17021 | [
|
17022 | "0x37c8bb1350a9a2a8",
|
17023 | 1
|
17024 | ]
|
17025 | ]
|
17026 | ],
|
17027 | [
|
17028 | 877581,
|
17029 | 24,
|
17030 | [
|
17031 | [
|
17032 | "0xdf6acb689907609b",
|
17033 | 3
|
17034 | ],
|
17035 | [
|
17036 | "0x37e397fc7c91f5e4",
|
17037 | 1
|
17038 | ],
|
17039 | [
|
17040 | "0x40fe3ad401f8959a",
|
17041 | 4
|
17042 | ],
|
17043 | [
|
17044 | "0xd2bc9897eed08f15",
|
17045 | 2
|
17046 | ],
|
17047 | [
|
17048 | "0xf78b278be53f454c",
|
17049 | 2
|
17050 | ],
|
17051 | [
|
17052 | "0xaf2c0297a23e6d3d",
|
17053 | 3
|
17054 | ],
|
17055 | [
|
17056 | "0xed99c5acb25eedf5",
|
17057 | 2
|
17058 | ],
|
17059 | [
|
17060 | "0xcbca25e39f142387",
|
17061 | 2
|
17062 | ],
|
17063 | [
|
17064 | "0x687ad44ad37f03c2",
|
17065 | 1
|
17066 | ],
|
17067 | [
|
17068 | "0xab3c0572291feb8b",
|
17069 | 1
|
17070 | ],
|
17071 | [
|
17072 | "0xbc9d89904f5b923f",
|
17073 | 1
|
17074 | ],
|
17075 | [
|
17076 | "0x37c8bb1350a9a2a8",
|
17077 | 1
|
17078 | ]
|
17079 | ]
|
17080 | ],
|
17081 | [
|
17082 | 879238,
|
17083 | 25,
|
17084 | [
|
17085 | [
|
17086 | "0xdf6acb689907609b",
|
17087 | 3
|
17088 | ],
|
17089 | [
|
17090 | "0x37e397fc7c91f5e4",
|
17091 | 1
|
17092 | ],
|
17093 | [
|
17094 | "0x40fe3ad401f8959a",
|
17095 | 4
|
17096 | ],
|
17097 | [
|
17098 | "0xd2bc9897eed08f15",
|
17099 | 2
|
17100 | ],
|
17101 | [
|
17102 | "0xf78b278be53f454c",
|
17103 | 2
|
17104 | ],
|
17105 | [
|
17106 | "0xaf2c0297a23e6d3d",
|
17107 | 3
|
17108 | ],
|
17109 | [
|
17110 | "0xed99c5acb25eedf5",
|
17111 | 2
|
17112 | ],
|
17113 | [
|
17114 | "0xcbca25e39f142387",
|
17115 | 2
|
17116 | ],
|
17117 | [
|
17118 | "0x687ad44ad37f03c2",
|
17119 | 1
|
17120 | ],
|
17121 | [
|
17122 | "0xab3c0572291feb8b",
|
17123 | 1
|
17124 | ],
|
17125 | [
|
17126 | "0xbc9d89904f5b923f",
|
17127 | 1
|
17128 | ],
|
17129 | [
|
17130 | "0x37c8bb1350a9a2a8",
|
17131 | 1
|
17132 | ]
|
17133 | ]
|
17134 | ],
|
17135 | [
|
17136 | 889472,
|
17137 | 26,
|
17138 | [
|
17139 | [
|
17140 | "0xdf6acb689907609b",
|
17141 | 3
|
17142 | ],
|
17143 | [
|
17144 | "0x37e397fc7c91f5e4",
|
17145 | 1
|
17146 | ],
|
17147 | [
|
17148 | "0x40fe3ad401f8959a",
|
17149 | 4
|
17150 | ],
|
17151 | [
|
17152 | "0xd2bc9897eed08f15",
|
17153 | 2
|
17154 | ],
|
17155 | [
|
17156 | "0xf78b278be53f454c",
|
17157 | 2
|
17158 | ],
|
17159 | [
|
17160 | "0xaf2c0297a23e6d3d",
|
17161 | 3
|
17162 | ],
|
17163 | [
|
17164 | "0xed99c5acb25eedf5",
|
17165 | 2
|
17166 | ],
|
17167 | [
|
17168 | "0xcbca25e39f142387",
|
17169 | 2
|
17170 | ],
|
17171 | [
|
17172 | "0x687ad44ad37f03c2",
|
17173 | 1
|
17174 | ],
|
17175 | [
|
17176 | "0xab3c0572291feb8b",
|
17177 | 1
|
17178 | ],
|
17179 | [
|
17180 | "0xbc9d89904f5b923f",
|
17181 | 1
|
17182 | ],
|
17183 | [
|
17184 | "0x37c8bb1350a9a2a8",
|
17185 | 1
|
17186 | ]
|
17187 | ]
|
17188 | ],
|
17189 | [
|
17190 | 902937,
|
17191 | 27,
|
17192 | [
|
17193 | [
|
17194 | "0xdf6acb689907609b",
|
17195 | 3
|
17196 | ],
|
17197 | [
|
17198 | "0x37e397fc7c91f5e4",
|
17199 | 1
|
17200 | ],
|
17201 | [
|
17202 | "0x40fe3ad401f8959a",
|
17203 | 4
|
17204 | ],
|
17205 | [
|
17206 | "0xd2bc9897eed08f15",
|
17207 | 2
|
17208 | ],
|
17209 | [
|
17210 | "0xf78b278be53f454c",
|
17211 | 2
|
17212 | ],
|
17213 | [
|
17214 | "0xaf2c0297a23e6d3d",
|
17215 | 3
|
17216 | ],
|
17217 | [
|
17218 | "0xed99c5acb25eedf5",
|
17219 | 2
|
17220 | ],
|
17221 | [
|
17222 | "0xcbca25e39f142387",
|
17223 | 2
|
17224 | ],
|
17225 | [
|
17226 | "0x687ad44ad37f03c2",
|
17227 | 1
|
17228 | ],
|
17229 | [
|
17230 | "0xab3c0572291feb8b",
|
17231 | 1
|
17232 | ],
|
17233 | [
|
17234 | "0xbc9d89904f5b923f",
|
17235 | 1
|
17236 | ],
|
17237 | [
|
17238 | "0x37c8bb1350a9a2a8",
|
17239 | 1
|
17240 | ]
|
17241 | ]
|
17242 | ],
|
17243 | [
|
17244 | 932751,
|
17245 | 28,
|
17246 | [
|
17247 | [
|
17248 | "0xdf6acb689907609b",
|
17249 | 3
|
17250 | ],
|
17251 | [
|
17252 | "0x37e397fc7c91f5e4",
|
17253 | 1
|
17254 | ],
|
17255 | [
|
17256 | "0x40fe3ad401f8959a",
|
17257 | 4
|
17258 | ],
|
17259 | [
|
17260 | "0xd2bc9897eed08f15",
|
17261 | 2
|
17262 | ],
|
17263 | [
|
17264 | "0xf78b278be53f454c",
|
17265 | 2
|
17266 | ],
|
17267 | [
|
17268 | "0xaf2c0297a23e6d3d",
|
17269 | 3
|
17270 | ],
|
17271 | [
|
17272 | "0xed99c5acb25eedf5",
|
17273 | 2
|
17274 | ],
|
17275 | [
|
17276 | "0xcbca25e39f142387",
|
17277 | 2
|
17278 | ],
|
17279 | [
|
17280 | "0x687ad44ad37f03c2",
|
17281 | 1
|
17282 | ],
|
17283 | [
|
17284 | "0xab3c0572291feb8b",
|
17285 | 1
|
17286 | ],
|
17287 | [
|
17288 | "0xbc9d89904f5b923f",
|
17289 | 1
|
17290 | ],
|
17291 | [
|
17292 | "0x37c8bb1350a9a2a8",
|
17293 | 1
|
17294 | ]
|
17295 | ]
|
17296 | ],
|
17297 | [
|
17298 | 991142,
|
17299 | 29,
|
17300 | [
|
17301 | [
|
17302 | "0xdf6acb689907609b",
|
17303 | 3
|
17304 | ],
|
17305 | [
|
17306 | "0x37e397fc7c91f5e4",
|
17307 | 1
|
17308 | ],
|
17309 | [
|
17310 | "0x40fe3ad401f8959a",
|
17311 | 4
|
17312 | ],
|
17313 | [
|
17314 | "0xd2bc9897eed08f15",
|
17315 | 2
|
17316 | ],
|
17317 | [
|
17318 | "0xf78b278be53f454c",
|
17319 | 2
|
17320 | ],
|
17321 | [
|
17322 | "0xaf2c0297a23e6d3d",
|
17323 | 3
|
17324 | ],
|
17325 | [
|
17326 | "0xed99c5acb25eedf5",
|
17327 | 2
|
17328 | ],
|
17329 | [
|
17330 | "0xcbca25e39f142387",
|
17331 | 2
|
17332 | ],
|
17333 | [
|
17334 | "0x687ad44ad37f03c2",
|
17335 | 1
|
17336 | ],
|
17337 | [
|
17338 | "0xab3c0572291feb8b",
|
17339 | 1
|
17340 | ],
|
17341 | [
|
17342 | "0xbc9d89904f5b923f",
|
17343 | 1
|
17344 | ],
|
17345 | [
|
17346 | "0x37c8bb1350a9a2a8",
|
17347 | 1
|
17348 | ]
|
17349 | ]
|
17350 | ],
|
17351 | [
|
17352 | 1030162,
|
17353 | 31,
|
17354 | [
|
17355 | [
|
17356 | "0xdf6acb689907609b",
|
17357 | 3
|
17358 | ],
|
17359 | [
|
17360 | "0x37e397fc7c91f5e4",
|
17361 | 1
|
17362 | ],
|
17363 | [
|
17364 | "0x40fe3ad401f8959a",
|
17365 | 4
|
17366 | ],
|
17367 | [
|
17368 | "0xd2bc9897eed08f15",
|
17369 | 2
|
17370 | ],
|
17371 | [
|
17372 | "0xf78b278be53f454c",
|
17373 | 2
|
17374 | ],
|
17375 | [
|
17376 | "0xaf2c0297a23e6d3d",
|
17377 | 3
|
17378 | ],
|
17379 | [
|
17380 | "0xed99c5acb25eedf5",
|
17381 | 2
|
17382 | ],
|
17383 | [
|
17384 | "0xcbca25e39f142387",
|
17385 | 2
|
17386 | ],
|
17387 | [
|
17388 | "0x687ad44ad37f03c2",
|
17389 | 1
|
17390 | ],
|
17391 | [
|
17392 | "0xab3c0572291feb8b",
|
17393 | 1
|
17394 | ],
|
17395 | [
|
17396 | "0xbc9d89904f5b923f",
|
17397 | 1
|
17398 | ],
|
17399 | [
|
17400 | "0x37c8bb1350a9a2a8",
|
17401 | 1
|
17402 | ]
|
17403 | ]
|
17404 | ],
|
17405 | [
|
17406 | 1119657,
|
17407 | 32,
|
17408 | [
|
17409 | [
|
17410 | "0xdf6acb689907609b",
|
17411 | 3
|
17412 | ],
|
17413 | [
|
17414 | "0x37e397fc7c91f5e4",
|
17415 | 1
|
17416 | ],
|
17417 | [
|
17418 | "0x40fe3ad401f8959a",
|
17419 | 4
|
17420 | ],
|
17421 | [
|
17422 | "0xd2bc9897eed08f15",
|
17423 | 2
|
17424 | ],
|
17425 | [
|
17426 | "0xf78b278be53f454c",
|
17427 | 2
|
17428 | ],
|
17429 | [
|
17430 | "0xaf2c0297a23e6d3d",
|
17431 | 3
|
17432 | ],
|
17433 | [
|
17434 | "0xed99c5acb25eedf5",
|
17435 | 2
|
17436 | ],
|
17437 | [
|
17438 | "0xcbca25e39f142387",
|
17439 | 2
|
17440 | ],
|
17441 | [
|
17442 | "0x687ad44ad37f03c2",
|
17443 | 1
|
17444 | ],
|
17445 | [
|
17446 | "0xab3c0572291feb8b",
|
17447 | 1
|
17448 | ],
|
17449 | [
|
17450 | "0xbc9d89904f5b923f",
|
17451 | 1
|
17452 | ],
|
17453 | [
|
17454 | "0x37c8bb1350a9a2a8",
|
17455 | 1
|
17456 | ]
|
17457 | ]
|
17458 | ],
|
17459 | [
|
17460 | 1199282,
|
17461 | 33,
|
17462 | [
|
17463 | [
|
17464 | "0xdf6acb689907609b",
|
17465 | 3
|
17466 | ],
|
17467 | [
|
17468 | "0x37e397fc7c91f5e4",
|
17469 | 1
|
17470 | ],
|
17471 | [
|
17472 | "0x40fe3ad401f8959a",
|
17473 | 4
|
17474 | ],
|
17475 | [
|
17476 | "0xd2bc9897eed08f15",
|
17477 | 2
|
17478 | ],
|
17479 | [
|
17480 | "0xf78b278be53f454c",
|
17481 | 2
|
17482 | ],
|
17483 | [
|
17484 | "0xaf2c0297a23e6d3d",
|
17485 | 3
|
17486 | ],
|
17487 | [
|
17488 | "0xed99c5acb25eedf5",
|
17489 | 2
|
17490 | ],
|
17491 | [
|
17492 | "0xcbca25e39f142387",
|
17493 | 2
|
17494 | ],
|
17495 | [
|
17496 | "0x687ad44ad37f03c2",
|
17497 | 1
|
17498 | ],
|
17499 | [
|
17500 | "0xab3c0572291feb8b",
|
17501 | 1
|
17502 | ],
|
17503 | [
|
17504 | "0xbc9d89904f5b923f",
|
17505 | 1
|
17506 | ],
|
17507 | [
|
17508 | "0x37c8bb1350a9a2a8",
|
17509 | 1
|
17510 | ]
|
17511 | ]
|
17512 | ],
|
17513 | [
|
17514 | 1342534,
|
17515 | 34,
|
17516 | [
|
17517 | [
|
17518 | "0xdf6acb689907609b",
|
17519 | 3
|
17520 | ],
|
17521 | [
|
17522 | "0x37e397fc7c91f5e4",
|
17523 | 1
|
17524 | ],
|
17525 | [
|
17526 | "0x40fe3ad401f8959a",
|
17527 | 4
|
17528 | ],
|
17529 | [
|
17530 | "0xd2bc9897eed08f15",
|
17531 | 2
|
17532 | ],
|
17533 | [
|
17534 | "0xf78b278be53f454c",
|
17535 | 2
|
17536 | ],
|
17537 | [
|
17538 | "0xaf2c0297a23e6d3d",
|
17539 | 3
|
17540 | ],
|
17541 | [
|
17542 | "0xed99c5acb25eedf5",
|
17543 | 2
|
17544 | ],
|
17545 | [
|
17546 | "0xcbca25e39f142387",
|
17547 | 2
|
17548 | ],
|
17549 | [
|
17550 | "0x687ad44ad37f03c2",
|
17551 | 1
|
17552 | ],
|
17553 | [
|
17554 | "0xab3c0572291feb8b",
|
17555 | 1
|
17556 | ],
|
17557 | [
|
17558 | "0xbc9d89904f5b923f",
|
17559 | 1
|
17560 | ],
|
17561 | [
|
17562 | "0x37c8bb1350a9a2a8",
|
17563 | 1
|
17564 | ]
|
17565 | ]
|
17566 | ],
|
17567 | [
|
17568 | 1392263,
|
17569 | 35,
|
17570 | [
|
17571 | [
|
17572 | "0xdf6acb689907609b",
|
17573 | 3
|
17574 | ],
|
17575 | [
|
17576 | "0x37e397fc7c91f5e4",
|
17577 | 1
|
17578 | ],
|
17579 | [
|
17580 | "0x40fe3ad401f8959a",
|
17581 | 4
|
17582 | ],
|
17583 | [
|
17584 | "0xd2bc9897eed08f15",
|
17585 | 2
|
17586 | ],
|
17587 | [
|
17588 | "0xf78b278be53f454c",
|
17589 | 2
|
17590 | ],
|
17591 | [
|
17592 | "0xaf2c0297a23e6d3d",
|
17593 | 3
|
17594 | ],
|
17595 | [
|
17596 | "0xed99c5acb25eedf5",
|
17597 | 2
|
17598 | ],
|
17599 | [
|
17600 | "0xcbca25e39f142387",
|
17601 | 2
|
17602 | ],
|
17603 | [
|
17604 | "0x687ad44ad37f03c2",
|
17605 | 1
|
17606 | ],
|
17607 | [
|
17608 | "0xab3c0572291feb8b",
|
17609 | 1
|
17610 | ],
|
17611 | [
|
17612 | "0xbc9d89904f5b923f",
|
17613 | 1
|
17614 | ],
|
17615 | [
|
17616 | "0x37c8bb1350a9a2a8",
|
17617 | 1
|
17618 | ]
|
17619 | ]
|
17620 | ],
|
17621 | [
|
17622 | 1431703,
|
17623 | 36,
|
17624 | [
|
17625 | [
|
17626 | "0xdf6acb689907609b",
|
17627 | 3
|
17628 | ],
|
17629 | [
|
17630 | "0x37e397fc7c91f5e4",
|
17631 | 1
|
17632 | ],
|
17633 | [
|
17634 | "0x40fe3ad401f8959a",
|
17635 | 4
|
17636 | ],
|
17637 | [
|
17638 | "0xd2bc9897eed08f15",
|
17639 | 2
|
17640 | ],
|
17641 | [
|
17642 | "0xf78b278be53f454c",
|
17643 | 2
|
17644 | ],
|
17645 | [
|
17646 | "0xaf2c0297a23e6d3d",
|
17647 | 3
|
17648 | ],
|
17649 | [
|
17650 | "0xed99c5acb25eedf5",
|
17651 | 2
|
17652 | ],
|
17653 | [
|
17654 | "0xcbca25e39f142387",
|
17655 | 2
|
17656 | ],
|
17657 | [
|
17658 | "0x687ad44ad37f03c2",
|
17659 | 1
|
17660 | ],
|
17661 | [
|
17662 | "0xab3c0572291feb8b",
|
17663 | 1
|
17664 | ],
|
17665 | [
|
17666 | "0xbc9d89904f5b923f",
|
17667 | 1
|
17668 | ],
|
17669 | [
|
17670 | "0x37c8bb1350a9a2a8",
|
17671 | 1
|
17672 | ]
|
17673 | ]
|
17674 | ],
|
17675 | [
|
17676 | 1433369,
|
17677 | 37,
|
17678 | [
|
17679 | [
|
17680 | "0xdf6acb689907609b",
|
17681 | 3
|
17682 | ],
|
17683 | [
|
17684 | "0x37e397fc7c91f5e4",
|
17685 | 1
|
17686 | ],
|
17687 | [
|
17688 | "0x40fe3ad401f8959a",
|
17689 | 4
|
17690 | ],
|
17691 | [
|
17692 | "0xd2bc9897eed08f15",
|
17693 | 2
|
17694 | ],
|
17695 | [
|
17696 | "0xf78b278be53f454c",
|
17697 | 2
|
17698 | ],
|
17699 | [
|
17700 | "0xaf2c0297a23e6d3d",
|
17701 | 3
|
17702 | ],
|
17703 | [
|
17704 | "0xed99c5acb25eedf5",
|
17705 | 2
|
17706 | ],
|
17707 | [
|
17708 | "0xcbca25e39f142387",
|
17709 | 2
|
17710 | ],
|
17711 | [
|
17712 | "0x687ad44ad37f03c2",
|
17713 | 1
|
17714 | ],
|
17715 | [
|
17716 | "0xab3c0572291feb8b",
|
17717 | 1
|
17718 | ],
|
17719 | [
|
17720 | "0xbc9d89904f5b923f",
|
17721 | 1
|
17722 | ],
|
17723 | [
|
17724 | "0x37c8bb1350a9a2a8",
|
17725 | 1
|
17726 | ]
|
17727 | ]
|
17728 | ],
|
17729 | [
|
17730 | 1490972,
|
17731 | 41,
|
17732 | [
|
17733 | [
|
17734 | "0xdf6acb689907609b",
|
17735 | 3
|
17736 | ],
|
17737 | [
|
17738 | "0x37e397fc7c91f5e4",
|
17739 | 1
|
17740 | ],
|
17741 | [
|
17742 | "0x40fe3ad401f8959a",
|
17743 | 4
|
17744 | ],
|
17745 | [
|
17746 | "0xd2bc9897eed08f15",
|
17747 | 2
|
17748 | ],
|
17749 | [
|
17750 | "0xf78b278be53f454c",
|
17751 | 2
|
17752 | ],
|
17753 | [
|
17754 | "0xaf2c0297a23e6d3d",
|
17755 | 3
|
17756 | ],
|
17757 | [
|
17758 | "0xed99c5acb25eedf5",
|
17759 | 2
|
17760 | ],
|
17761 | [
|
17762 | "0xcbca25e39f142387",
|
17763 | 2
|
17764 | ],
|
17765 | [
|
17766 | "0x687ad44ad37f03c2",
|
17767 | 1
|
17768 | ],
|
17769 | [
|
17770 | "0xab3c0572291feb8b",
|
17771 | 1
|
17772 | ],
|
17773 | [
|
17774 | "0xbc9d89904f5b923f",
|
17775 | 1
|
17776 | ],
|
17777 | [
|
17778 | "0x37c8bb1350a9a2a8",
|
17779 | 1
|
17780 | ]
|
17781 | ]
|
17782 | ],
|
17783 | [
|
17784 | 2087397,
|
17785 | 43,
|
17786 | [
|
17787 | [
|
17788 | "0xdf6acb689907609b",
|
17789 | 3
|
17790 | ],
|
17791 | [
|
17792 | "0x37e397fc7c91f5e4",
|
17793 | 1
|
17794 | ],
|
17795 | [
|
17796 | "0x40fe3ad401f8959a",
|
17797 | 4
|
17798 | ],
|
17799 | [
|
17800 | "0xd2bc9897eed08f15",
|
17801 | 2
|
17802 | ],
|
17803 | [
|
17804 | "0xf78b278be53f454c",
|
17805 | 2
|
17806 | ],
|
17807 | [
|
17808 | "0xaf2c0297a23e6d3d",
|
17809 | 3
|
17810 | ],
|
17811 | [
|
17812 | "0xed99c5acb25eedf5",
|
17813 | 2
|
17814 | ],
|
17815 | [
|
17816 | "0xcbca25e39f142387",
|
17817 | 2
|
17818 | ],
|
17819 | [
|
17820 | "0x687ad44ad37f03c2",
|
17821 | 1
|
17822 | ],
|
17823 | [
|
17824 | "0xab3c0572291feb8b",
|
17825 | 1
|
17826 | ],
|
17827 | [
|
17828 | "0xbc9d89904f5b923f",
|
17829 | 1
|
17830 | ],
|
17831 | [
|
17832 | "0x37c8bb1350a9a2a8",
|
17833 | 1
|
17834 | ]
|
17835 | ]
|
17836 | ],
|
17837 | [
|
17838 | 2316688,
|
17839 | 44,
|
17840 | [
|
17841 | [
|
17842 | "0xdf6acb689907609b",
|
17843 | 3
|
17844 | ],
|
17845 | [
|
17846 | "0x37e397fc7c91f5e4",
|
17847 | 1
|
17848 | ],
|
17849 | [
|
17850 | "0x40fe3ad401f8959a",
|
17851 | 4
|
17852 | ],
|
17853 | [
|
17854 | "0xd2bc9897eed08f15",
|
17855 | 2
|
17856 | ],
|
17857 | [
|
17858 | "0xf78b278be53f454c",
|
17859 | 2
|
17860 | ],
|
17861 | [
|
17862 | "0xaf2c0297a23e6d3d",
|
17863 | 3
|
17864 | ],
|
17865 | [
|
17866 | "0xed99c5acb25eedf5",
|
17867 | 2
|
17868 | ],
|
17869 | [
|
17870 | "0xcbca25e39f142387",
|
17871 | 2
|
17872 | ],
|
17873 | [
|
17874 | "0x687ad44ad37f03c2",
|
17875 | 1
|
17876 | ],
|
17877 | [
|
17878 | "0xab3c0572291feb8b",
|
17879 | 1
|
17880 | ],
|
17881 | [
|
17882 | "0xbc9d89904f5b923f",
|
17883 | 1
|
17884 | ],
|
17885 | [
|
17886 | "0x37c8bb1350a9a2a8",
|
17887 | 1
|
17888 | ]
|
17889 | ]
|
17890 | ],
|
17891 | [
|
17892 | 2549864,
|
17893 | 45,
|
17894 | [
|
17895 | [
|
17896 | "0xdf6acb689907609b",
|
17897 | 3
|
17898 | ],
|
17899 | [
|
17900 | "0x37e397fc7c91f5e4",
|
17901 | 1
|
17902 | ],
|
17903 | [
|
17904 | "0x40fe3ad401f8959a",
|
17905 | 4
|
17906 | ],
|
17907 | [
|
17908 | "0xd2bc9897eed08f15",
|
17909 | 2
|
17910 | ],
|
17911 | [
|
17912 | "0xf78b278be53f454c",
|
17913 | 2
|
17914 | ],
|
17915 | [
|
17916 | "0xaf2c0297a23e6d3d",
|
17917 | 1
|
17918 | ],
|
17919 | [
|
17920 | "0xed99c5acb25eedf5",
|
17921 | 2
|
17922 | ],
|
17923 | [
|
17924 | "0xcbca25e39f142387",
|
17925 | 2
|
17926 | ],
|
17927 | [
|
17928 | "0x687ad44ad37f03c2",
|
17929 | 1
|
17930 | ],
|
17931 | [
|
17932 | "0xab3c0572291feb8b",
|
17933 | 1
|
17934 | ],
|
17935 | [
|
17936 | "0xbc9d89904f5b923f",
|
17937 | 1
|
17938 | ],
|
17939 | [
|
17940 | "0x37c8bb1350a9a2a8",
|
17941 | 1
|
17942 | ]
|
17943 | ]
|
17944 | ],
|
17945 | [
|
17946 | 3925782,
|
17947 | 46,
|
17948 | [
|
17949 | [
|
17950 | "0xdf6acb689907609b",
|
17951 | 3
|
17952 | ],
|
17953 | [
|
17954 | "0x37e397fc7c91f5e4",
|
17955 | 1
|
17956 | ],
|
17957 | [
|
17958 | "0x40fe3ad401f8959a",
|
17959 | 4
|
17960 | ],
|
17961 | [
|
17962 | "0xd2bc9897eed08f15",
|
17963 | 2
|
17964 | ],
|
17965 | [
|
17966 | "0xf78b278be53f454c",
|
17967 | 2
|
17968 | ],
|
17969 | [
|
17970 | "0xaf2c0297a23e6d3d",
|
17971 | 1
|
17972 | ],
|
17973 | [
|
17974 | "0xed99c5acb25eedf5",
|
17975 | 2
|
17976 | ],
|
17977 | [
|
17978 | "0xcbca25e39f142387",
|
17979 | 2
|
17980 | ],
|
17981 | [
|
17982 | "0x687ad44ad37f03c2",
|
17983 | 1
|
17984 | ],
|
17985 | [
|
17986 | "0xab3c0572291feb8b",
|
17987 | 1
|
17988 | ],
|
17989 | [
|
17990 | "0xbc9d89904f5b923f",
|
17991 | 1
|
17992 | ],
|
17993 | [
|
17994 | "0x37c8bb1350a9a2a8",
|
17995 | 1
|
17996 | ]
|
17997 | ]
|
17998 | ],
|
17999 | [
|
18000 | 3925843,
|
18001 | 47,
|
18002 | [
|
18003 | [
|
18004 | "0xdf6acb689907609b",
|
18005 | 3
|
18006 | ],
|
18007 | [
|
18008 | "0x37e397fc7c91f5e4",
|
18009 | 1
|
18010 | ],
|
18011 | [
|
18012 | "0x40fe3ad401f8959a",
|
18013 | 4
|
18014 | ],
|
18015 | [
|
18016 | "0xd2bc9897eed08f15",
|
18017 | 2
|
18018 | ],
|
18019 | [
|
18020 | "0xf78b278be53f454c",
|
18021 | 2
|
18022 | ],
|
18023 | [
|
18024 | "0xaf2c0297a23e6d3d",
|
18025 | 1
|
18026 | ],
|
18027 | [
|
18028 | "0xed99c5acb25eedf5",
|
18029 | 2
|
18030 | ],
|
18031 | [
|
18032 | "0xcbca25e39f142387",
|
18033 | 2
|
18034 | ],
|
18035 | [
|
18036 | "0x687ad44ad37f03c2",
|
18037 | 1
|
18038 | ],
|
18039 | [
|
18040 | "0xab3c0572291feb8b",
|
18041 | 1
|
18042 | ],
|
18043 | [
|
18044 | "0xbc9d89904f5b923f",
|
18045 | 1
|
18046 | ],
|
18047 | [
|
18048 | "0x37c8bb1350a9a2a8",
|
18049 | 1
|
18050 | ]
|
18051 | ]
|
18052 | ],
|
18053 | [
|
18054 | 4207800,
|
18055 | 48,
|
18056 | [
|
18057 | [
|
18058 | "0xdf6acb689907609b",
|
18059 | 3
|
18060 | ],
|
18061 | [
|
18062 | "0x37e397fc7c91f5e4",
|
18063 | 1
|
18064 | ],
|
18065 | [
|
18066 | "0x40fe3ad401f8959a",
|
18067 | 4
|
18068 | ],
|
18069 | [
|
18070 | "0xd2bc9897eed08f15",
|
18071 | 2
|
18072 | ],
|
18073 | [
|
18074 | "0xf78b278be53f454c",
|
18075 | 2
|
18076 | ],
|
18077 | [
|
18078 | "0xaf2c0297a23e6d3d",
|
18079 | 1
|
18080 | ],
|
18081 | [
|
18082 | "0xed99c5acb25eedf5",
|
18083 | 2
|
18084 | ],
|
18085 | [
|
18086 | "0xcbca25e39f142387",
|
18087 | 2
|
18088 | ],
|
18089 | [
|
18090 | "0x687ad44ad37f03c2",
|
18091 | 1
|
18092 | ],
|
18093 | [
|
18094 | "0xab3c0572291feb8b",
|
18095 | 1
|
18096 | ],
|
18097 | [
|
18098 | "0xbc9d89904f5b923f",
|
18099 | 1
|
18100 | ],
|
18101 | [
|
18102 | "0x37c8bb1350a9a2a8",
|
18103 | 1
|
18104 | ]
|
18105 | ]
|
18106 | ],
|
18107 | [
|
18108 | 4627944,
|
18109 | 49,
|
18110 | [
|
18111 | [
|
18112 | "0xdf6acb689907609b",
|
18113 | 3
|
18114 | ],
|
18115 | [
|
18116 | "0x37e397fc7c91f5e4",
|
18117 | 1
|
18118 | ],
|
18119 | [
|
18120 | "0x40fe3ad401f8959a",
|
18121 | 4
|
18122 | ],
|
18123 | [
|
18124 | "0xd2bc9897eed08f15",
|
18125 | 2
|
18126 | ],
|
18127 | [
|
18128 | "0xf78b278be53f454c",
|
18129 | 2
|
18130 | ],
|
18131 | [
|
18132 | "0xaf2c0297a23e6d3d",
|
18133 | 1
|
18134 | ],
|
18135 | [
|
18136 | "0xed99c5acb25eedf5",
|
18137 | 2
|
18138 | ],
|
18139 | [
|
18140 | "0xcbca25e39f142387",
|
18141 | 2
|
18142 | ],
|
18143 | [
|
18144 | "0x687ad44ad37f03c2",
|
18145 | 1
|
18146 | ],
|
18147 | [
|
18148 | "0xab3c0572291feb8b",
|
18149 | 1
|
18150 | ],
|
18151 | [
|
18152 | "0xbc9d89904f5b923f",
|
18153 | 1
|
18154 | ],
|
18155 | [
|
18156 | "0x37c8bb1350a9a2a8",
|
18157 | 1
|
18158 | ]
|
18159 | ]
|
18160 | ],
|
18161 | [
|
18162 | 5124076,
|
18163 | 50,
|
18164 | [
|
18165 | [
|
18166 | "0xdf6acb689907609b",
|
18167 | 3
|
18168 | ],
|
18169 | [
|
18170 | "0x37e397fc7c91f5e4",
|
18171 | 1
|
18172 | ],
|
18173 | [
|
18174 | "0x40fe3ad401f8959a",
|
18175 | 4
|
18176 | ],
|
18177 | [
|
18178 | "0xd2bc9897eed08f15",
|
18179 | 2
|
18180 | ],
|
18181 | [
|
18182 | "0xf78b278be53f454c",
|
18183 | 2
|
18184 | ],
|
18185 | [
|
18186 | "0xaf2c0297a23e6d3d",
|
18187 | 1
|
18188 | ],
|
18189 | [
|
18190 | "0xed99c5acb25eedf5",
|
18191 | 2
|
18192 | ],
|
18193 | [
|
18194 | "0xcbca25e39f142387",
|
18195 | 2
|
18196 | ],
|
18197 | [
|
18198 | "0x687ad44ad37f03c2",
|
18199 | 1
|
18200 | ],
|
18201 | [
|
18202 | "0xab3c0572291feb8b",
|
18203 | 1
|
18204 | ],
|
18205 | [
|
18206 | "0xbc9d89904f5b923f",
|
18207 | 1
|
18208 | ],
|
18209 | [
|
18210 | "0x37c8bb1350a9a2a8",
|
18211 | 1
|
18212 | ]
|
18213 | ]
|
18214 | ],
|
18215 | [
|
18216 | 5478664,
|
18217 | 900,
|
18218 | [
|
18219 | [
|
18220 | "0xdf6acb689907609b",
|
18221 | 3
|
18222 | ],
|
18223 | [
|
18224 | "0x37e397fc7c91f5e4",
|
18225 | 1
|
18226 | ],
|
18227 | [
|
18228 | "0x40fe3ad401f8959a",
|
18229 | 4
|
18230 | ],
|
18231 | [
|
18232 | "0xd2bc9897eed08f15",
|
18233 | 2
|
18234 | ],
|
18235 | [
|
18236 | "0xf78b278be53f454c",
|
18237 | 2
|
18238 | ],
|
18239 | [
|
18240 | "0xaf2c0297a23e6d3d",
|
18241 | 1
|
18242 | ],
|
18243 | [
|
18244 | "0xed99c5acb25eedf5",
|
18245 | 2
|
18246 | ],
|
18247 | [
|
18248 | "0xcbca25e39f142387",
|
18249 | 2
|
18250 | ],
|
18251 | [
|
18252 | "0x687ad44ad37f03c2",
|
18253 | 1
|
18254 | ],
|
18255 | [
|
18256 | "0xab3c0572291feb8b",
|
18257 | 1
|
18258 | ],
|
18259 | [
|
18260 | "0xbc9d89904f5b923f",
|
18261 | 1
|
18262 | ],
|
18263 | [
|
18264 | "0x37c8bb1350a9a2a8",
|
18265 | 1
|
18266 | ]
|
18267 | ]
|
18268 | ],
|
18269 | [
|
18270 | 5482450,
|
18271 | 9000,
|
18272 | [
|
18273 | [
|
18274 | "0xdf6acb689907609b",
|
18275 | 3
|
18276 | ],
|
18277 | [
|
18278 | "0x37e397fc7c91f5e4",
|
18279 | 1
|
18280 | ],
|
18281 | [
|
18282 | "0x40fe3ad401f8959a",
|
18283 | 4
|
18284 | ],
|
18285 | [
|
18286 | "0xd2bc9897eed08f15",
|
18287 | 2
|
18288 | ],
|
18289 | [
|
18290 | "0xf78b278be53f454c",
|
18291 | 2
|
18292 | ],
|
18293 | [
|
18294 | "0xaf2c0297a23e6d3d",
|
18295 | 1
|
18296 | ],
|
18297 | [
|
18298 | "0x49eaaf1b548a0cb0",
|
18299 | 1
|
18300 | ],
|
18301 | [
|
18302 | "0x91d5df18b0d2cf58",
|
18303 | 1
|
18304 | ],
|
18305 | [
|
18306 | "0xed99c5acb25eedf5",
|
18307 | 2
|
18308 | ],
|
18309 | [
|
18310 | "0xcbca25e39f142387",
|
18311 | 2
|
18312 | ],
|
18313 | [
|
18314 | "0x687ad44ad37f03c2",
|
18315 | 1
|
18316 | ],
|
18317 | [
|
18318 | "0xab3c0572291feb8b",
|
18319 | 1
|
18320 | ],
|
18321 | [
|
18322 | "0xbc9d89904f5b923f",
|
18323 | 1
|
18324 | ],
|
18325 | [
|
18326 | "0x37c8bb1350a9a2a8",
|
18327 | 1
|
18328 | ]
|
18329 | ]
|
18330 | ],
|
18331 | [
|
18332 | 5584305,
|
18333 | 9010,
|
18334 | [
|
18335 | [
|
18336 | "0xdf6acb689907609b",
|
18337 | 3
|
18338 | ],
|
18339 | [
|
18340 | "0x37e397fc7c91f5e4",
|
18341 | 1
|
18342 | ],
|
18343 | [
|
18344 | "0x40fe3ad401f8959a",
|
18345 | 5
|
18346 | ],
|
18347 | [
|
18348 | "0xd2bc9897eed08f15",
|
18349 | 2
|
18350 | ],
|
18351 | [
|
18352 | "0xf78b278be53f454c",
|
18353 | 2
|
18354 | ],
|
18355 | [
|
18356 | "0xaf2c0297a23e6d3d",
|
18357 | 1
|
18358 | ],
|
18359 | [
|
18360 | "0x49eaaf1b548a0cb0",
|
18361 | 1
|
18362 | ],
|
18363 | [
|
18364 | "0x91d5df18b0d2cf58",
|
18365 | 1
|
18366 | ],
|
18367 | [
|
18368 | "0xed99c5acb25eedf5",
|
18369 | 2
|
18370 | ],
|
18371 | [
|
18372 | "0xcbca25e39f142387",
|
18373 | 2
|
18374 | ],
|
18375 | [
|
18376 | "0x687ad44ad37f03c2",
|
18377 | 1
|
18378 | ],
|
18379 | [
|
18380 | "0xab3c0572291feb8b",
|
18381 | 1
|
18382 | ],
|
18383 | [
|
18384 | "0xbc9d89904f5b923f",
|
18385 | 1
|
18386 | ],
|
18387 | [
|
18388 | "0x37c8bb1350a9a2a8",
|
18389 | 1
|
18390 | ]
|
18391 | ]
|
18392 | ],
|
18393 | [
|
18394 | 5784566,
|
18395 | 9030,
|
18396 | [
|
18397 | [
|
18398 | "0xdf6acb689907609b",
|
18399 | 3
|
18400 | ],
|
18401 | [
|
18402 | "0x37e397fc7c91f5e4",
|
18403 | 1
|
18404 | ],
|
18405 | [
|
18406 | "0x40fe3ad401f8959a",
|
18407 | 5
|
18408 | ],
|
18409 | [
|
18410 | "0xd2bc9897eed08f15",
|
18411 | 2
|
18412 | ],
|
18413 | [
|
18414 | "0xf78b278be53f454c",
|
18415 | 2
|
18416 | ],
|
18417 | [
|
18418 | "0xaf2c0297a23e6d3d",
|
18419 | 1
|
18420 | ],
|
18421 | [
|
18422 | "0x49eaaf1b548a0cb0",
|
18423 | 1
|
18424 | ],
|
18425 | [
|
18426 | "0x91d5df18b0d2cf58",
|
18427 | 1
|
18428 | ],
|
18429 | [
|
18430 | "0xed99c5acb25eedf5",
|
18431 | 2
|
18432 | ],
|
18433 | [
|
18434 | "0xcbca25e39f142387",
|
18435 | 2
|
18436 | ],
|
18437 | [
|
18438 | "0x687ad44ad37f03c2",
|
18439 | 1
|
18440 | ],
|
18441 | [
|
18442 | "0xab3c0572291feb8b",
|
18443 | 1
|
18444 | ],
|
18445 | [
|
18446 | "0xbc9d89904f5b923f",
|
18447 | 1
|
18448 | ],
|
18449 | [
|
18450 | "0x37c8bb1350a9a2a8",
|
18451 | 1
|
18452 | ]
|
18453 | ]
|
18454 | ],
|
18455 | [
|
18456 | 5879822,
|
18457 | 9031,
|
18458 | [
|
18459 | [
|
18460 | "0xdf6acb689907609b",
|
18461 | 3
|
18462 | ],
|
18463 | [
|
18464 | "0x37e397fc7c91f5e4",
|
18465 | 1
|
18466 | ],
|
18467 | [
|
18468 | "0x40fe3ad401f8959a",
|
18469 | 5
|
18470 | ],
|
18471 | [
|
18472 | "0xd2bc9897eed08f15",
|
18473 | 2
|
18474 | ],
|
18475 | [
|
18476 | "0xf78b278be53f454c",
|
18477 | 2
|
18478 | ],
|
18479 | [
|
18480 | "0xaf2c0297a23e6d3d",
|
18481 | 1
|
18482 | ],
|
18483 | [
|
18484 | "0x49eaaf1b548a0cb0",
|
18485 | 1
|
18486 | ],
|
18487 | [
|
18488 | "0x91d5df18b0d2cf58",
|
18489 | 1
|
18490 | ],
|
18491 | [
|
18492 | "0xed99c5acb25eedf5",
|
18493 | 2
|
18494 | ],
|
18495 | [
|
18496 | "0xcbca25e39f142387",
|
18497 | 2
|
18498 | ],
|
18499 | [
|
18500 | "0x687ad44ad37f03c2",
|
18501 | 1
|
18502 | ],
|
18503 | [
|
18504 | "0xab3c0572291feb8b",
|
18505 | 1
|
18506 | ],
|
18507 | [
|
18508 | "0xbc9d89904f5b923f",
|
18509 | 1
|
18510 | ],
|
18511 | [
|
18512 | "0x37c8bb1350a9a2a8",
|
18513 | 1
|
18514 | ]
|
18515 | ]
|
18516 | ],
|
18517 | [
|
18518 | 5896856,
|
18519 | 9032,
|
18520 | [
|
18521 | [
|
18522 | "0xdf6acb689907609b",
|
18523 | 3
|
18524 | ],
|
18525 | [
|
18526 | "0x37e397fc7c91f5e4",
|
18527 | 1
|
18528 | ],
|
18529 | [
|
18530 | "0x40fe3ad401f8959a",
|
18531 | 5
|
18532 | ],
|
18533 | [
|
18534 | "0xd2bc9897eed08f15",
|
18535 | 2
|
18536 | ],
|
18537 | [
|
18538 | "0xf78b278be53f454c",
|
18539 | 2
|
18540 | ],
|
18541 | [
|
18542 | "0xaf2c0297a23e6d3d",
|
18543 | 1
|
18544 | ],
|
18545 | [
|
18546 | "0x49eaaf1b548a0cb0",
|
18547 | 1
|
18548 | ],
|
18549 | [
|
18550 | "0x91d5df18b0d2cf58",
|
18551 | 1
|
18552 | ],
|
18553 | [
|
18554 | "0xed99c5acb25eedf5",
|
18555 | 2
|
18556 | ],
|
18557 | [
|
18558 | "0xcbca25e39f142387",
|
18559 | 2
|
18560 | ],
|
18561 | [
|
18562 | "0x687ad44ad37f03c2",
|
18563 | 1
|
18564 | ],
|
18565 | [
|
18566 | "0xab3c0572291feb8b",
|
18567 | 1
|
18568 | ],
|
18569 | [
|
18570 | "0xbc9d89904f5b923f",
|
18571 | 1
|
18572 | ],
|
18573 | [
|
18574 | "0x37c8bb1350a9a2a8",
|
18575 | 1
|
18576 | ]
|
18577 | ]
|
18578 | ],
|
18579 | [
|
18580 | 5897316,
|
18581 | 9033,
|
18582 | [
|
18583 | [
|
18584 | "0xdf6acb689907609b",
|
18585 | 3
|
18586 | ],
|
18587 | [
|
18588 | "0x37e397fc7c91f5e4",
|
18589 | 1
|
18590 | ],
|
18591 | [
|
18592 | "0x40fe3ad401f8959a",
|
18593 | 5
|
18594 | ],
|
18595 | [
|
18596 | "0xd2bc9897eed08f15",
|
18597 | 2
|
18598 | ],
|
18599 | [
|
18600 | "0xf78b278be53f454c",
|
18601 | 2
|
18602 | ],
|
18603 | [
|
18604 | "0xaf2c0297a23e6d3d",
|
18605 | 1
|
18606 | ],
|
18607 | [
|
18608 | "0x49eaaf1b548a0cb0",
|
18609 | 1
|
18610 | ],
|
18611 | [
|
18612 | "0x91d5df18b0d2cf58",
|
18613 | 1
|
18614 | ],
|
18615 | [
|
18616 | "0xed99c5acb25eedf5",
|
18617 | 2
|
18618 | ],
|
18619 | [
|
18620 | "0xcbca25e39f142387",
|
18621 | 2
|
18622 | ],
|
18623 | [
|
18624 | "0x687ad44ad37f03c2",
|
18625 | 1
|
18626 | ],
|
18627 | [
|
18628 | "0xab3c0572291feb8b",
|
18629 | 1
|
18630 | ],
|
18631 | [
|
18632 | "0xbc9d89904f5b923f",
|
18633 | 1
|
18634 | ],
|
18635 | [
|
18636 | "0x37c8bb1350a9a2a8",
|
18637 | 1
|
18638 | ]
|
18639 | ]
|
18640 | ],
|
18641 | [
|
18642 | 6117927,
|
18643 | 9050,
|
18644 | [
|
18645 | [
|
18646 | "0xdf6acb689907609b",
|
18647 | 3
|
18648 | ],
|
18649 | [
|
18650 | "0x37e397fc7c91f5e4",
|
18651 | 1
|
18652 | ],
|
18653 | [
|
18654 | "0x40fe3ad401f8959a",
|
18655 | 5
|
18656 | ],
|
18657 | [
|
18658 | "0xd2bc9897eed08f15",
|
18659 | 2
|
18660 | ],
|
18661 | [
|
18662 | "0xf78b278be53f454c",
|
18663 | 2
|
18664 | ],
|
18665 | [
|
18666 | "0xaf2c0297a23e6d3d",
|
18667 | 1
|
18668 | ],
|
18669 | [
|
18670 | "0x49eaaf1b548a0cb0",
|
18671 | 1
|
18672 | ],
|
18673 | [
|
18674 | "0x91d5df18b0d2cf58",
|
18675 | 1
|
18676 | ],
|
18677 | [
|
18678 | "0xed99c5acb25eedf5",
|
18679 | 2
|
18680 | ],
|
18681 | [
|
18682 | "0xcbca25e39f142387",
|
18683 | 2
|
18684 | ],
|
18685 | [
|
18686 | "0x687ad44ad37f03c2",
|
18687 | 1
|
18688 | ],
|
18689 | [
|
18690 | "0xab3c0572291feb8b",
|
18691 | 1
|
18692 | ],
|
18693 | [
|
18694 | "0xbc9d89904f5b923f",
|
18695 | 1
|
18696 | ],
|
18697 | [
|
18698 | "0x37c8bb1350a9a2a8",
|
18699 | 1
|
18700 | ]
|
18701 | ]
|
18702 | ],
|
18703 | [
|
18704 | 6210274,
|
18705 | 9070,
|
18706 | [
|
18707 | [
|
18708 | "0xdf6acb689907609b",
|
18709 | 3
|
18710 | ],
|
18711 | [
|
18712 | "0x37e397fc7c91f5e4",
|
18713 | 1
|
18714 | ],
|
18715 | [
|
18716 | "0x40fe3ad401f8959a",
|
18717 | 5
|
18718 | ],
|
18719 | [
|
18720 | "0xd2bc9897eed08f15",
|
18721 | 2
|
18722 | ],
|
18723 | [
|
18724 | "0xf78b278be53f454c",
|
18725 | 2
|
18726 | ],
|
18727 | [
|
18728 | "0xaf2c0297a23e6d3d",
|
18729 | 1
|
18730 | ],
|
18731 | [
|
18732 | "0x49eaaf1b548a0cb0",
|
18733 | 1
|
18734 | ],
|
18735 | [
|
18736 | "0x91d5df18b0d2cf58",
|
18737 | 1
|
18738 | ],
|
18739 | [
|
18740 | "0xed99c5acb25eedf5",
|
18741 | 2
|
18742 | ],
|
18743 | [
|
18744 | "0xcbca25e39f142387",
|
18745 | 2
|
18746 | ],
|
18747 | [
|
18748 | "0x687ad44ad37f03c2",
|
18749 | 1
|
18750 | ],
|
18751 | [
|
18752 | "0xab3c0572291feb8b",
|
18753 | 1
|
18754 | ],
|
18755 | [
|
18756 | "0xbc9d89904f5b923f",
|
18757 | 1
|
18758 | ],
|
18759 | [
|
18760 | "0x37c8bb1350a9a2a8",
|
18761 | 1
|
18762 | ]
|
18763 | ]
|
18764 | ],
|
18765 | [
|
18766 | 6379314,
|
18767 | 9080,
|
18768 | [
|
18769 | [
|
18770 | "0xdf6acb689907609b",
|
18771 | 3
|
18772 | ],
|
18773 | [
|
18774 | "0x37e397fc7c91f5e4",
|
18775 | 1
|
18776 | ],
|
18777 | [
|
18778 | "0x40fe3ad401f8959a",
|
18779 | 5
|
18780 | ],
|
18781 | [
|
18782 | "0xd2bc9897eed08f15",
|
18783 | 3
|
18784 | ],
|
18785 | [
|
18786 | "0xf78b278be53f454c",
|
18787 | 2
|
18788 | ],
|
18789 | [
|
18790 | "0xaf2c0297a23e6d3d",
|
18791 | 1
|
18792 | ],
|
18793 | [
|
18794 | "0x49eaaf1b548a0cb0",
|
18795 | 1
|
18796 | ],
|
18797 | [
|
18798 | "0x91d5df18b0d2cf58",
|
18799 | 1
|
18800 | ],
|
18801 | [
|
18802 | "0xed99c5acb25eedf5",
|
18803 | 2
|
18804 | ],
|
18805 | [
|
18806 | "0xcbca25e39f142387",
|
18807 | 2
|
18808 | ],
|
18809 | [
|
18810 | "0x687ad44ad37f03c2",
|
18811 | 1
|
18812 | ],
|
18813 | [
|
18814 | "0xab3c0572291feb8b",
|
18815 | 1
|
18816 | ],
|
18817 | [
|
18818 | "0xbc9d89904f5b923f",
|
18819 | 1
|
18820 | ],
|
18821 | [
|
18822 | "0x37c8bb1350a9a2a8",
|
18823 | 1
|
18824 | ]
|
18825 | ]
|
18826 | ],
|
18827 | [
|
18828 | 6979141,
|
18829 | 9090,
|
18830 | [
|
18831 | [
|
18832 | "0xdf6acb689907609b",
|
18833 | 3
|
18834 | ],
|
18835 | [
|
18836 | "0x37e397fc7c91f5e4",
|
18837 | 1
|
18838 | ],
|
18839 | [
|
18840 | "0x40fe3ad401f8959a",
|
18841 | 5
|
18842 | ],
|
18843 | [
|
18844 | "0xd2bc9897eed08f15",
|
18845 | 3
|
18846 | ],
|
18847 | [
|
18848 | "0xf78b278be53f454c",
|
18849 | 2
|
18850 | ],
|
18851 | [
|
18852 | "0xaf2c0297a23e6d3d",
|
18853 | 1
|
18854 | ],
|
18855 | [
|
18856 | "0x49eaaf1b548a0cb0",
|
18857 | 1
|
18858 | ],
|
18859 | [
|
18860 | "0x91d5df18b0d2cf58",
|
18861 | 1
|
18862 | ],
|
18863 | [
|
18864 | "0xed99c5acb25eedf5",
|
18865 | 3
|
18866 | ],
|
18867 | [
|
18868 | "0xcbca25e39f142387",
|
18869 | 2
|
18870 | ],
|
18871 | [
|
18872 | "0x687ad44ad37f03c2",
|
18873 | 1
|
18874 | ],
|
18875 | [
|
18876 | "0xab3c0572291feb8b",
|
18877 | 1
|
18878 | ],
|
18879 | [
|
18880 | "0xbc9d89904f5b923f",
|
18881 | 1
|
18882 | ],
|
18883 | [
|
18884 | "0x37c8bb1350a9a2a8",
|
18885 | 1
|
18886 | ]
|
18887 | ]
|
18888 | ],
|
18889 | [
|
18890 | 7568453,
|
18891 | 9100,
|
18892 | [
|
18893 | [
|
18894 | "0xdf6acb689907609b",
|
18895 | 3
|
18896 | ],
|
18897 | [
|
18898 | "0x37e397fc7c91f5e4",
|
18899 | 1
|
18900 | ],
|
18901 | [
|
18902 | "0x40fe3ad401f8959a",
|
18903 | 5
|
18904 | ],
|
18905 | [
|
18906 | "0xd2bc9897eed08f15",
|
18907 | 3
|
18908 | ],
|
18909 | [
|
18910 | "0xf78b278be53f454c",
|
18911 | 2
|
18912 | ],
|
18913 | [
|
18914 | "0xaf2c0297a23e6d3d",
|
18915 | 1
|
18916 | ],
|
18917 | [
|
18918 | "0x49eaaf1b548a0cb0",
|
18919 | 1
|
18920 | ],
|
18921 | [
|
18922 | "0x91d5df18b0d2cf58",
|
18923 | 1
|
18924 | ],
|
18925 | [
|
18926 | "0xed99c5acb25eedf5",
|
18927 | 3
|
18928 | ],
|
18929 | [
|
18930 | "0xcbca25e39f142387",
|
18931 | 2
|
18932 | ],
|
18933 | [
|
18934 | "0x687ad44ad37f03c2",
|
18935 | 1
|
18936 | ],
|
18937 | [
|
18938 | "0xab3c0572291feb8b",
|
18939 | 1
|
18940 | ],
|
18941 | [
|
18942 | "0xbc9d89904f5b923f",
|
18943 | 1
|
18944 | ],
|
18945 | [
|
18946 | "0x37c8bb1350a9a2a8",
|
18947 | 1
|
18948 | ]
|
18949 | ]
|
18950 | ],
|
18951 | [
|
18952 | 7766394,
|
18953 | 9111,
|
18954 | [
|
18955 | [
|
18956 | "0xdf6acb689907609b",
|
18957 | 3
|
18958 | ],
|
18959 | [
|
18960 | "0x37e397fc7c91f5e4",
|
18961 | 1
|
18962 | ],
|
18963 | [
|
18964 | "0x40fe3ad401f8959a",
|
18965 | 5
|
18966 | ],
|
18967 | [
|
18968 | "0xd2bc9897eed08f15",
|
18969 | 3
|
18970 | ],
|
18971 | [
|
18972 | "0xf78b278be53f454c",
|
18973 | 2
|
18974 | ],
|
18975 | [
|
18976 | "0xaf2c0297a23e6d3d",
|
18977 | 1
|
18978 | ],
|
18979 | [
|
18980 | "0x49eaaf1b548a0cb0",
|
18981 | 1
|
18982 | ],
|
18983 | [
|
18984 | "0x91d5df18b0d2cf58",
|
18985 | 1
|
18986 | ],
|
18987 | [
|
18988 | "0xed99c5acb25eedf5",
|
18989 | 3
|
18990 | ],
|
18991 | [
|
18992 | "0xcbca25e39f142387",
|
18993 | 2
|
18994 | ],
|
18995 | [
|
18996 | "0x687ad44ad37f03c2",
|
18997 | 1
|
18998 | ],
|
18999 | [
|
19000 | "0xab3c0572291feb8b",
|
19001 | 1
|
19002 | ],
|
19003 | [
|
19004 | "0xbc9d89904f5b923f",
|
19005 | 1
|
19006 | ],
|
19007 | [
|
19008 | "0x37c8bb1350a9a2a8",
|
19009 | 1
|
19010 | ]
|
19011 | ]
|
19012 | ],
|
19013 | [
|
19014 | 7911691,
|
19015 | 9120,
|
19016 | [
|
19017 | [
|
19018 | "0xdf6acb689907609b",
|
19019 | 3
|
19020 | ],
|
19021 | [
|
19022 | "0x37e397fc7c91f5e4",
|
19023 | 1
|
19024 | ],
|
19025 | [
|
19026 | "0x40fe3ad401f8959a",
|
19027 | 5
|
19028 | ],
|
19029 | [
|
19030 | "0xd2bc9897eed08f15",
|
19031 | 3
|
19032 | ],
|
19033 | [
|
19034 | "0xf78b278be53f454c",
|
19035 | 2
|
19036 | ],
|
19037 | [
|
19038 | "0xaf2c0297a23e6d3d",
|
19039 | 1
|
19040 | ],
|
19041 | [
|
19042 | "0x49eaaf1b548a0cb0",
|
19043 | 1
|
19044 | ],
|
19045 | [
|
19046 | "0x91d5df18b0d2cf58",
|
19047 | 1
|
19048 | ],
|
19049 | [
|
19050 | "0xed99c5acb25eedf5",
|
19051 | 3
|
19052 | ],
|
19053 | [
|
19054 | "0xcbca25e39f142387",
|
19055 | 2
|
19056 | ],
|
19057 | [
|
19058 | "0x687ad44ad37f03c2",
|
19059 | 1
|
19060 | ],
|
19061 | [
|
19062 | "0xab3c0572291feb8b",
|
19063 | 1
|
19064 | ],
|
19065 | [
|
19066 | "0xbc9d89904f5b923f",
|
19067 | 1
|
19068 | ],
|
19069 | [
|
19070 | "0x37c8bb1350a9a2a8",
|
19071 | 1
|
19072 | ]
|
19073 | ]
|
19074 | ],
|
19075 | [
|
19076 | 7968866,
|
19077 | 9121,
|
19078 | [
|
19079 | [
|
19080 | "0xdf6acb689907609b",
|
19081 | 3
|
19082 | ],
|
19083 | [
|
19084 | "0x37e397fc7c91f5e4",
|
19085 | 1
|
19086 | ],
|
19087 | [
|
19088 | "0x40fe3ad401f8959a",
|
19089 | 5
|
19090 | ],
|
19091 | [
|
19092 | "0xd2bc9897eed08f15",
|
19093 | 3
|
19094 | ],
|
19095 | [
|
19096 | "0xf78b278be53f454c",
|
19097 | 2
|
19098 | ],
|
19099 | [
|
19100 | "0xaf2c0297a23e6d3d",
|
19101 | 1
|
19102 | ],
|
19103 | [
|
19104 | "0x49eaaf1b548a0cb0",
|
19105 | 1
|
19106 | ],
|
19107 | [
|
19108 | "0x91d5df18b0d2cf58",
|
19109 | 1
|
19110 | ],
|
19111 | [
|
19112 | "0xed99c5acb25eedf5",
|
19113 | 3
|
19114 | ],
|
19115 | [
|
19116 | "0xcbca25e39f142387",
|
19117 | 2
|
19118 | ],
|
19119 | [
|
19120 | "0x687ad44ad37f03c2",
|
19121 | 1
|
19122 | ],
|
19123 | [
|
19124 | "0xab3c0572291feb8b",
|
19125 | 1
|
19126 | ],
|
19127 | [
|
19128 | "0xbc9d89904f5b923f",
|
19129 | 1
|
19130 | ],
|
19131 | [
|
19132 | "0x37c8bb1350a9a2a8",
|
19133 | 1
|
19134 | ]
|
19135 | ]
|
19136 | ],
|
19137 | [
|
19138 | 7982889,
|
19139 | 9122,
|
19140 | [
|
19141 | [
|
19142 | "0xdf6acb689907609b",
|
19143 | 3
|
19144 | ],
|
19145 | [
|
19146 | "0x37e397fc7c91f5e4",
|
19147 | 1
|
19148 | ],
|
19149 | [
|
19150 | "0x40fe3ad401f8959a",
|
19151 | 5
|
19152 | ],
|
19153 | [
|
19154 | "0xd2bc9897eed08f15",
|
19155 | 3
|
19156 | ],
|
19157 | [
|
19158 | "0xf78b278be53f454c",
|
19159 | 2
|
19160 | ],
|
19161 | [
|
19162 | "0xaf2c0297a23e6d3d",
|
19163 | 1
|
19164 | ],
|
19165 | [
|
19166 | "0x49eaaf1b548a0cb0",
|
19167 | 1
|
19168 | ],
|
19169 | [
|
19170 | "0x91d5df18b0d2cf58",
|
19171 | 1
|
19172 | ],
|
19173 | [
|
19174 | "0xed99c5acb25eedf5",
|
19175 | 3
|
19176 | ],
|
19177 | [
|
19178 | "0xcbca25e39f142387",
|
19179 | 2
|
19180 | ],
|
19181 | [
|
19182 | "0x687ad44ad37f03c2",
|
19183 | 1
|
19184 | ],
|
19185 | [
|
19186 | "0xab3c0572291feb8b",
|
19187 | 1
|
19188 | ],
|
19189 | [
|
19190 | "0xbc9d89904f5b923f",
|
19191 | 1
|
19192 | ],
|
19193 | [
|
19194 | "0x37c8bb1350a9a2a8",
|
19195 | 1
|
19196 | ]
|
19197 | ]
|
19198 | ],
|
19199 | [
|
19200 | 8514322,
|
19201 | 9130,
|
19202 | [
|
19203 | [
|
19204 | "0xdf6acb689907609b",
|
19205 | 3
|
19206 | ],
|
19207 | [
|
19208 | "0x37e397fc7c91f5e4",
|
19209 | 1
|
19210 | ],
|
19211 | [
|
19212 | "0x40fe3ad401f8959a",
|
19213 | 5
|
19214 | ],
|
19215 | [
|
19216 | "0xd2bc9897eed08f15",
|
19217 | 3
|
19218 | ],
|
19219 | [
|
19220 | "0xf78b278be53f454c",
|
19221 | 2
|
19222 | ],
|
19223 | [
|
19224 | "0xaf2c0297a23e6d3d",
|
19225 | 1
|
19226 | ],
|
19227 | [
|
19228 | "0x49eaaf1b548a0cb0",
|
19229 | 1
|
19230 | ],
|
19231 | [
|
19232 | "0x91d5df18b0d2cf58",
|
19233 | 1
|
19234 | ],
|
19235 | [
|
19236 | "0xed99c5acb25eedf5",
|
19237 | 3
|
19238 | ],
|
19239 | [
|
19240 | "0xcbca25e39f142387",
|
19241 | 2
|
19242 | ],
|
19243 | [
|
19244 | "0x687ad44ad37f03c2",
|
19245 | 1
|
19246 | ],
|
19247 | [
|
19248 | "0xab3c0572291feb8b",
|
19249 | 1
|
19250 | ],
|
19251 | [
|
19252 | "0xbc9d89904f5b923f",
|
19253 | 1
|
19254 | ],
|
19255 | [
|
19256 | "0x37c8bb1350a9a2a8",
|
19257 | 1
|
19258 | ]
|
19259 | ]
|
19260 | ],
|
19261 | [
|
19262 | 9091726,
|
19263 | 9140,
|
19264 | [
|
19265 | [
|
19266 | "0xdf6acb689907609b",
|
19267 | 3
|
19268 | ],
|
19269 | [
|
19270 | "0x37e397fc7c91f5e4",
|
19271 | 1
|
19272 | ],
|
19273 | [
|
19274 | "0x40fe3ad401f8959a",
|
19275 | 5
|
19276 | ],
|
19277 | [
|
19278 | "0xd2bc9897eed08f15",
|
19279 | 3
|
19280 | ],
|
19281 | [
|
19282 | "0xf78b278be53f454c",
|
19283 | 2
|
19284 | ],
|
19285 | [
|
19286 | "0xaf2c0297a23e6d3d",
|
19287 | 1
|
19288 | ],
|
19289 | [
|
19290 | "0x49eaaf1b548a0cb0",
|
19291 | 1
|
19292 | ],
|
19293 | [
|
19294 | "0x91d5df18b0d2cf58",
|
19295 | 1
|
19296 | ],
|
19297 | [
|
19298 | "0xed99c5acb25eedf5",
|
19299 | 3
|
19300 | ],
|
19301 | [
|
19302 | "0xcbca25e39f142387",
|
19303 | 2
|
19304 | ],
|
19305 | [
|
19306 | "0x687ad44ad37f03c2",
|
19307 | 1
|
19308 | ],
|
19309 | [
|
19310 | "0xab3c0572291feb8b",
|
19311 | 1
|
19312 | ],
|
19313 | [
|
19314 | "0xbc9d89904f5b923f",
|
19315 | 1
|
19316 | ],
|
19317 | [
|
19318 | "0x37c8bb1350a9a2a8",
|
19319 | 1
|
19320 | ]
|
19321 | ]
|
19322 | ],
|
19323 | [
|
19324 | 9091774,
|
19325 | 9150,
|
19326 | [
|
19327 | [
|
19328 | "0xdf6acb689907609b",
|
19329 | 3
|
19330 | ],
|
19331 | [
|
19332 | "0x37e397fc7c91f5e4",
|
19333 | 1
|
19334 | ],
|
19335 | [
|
19336 | "0x40fe3ad401f8959a",
|
19337 | 5
|
19338 | ],
|
19339 | [
|
19340 | "0xd2bc9897eed08f15",
|
19341 | 3
|
19342 | ],
|
19343 | [
|
19344 | "0xf78b278be53f454c",
|
19345 | 2
|
19346 | ],
|
19347 | [
|
19348 | "0xaf2c0297a23e6d3d",
|
19349 | 1
|
19350 | ],
|
19351 | [
|
19352 | "0x49eaaf1b548a0cb0",
|
19353 | 1
|
19354 | ],
|
19355 | [
|
19356 | "0x91d5df18b0d2cf58",
|
19357 | 1
|
19358 | ],
|
19359 | [
|
19360 | "0xed99c5acb25eedf5",
|
19361 | 3
|
19362 | ],
|
19363 | [
|
19364 | "0xcbca25e39f142387",
|
19365 | 2
|
19366 | ],
|
19367 | [
|
19368 | "0x687ad44ad37f03c2",
|
19369 | 1
|
19370 | ],
|
19371 | [
|
19372 | "0xab3c0572291feb8b",
|
19373 | 1
|
19374 | ],
|
19375 | [
|
19376 | "0xbc9d89904f5b923f",
|
19377 | 1
|
19378 | ],
|
19379 | [
|
19380 | "0x37c8bb1350a9a2a8",
|
19381 | 1
|
19382 | ]
|
19383 | ]
|
19384 | ],
|
19385 | [
|
19386 | 9406726,
|
19387 | 9160,
|
19388 | [
|
19389 | [
|
19390 | "0xdf6acb689907609b",
|
19391 | 4
|
19392 | ],
|
19393 | [
|
19394 | "0x37e397fc7c91f5e4",
|
19395 | 1
|
19396 | ],
|
19397 | [
|
19398 | "0x40fe3ad401f8959a",
|
19399 | 5
|
19400 | ],
|
19401 | [
|
19402 | "0xd2bc9897eed08f15",
|
19403 | 3
|
19404 | ],
|
19405 | [
|
19406 | "0xf78b278be53f454c",
|
19407 | 2
|
19408 | ],
|
19409 | [
|
19410 | "0xaf2c0297a23e6d3d",
|
19411 | 2
|
19412 | ],
|
19413 | [
|
19414 | "0x49eaaf1b548a0cb0",
|
19415 | 1
|
19416 | ],
|
19417 | [
|
19418 | "0x91d5df18b0d2cf58",
|
19419 | 1
|
19420 | ],
|
19421 | [
|
19422 | "0xed99c5acb25eedf5",
|
19423 | 3
|
19424 | ],
|
19425 | [
|
19426 | "0xcbca25e39f142387",
|
19427 | 2
|
19428 | ],
|
19429 | [
|
19430 | "0x687ad44ad37f03c2",
|
19431 | 1
|
19432 | ],
|
19433 | [
|
19434 | "0xab3c0572291feb8b",
|
19435 | 1
|
19436 | ],
|
19437 | [
|
19438 | "0xbc9d89904f5b923f",
|
19439 | 1
|
19440 | ],
|
19441 | [
|
19442 | "0x37c8bb1350a9a2a8",
|
19443 | 1
|
19444 | ]
|
19445 | ]
|
19446 | ],
|
19447 | [
|
19448 | 9921066,
|
19449 | 9170,
|
19450 | [
|
19451 | [
|
19452 | "0xdf6acb689907609b",
|
19453 | 4
|
19454 | ],
|
19455 | [
|
19456 | "0x37e397fc7c91f5e4",
|
19457 | 1
|
19458 | ],
|
19459 | [
|
19460 | "0x40fe3ad401f8959a",
|
19461 | 5
|
19462 | ],
|
19463 | [
|
19464 | "0xd2bc9897eed08f15",
|
19465 | 3
|
19466 | ],
|
19467 | [
|
19468 | "0xf78b278be53f454c",
|
19469 | 2
|
19470 | ],
|
19471 | [
|
19472 | "0xaf2c0297a23e6d3d",
|
19473 | 2
|
19474 | ],
|
19475 | [
|
19476 | "0x49eaaf1b548a0cb0",
|
19477 | 1
|
19478 | ],
|
19479 | [
|
19480 | "0x91d5df18b0d2cf58",
|
19481 | 1
|
19482 | ],
|
19483 | [
|
19484 | "0xed99c5acb25eedf5",
|
19485 | 3
|
19486 | ],
|
19487 | [
|
19488 | "0xcbca25e39f142387",
|
19489 | 2
|
19490 | ],
|
19491 | [
|
19492 | "0x687ad44ad37f03c2",
|
19493 | 1
|
19494 | ],
|
19495 | [
|
19496 | "0xab3c0572291feb8b",
|
19497 | 1
|
19498 | ],
|
19499 | [
|
19500 | "0xbc9d89904f5b923f",
|
19501 | 1
|
19502 | ],
|
19503 | [
|
19504 | "0x37c8bb1350a9a2a8",
|
19505 | 1
|
19506 | ]
|
19507 | ]
|
19508 | ],
|
19509 | [
|
19510 | 10007115,
|
19511 | 9180,
|
19512 | [
|
19513 | [
|
19514 | "0xdf6acb689907609b",
|
19515 | 4
|
19516 | ],
|
19517 | [
|
19518 | "0x37e397fc7c91f5e4",
|
19519 | 1
|
19520 | ],
|
19521 | [
|
19522 | "0x40fe3ad401f8959a",
|
19523 | 5
|
19524 | ],
|
19525 | [
|
19526 | "0xd2bc9897eed08f15",
|
19527 | 3
|
19528 | ],
|
19529 | [
|
19530 | "0xf78b278be53f454c",
|
19531 | 2
|
19532 | ],
|
19533 | [
|
19534 | "0xaf2c0297a23e6d3d",
|
19535 | 2
|
19536 | ],
|
19537 | [
|
19538 | "0x49eaaf1b548a0cb0",
|
19539 | 1
|
19540 | ],
|
19541 | [
|
19542 | "0x91d5df18b0d2cf58",
|
19543 | 1
|
19544 | ],
|
19545 | [
|
19546 | "0xed99c5acb25eedf5",
|
19547 | 3
|
19548 | ],
|
19549 | [
|
19550 | "0xcbca25e39f142387",
|
19551 | 2
|
19552 | ],
|
19553 | [
|
19554 | "0x687ad44ad37f03c2",
|
19555 | 1
|
19556 | ],
|
19557 | [
|
19558 | "0xab3c0572291feb8b",
|
19559 | 1
|
19560 | ],
|
19561 | [
|
19562 | "0xbc9d89904f5b923f",
|
19563 | 1
|
19564 | ],
|
19565 | [
|
19566 | "0x37c8bb1350a9a2a8",
|
19567 | 1
|
19568 | ]
|
19569 | ]
|
19570 | ],
|
19571 | [
|
19572 | 10480973,
|
19573 | 9190,
|
19574 | [
|
19575 | [
|
19576 | "0xdf6acb689907609b",
|
19577 | 4
|
19578 | ],
|
19579 | [
|
19580 | "0x37e397fc7c91f5e4",
|
19581 | 1
|
19582 | ],
|
19583 | [
|
19584 | "0x40fe3ad401f8959a",
|
19585 | 6
|
19586 | ],
|
19587 | [
|
19588 | "0xd2bc9897eed08f15",
|
19589 | 3
|
19590 | ],
|
19591 | [
|
19592 | "0xf78b278be53f454c",
|
19593 | 2
|
19594 | ],
|
19595 | [
|
19596 | "0xaf2c0297a23e6d3d",
|
19597 | 2
|
19598 | ],
|
19599 | [
|
19600 | "0x49eaaf1b548a0cb0",
|
19601 | 1
|
19602 | ],
|
19603 | [
|
19604 | "0x91d5df18b0d2cf58",
|
19605 | 1
|
19606 | ],
|
19607 | [
|
19608 | "0xed99c5acb25eedf5",
|
19609 | 3
|
19610 | ],
|
19611 | [
|
19612 | "0xcbca25e39f142387",
|
19613 | 2
|
19614 | ],
|
19615 | [
|
19616 | "0x687ad44ad37f03c2",
|
19617 | 1
|
19618 | ],
|
19619 | [
|
19620 | "0xab3c0572291feb8b",
|
19621 | 1
|
19622 | ],
|
19623 | [
|
19624 | "0xbc9d89904f5b923f",
|
19625 | 1
|
19626 | ],
|
19627 | [
|
19628 | "0x37c8bb1350a9a2a8",
|
19629 | 1
|
19630 | ]
|
19631 | ]
|
19632 | ],
|
19633 | [
|
19634 | 10578091,
|
19635 | 9200,
|
19636 | [
|
19637 | [
|
19638 | "0xdf6acb689907609b",
|
19639 | 4
|
19640 | ],
|
19641 | [
|
19642 | "0x37e397fc7c91f5e4",
|
19643 | 1
|
19644 | ],
|
19645 | [
|
19646 | "0x40fe3ad401f8959a",
|
19647 | 6
|
19648 | ],
|
19649 | [
|
19650 | "0xd2bc9897eed08f15",
|
19651 | 3
|
19652 | ],
|
19653 | [
|
19654 | "0xf78b278be53f454c",
|
19655 | 2
|
19656 | ],
|
19657 | [
|
19658 | "0xaf2c0297a23e6d3d",
|
19659 | 2
|
19660 | ],
|
19661 | [
|
19662 | "0x49eaaf1b548a0cb0",
|
19663 | 1
|
19664 | ],
|
19665 | [
|
19666 | "0x91d5df18b0d2cf58",
|
19667 | 1
|
19668 | ],
|
19669 | [
|
19670 | "0xed99c5acb25eedf5",
|
19671 | 3
|
19672 | ],
|
19673 | [
|
19674 | "0xcbca25e39f142387",
|
19675 | 2
|
19676 | ],
|
19677 | [
|
19678 | "0x687ad44ad37f03c2",
|
19679 | 1
|
19680 | ],
|
19681 | [
|
19682 | "0xab3c0572291feb8b",
|
19683 | 1
|
19684 | ],
|
19685 | [
|
19686 | "0xbc9d89904f5b923f",
|
19687 | 1
|
19688 | ],
|
19689 | [
|
19690 | "0x37c8bb1350a9a2a8",
|
19691 | 1
|
19692 | ]
|
19693 | ]
|
19694 | ],
|
19695 | [
|
19696 | 10678509,
|
19697 | 9210,
|
19698 | [
|
19699 | [
|
19700 | "0xdf6acb689907609b",
|
19701 | 4
|
19702 | ],
|
19703 | [
|
19704 | "0x37e397fc7c91f5e4",
|
19705 | 1
|
19706 | ],
|
19707 | [
|
19708 | "0x40fe3ad401f8959a",
|
19709 | 6
|
19710 | ],
|
19711 | [
|
19712 | "0xd2bc9897eed08f15",
|
19713 | 3
|
19714 | ],
|
19715 | [
|
19716 | "0xf78b278be53f454c",
|
19717 | 2
|
19718 | ],
|
19719 | [
|
19720 | "0xaf2c0297a23e6d3d",
|
19721 | 2
|
19722 | ],
|
19723 | [
|
19724 | "0x49eaaf1b548a0cb0",
|
19725 | 1
|
19726 | ],
|
19727 | [
|
19728 | "0x91d5df18b0d2cf58",
|
19729 | 1
|
19730 | ],
|
19731 | [
|
19732 | "0xed99c5acb25eedf5",
|
19733 | 3
|
19734 | ],
|
19735 | [
|
19736 | "0xcbca25e39f142387",
|
19737 | 2
|
19738 | ],
|
19739 | [
|
19740 | "0x687ad44ad37f03c2",
|
19741 | 1
|
19742 | ],
|
19743 | [
|
19744 | "0xab3c0572291feb8b",
|
19745 | 1
|
19746 | ],
|
19747 | [
|
19748 | "0xbc9d89904f5b923f",
|
19749 | 1
|
19750 | ],
|
19751 | [
|
19752 | "0x37c8bb1350a9a2a8",
|
19753 | 1
|
19754 | ]
|
19755 | ]
|
19756 | ],
|
19757 | [
|
19758 | 10811001,
|
19759 | 9220,
|
19760 | [
|
19761 | [
|
19762 | "0xdf6acb689907609b",
|
19763 | 4
|
19764 | ],
|
19765 | [
|
19766 | "0x37e397fc7c91f5e4",
|
19767 | 1
|
19768 | ],
|
19769 | [
|
19770 | "0x40fe3ad401f8959a",
|
19771 | 6
|
19772 | ],
|
19773 | [
|
19774 | "0xd2bc9897eed08f15",
|
19775 | 3
|
19776 | ],
|
19777 | [
|
19778 | "0xf78b278be53f454c",
|
19779 | 2
|
19780 | ],
|
19781 | [
|
19782 | "0xaf2c0297a23e6d3d",
|
19783 | 2
|
19784 | ],
|
19785 | [
|
19786 | "0x49eaaf1b548a0cb0",
|
19787 | 1
|
19788 | ],
|
19789 | [
|
19790 | "0x91d5df18b0d2cf58",
|
19791 | 1
|
19792 | ],
|
19793 | [
|
19794 | "0xed99c5acb25eedf5",
|
19795 | 3
|
19796 | ],
|
19797 | [
|
19798 | "0xcbca25e39f142387",
|
19799 | 2
|
19800 | ],
|
19801 | [
|
19802 | "0x687ad44ad37f03c2",
|
19803 | 1
|
19804 | ],
|
19805 | [
|
19806 | "0xab3c0572291feb8b",
|
19807 | 1
|
19808 | ],
|
19809 | [
|
19810 | "0xbc9d89904f5b923f",
|
19811 | 1
|
19812 | ],
|
19813 | [
|
19814 | "0x37c8bb1350a9a2a8",
|
19815 | 1
|
19816 | ]
|
19817 | ]
|
19818 | ],
|
19819 | [
|
19820 | 11096116,
|
19821 | 9230,
|
19822 | [
|
19823 | [
|
19824 | "0xdf6acb689907609b",
|
19825 | 4
|
19826 | ],
|
19827 | [
|
19828 | "0x37e397fc7c91f5e4",
|
19829 | 1
|
19830 | ],
|
19831 | [
|
19832 | "0x40fe3ad401f8959a",
|
19833 | 6
|
19834 | ],
|
19835 | [
|
19836 | "0xd2bc9897eed08f15",
|
19837 | 3
|
19838 | ],
|
19839 | [
|
19840 | "0xf78b278be53f454c",
|
19841 | 2
|
19842 | ],
|
19843 | [
|
19844 | "0xaf2c0297a23e6d3d",
|
19845 | 2
|
19846 | ],
|
19847 | [
|
19848 | "0x49eaaf1b548a0cb0",
|
19849 | 1
|
19850 | ],
|
19851 | [
|
19852 | "0x91d5df18b0d2cf58",
|
19853 | 1
|
19854 | ],
|
19855 | [
|
19856 | "0xed99c5acb25eedf5",
|
19857 | 3
|
19858 | ],
|
19859 | [
|
19860 | "0xcbca25e39f142387",
|
19861 | 2
|
19862 | ],
|
19863 | [
|
19864 | "0x687ad44ad37f03c2",
|
19865 | 1
|
19866 | ],
|
19867 | [
|
19868 | "0xab3c0572291feb8b",
|
19869 | 1
|
19870 | ],
|
19871 | [
|
19872 | "0xbc9d89904f5b923f",
|
19873 | 1
|
19874 | ],
|
19875 | [
|
19876 | "0x37c8bb1350a9a2a8",
|
19877 | 1
|
19878 | ]
|
19879 | ]
|
19880 | ],
|
19881 | [
|
19882 | 11409279,
|
19883 | 9250,
|
19884 | [
|
19885 | [
|
19886 | "0xdf6acb689907609b",
|
19887 | 4
|
19888 | ],
|
19889 | [
|
19890 | "0x37e397fc7c91f5e4",
|
19891 | 1
|
19892 | ],
|
19893 | [
|
19894 | "0x40fe3ad401f8959a",
|
19895 | 6
|
19896 | ],
|
19897 | [
|
19898 | "0xd2bc9897eed08f15",
|
19899 | 3
|
19900 | ],
|
19901 | [
|
19902 | "0xf78b278be53f454c",
|
19903 | 2
|
19904 | ],
|
19905 | [
|
19906 | "0xaf2c0297a23e6d3d",
|
19907 | 2
|
19908 | ],
|
19909 | [
|
19910 | "0x49eaaf1b548a0cb0",
|
19911 | 1
|
19912 | ],
|
19913 | [
|
19914 | "0x91d5df18b0d2cf58",
|
19915 | 1
|
19916 | ],
|
19917 | [
|
19918 | "0xed99c5acb25eedf5",
|
19919 | 3
|
19920 | ],
|
19921 | [
|
19922 | "0xcbca25e39f142387",
|
19923 | 2
|
19924 | ],
|
19925 | [
|
19926 | "0x687ad44ad37f03c2",
|
19927 | 1
|
19928 | ],
|
19929 | [
|
19930 | "0xab3c0572291feb8b",
|
19931 | 1
|
19932 | ],
|
19933 | [
|
19934 | "0xbc9d89904f5b923f",
|
19935 | 1
|
19936 | ],
|
19937 | [
|
19938 | "0x37c8bb1350a9a2a8",
|
19939 | 1
|
19940 | ]
|
19941 | ]
|
19942 | ],
|
19943 | [
|
19944 | 11584820,
|
19945 | 9251,
|
19946 | [
|
19947 | [
|
19948 | "0xdf6acb689907609b",
|
19949 | 4
|
19950 | ],
|
19951 | [
|
19952 | "0x37e397fc7c91f5e4",
|
19953 | 1
|
19954 | ],
|
19955 | [
|
19956 | "0x40fe3ad401f8959a",
|
19957 | 6
|
19958 | ],
|
19959 | [
|
19960 | "0xd2bc9897eed08f15",
|
19961 | 3
|
19962 | ],
|
19963 | [
|
19964 | "0xf78b278be53f454c",
|
19965 | 2
|
19966 | ],
|
19967 | [
|
19968 | "0xaf2c0297a23e6d3d",
|
19969 | 2
|
19970 | ],
|
19971 | [
|
19972 | "0x49eaaf1b548a0cb0",
|
19973 | 1
|
19974 | ],
|
19975 | [
|
19976 | "0x91d5df18b0d2cf58",
|
19977 | 1
|
19978 | ],
|
19979 | [
|
19980 | "0xed99c5acb25eedf5",
|
19981 | 3
|
19982 | ],
|
19983 | [
|
19984 | "0xcbca25e39f142387",
|
19985 | 2
|
19986 | ],
|
19987 | [
|
19988 | "0x687ad44ad37f03c2",
|
19989 | 1
|
19990 | ],
|
19991 | [
|
19992 | "0xab3c0572291feb8b",
|
19993 | 1
|
19994 | ],
|
19995 | [
|
19996 | "0xbc9d89904f5b923f",
|
19997 | 1
|
19998 | ],
|
19999 | [
|
20000 | "0x37c8bb1350a9a2a8",
|
20001 | 1
|
20002 | ]
|
20003 | ]
|
20004 | ],
|
20005 | [
|
20006 | 11716837,
|
20007 | 9260,
|
20008 | [
|
20009 | [
|
20010 | "0xdf6acb689907609b",
|
20011 | 4
|
20012 | ],
|
20013 | [
|
20014 | "0x37e397fc7c91f5e4",
|
20015 | 1
|
20016 | ],
|
20017 | [
|
20018 | "0x40fe3ad401f8959a",
|
20019 | 6
|
20020 | ],
|
20021 | [
|
20022 | "0xd2bc9897eed08f15",
|
20023 | 3
|
20024 | ],
|
20025 | [
|
20026 | "0xf78b278be53f454c",
|
20027 | 2
|
20028 | ],
|
20029 | [
|
20030 | "0xaf2c0297a23e6d3d",
|
20031 | 2
|
20032 | ],
|
20033 | [
|
20034 | "0x49eaaf1b548a0cb0",
|
20035 | 1
|
20036 | ],
|
20037 | [
|
20038 | "0x91d5df18b0d2cf58",
|
20039 | 1
|
20040 | ],
|
20041 | [
|
20042 | "0xed99c5acb25eedf5",
|
20043 | 3
|
20044 | ],
|
20045 | [
|
20046 | "0xcbca25e39f142387",
|
20047 | 2
|
20048 | ],
|
20049 | [
|
20050 | "0x687ad44ad37f03c2",
|
20051 | 1
|
20052 | ],
|
20053 | [
|
20054 | "0xab3c0572291feb8b",
|
20055 | 1
|
20056 | ],
|
20057 | [
|
20058 | "0xbc9d89904f5b923f",
|
20059 | 1
|
20060 | ],
|
20061 | [
|
20062 | "0x37c8bb1350a9a2a8",
|
20063 | 1
|
20064 | ]
|
20065 | ]
|
20066 | ],
|
20067 | [
|
20068 | 11876919,
|
20069 | 9261,
|
20070 | [
|
20071 | [
|
20072 | "0xdf6acb689907609b",
|
20073 | 4
|
20074 | ],
|
20075 | [
|
20076 | "0x37e397fc7c91f5e4",
|
20077 | 1
|
20078 | ],
|
20079 | [
|
20080 | "0x40fe3ad401f8959a",
|
20081 | 6
|
20082 | ],
|
20083 | [
|
20084 | "0xd2bc9897eed08f15",
|
20085 | 3
|
20086 | ],
|
20087 | [
|
20088 | "0xf78b278be53f454c",
|
20089 | 2
|
20090 | ],
|
20091 | [
|
20092 | "0xaf2c0297a23e6d3d",
|
20093 | 2
|
20094 | ],
|
20095 | [
|
20096 | "0x49eaaf1b548a0cb0",
|
20097 | 1
|
20098 | ],
|
20099 | [
|
20100 | "0x91d5df18b0d2cf58",
|
20101 | 1
|
20102 | ],
|
20103 | [
|
20104 | "0xed99c5acb25eedf5",
|
20105 | 3
|
20106 | ],
|
20107 | [
|
20108 | "0xcbca25e39f142387",
|
20109 | 2
|
20110 | ],
|
20111 | [
|
20112 | "0x687ad44ad37f03c2",
|
20113 | 1
|
20114 | ],
|
20115 | [
|
20116 | "0xab3c0572291feb8b",
|
20117 | 1
|
20118 | ],
|
20119 | [
|
20120 | "0xbc9d89904f5b923f",
|
20121 | 1
|
20122 | ],
|
20123 | [
|
20124 | "0x37c8bb1350a9a2a8",
|
20125 | 1
|
20126 | ]
|
20127 | ]
|
20128 | ],
|
20129 | [
|
20130 | 11987927,
|
20131 | 9270,
|
20132 | [
|
20133 | [
|
20134 | "0xdf6acb689907609b",
|
20135 | 4
|
20136 | ],
|
20137 | [
|
20138 | "0x37e397fc7c91f5e4",
|
20139 | 1
|
20140 | ],
|
20141 | [
|
20142 | "0x40fe3ad401f8959a",
|
20143 | 6
|
20144 | ],
|
20145 | [
|
20146 | "0xd2bc9897eed08f15",
|
20147 | 3
|
20148 | ],
|
20149 | [
|
20150 | "0xf78b278be53f454c",
|
20151 | 2
|
20152 | ],
|
20153 | [
|
20154 | "0xaf2c0297a23e6d3d",
|
20155 | 2
|
20156 | ],
|
20157 | [
|
20158 | "0x49eaaf1b548a0cb0",
|
20159 | 1
|
20160 | ],
|
20161 | [
|
20162 | "0x91d5df18b0d2cf58",
|
20163 | 1
|
20164 | ],
|
20165 | [
|
20166 | "0xed99c5acb25eedf5",
|
20167 | 3
|
20168 | ],
|
20169 | [
|
20170 | "0xcbca25e39f142387",
|
20171 | 2
|
20172 | ],
|
20173 | [
|
20174 | "0x687ad44ad37f03c2",
|
20175 | 1
|
20176 | ],
|
20177 | [
|
20178 | "0xab3c0572291feb8b",
|
20179 | 1
|
20180 | ],
|
20181 | [
|
20182 | "0xbc9d89904f5b923f",
|
20183 | 1
|
20184 | ],
|
20185 | [
|
20186 | "0x37c8bb1350a9a2a8",
|
20187 | 1
|
20188 | ],
|
20189 | [
|
20190 | "0x17a6bc0d0062aeb3",
|
20191 | 1
|
20192 | ]
|
20193 | ]
|
20194 | ],
|
20195 | [
|
20196 | 12077324,
|
20197 | 9271,
|
20198 | [
|
20199 | [
|
20200 | "0xdf6acb689907609b",
|
20201 | 4
|
20202 | ],
|
20203 | [
|
20204 | "0x37e397fc7c91f5e4",
|
20205 | 1
|
20206 | ],
|
20207 | [
|
20208 | "0x40fe3ad401f8959a",
|
20209 | 6
|
20210 | ],
|
20211 | [
|
20212 | "0xd2bc9897eed08f15",
|
20213 | 3
|
20214 | ],
|
20215 | [
|
20216 | "0xf78b278be53f454c",
|
20217 | 2
|
20218 | ],
|
20219 | [
|
20220 | "0xaf2c0297a23e6d3d",
|
20221 | 2
|
20222 | ],
|
20223 | [
|
20224 | "0x49eaaf1b548a0cb0",
|
20225 | 1
|
20226 | ],
|
20227 | [
|
20228 | "0x91d5df18b0d2cf58",
|
20229 | 1
|
20230 | ],
|
20231 | [
|
20232 | "0xed99c5acb25eedf5",
|
20233 | 3
|
20234 | ],
|
20235 | [
|
20236 | "0xcbca25e39f142387",
|
20237 | 2
|
20238 | ],
|
20239 | [
|
20240 | "0x687ad44ad37f03c2",
|
20241 | 1
|
20242 | ],
|
20243 | [
|
20244 | "0xab3c0572291feb8b",
|
20245 | 1
|
20246 | ],
|
20247 | [
|
20248 | "0xbc9d89904f5b923f",
|
20249 | 1
|
20250 | ],
|
20251 | [
|
20252 | "0x37c8bb1350a9a2a8",
|
20253 | 1
|
20254 | ],
|
20255 | [
|
20256 | "0x17a6bc0d0062aeb3",
|
20257 | 1
|
20258 | ]
|
20259 | ]
|
20260 | ],
|
20261 | [
|
20262 | 12301871,
|
20263 | 9280,
|
20264 | [
|
20265 | [
|
20266 | "0xdf6acb689907609b",
|
20267 | 4
|
20268 | ],
|
20269 | [
|
20270 | "0x37e397fc7c91f5e4",
|
20271 | 1
|
20272 | ],
|
20273 | [
|
20274 | "0x40fe3ad401f8959a",
|
20275 | 6
|
20276 | ],
|
20277 | [
|
20278 | "0xd2bc9897eed08f15",
|
20279 | 3
|
20280 | ],
|
20281 | [
|
20282 | "0xf78b278be53f454c",
|
20283 | 2
|
20284 | ],
|
20285 | [
|
20286 | "0xaf2c0297a23e6d3d",
|
20287 | 2
|
20288 | ],
|
20289 | [
|
20290 | "0x49eaaf1b548a0cb0",
|
20291 | 1
|
20292 | ],
|
20293 | [
|
20294 | "0x91d5df18b0d2cf58",
|
20295 | 1
|
20296 | ],
|
20297 | [
|
20298 | "0xed99c5acb25eedf5",
|
20299 | 3
|
20300 | ],
|
20301 | [
|
20302 | "0xcbca25e39f142387",
|
20303 | 2
|
20304 | ],
|
20305 | [
|
20306 | "0x687ad44ad37f03c2",
|
20307 | 1
|
20308 | ],
|
20309 | [
|
20310 | "0xab3c0572291feb8b",
|
20311 | 1
|
20312 | ],
|
20313 | [
|
20314 | "0xbc9d89904f5b923f",
|
20315 | 1
|
20316 | ],
|
20317 | [
|
20318 | "0x37c8bb1350a9a2a8",
|
20319 | 1
|
20320 | ],
|
20321 | [
|
20322 | "0xf3ff14d5ab527059",
|
20323 | 1
|
20324 | ],
|
20325 | [
|
20326 | "0x17a6bc0d0062aeb3",
|
20327 | 1
|
20328 | ]
|
20329 | ]
|
20330 | ],
|
20331 | [
|
20332 | 12604343,
|
20333 | 9290,
|
20334 | [
|
20335 | [
|
20336 | "0xdf6acb689907609b",
|
20337 | 4
|
20338 | ],
|
20339 | [
|
20340 | "0x37e397fc7c91f5e4",
|
20341 | 1
|
20342 | ],
|
20343 | [
|
20344 | "0x40fe3ad401f8959a",
|
20345 | 6
|
20346 | ],
|
20347 | [
|
20348 | "0xd2bc9897eed08f15",
|
20349 | 3
|
20350 | ],
|
20351 | [
|
20352 | "0xf78b278be53f454c",
|
20353 | 2
|
20354 | ],
|
20355 | [
|
20356 | "0xaf2c0297a23e6d3d",
|
20357 | 2
|
20358 | ],
|
20359 | [
|
20360 | "0x49eaaf1b548a0cb0",
|
20361 | 1
|
20362 | ],
|
20363 | [
|
20364 | "0x91d5df18b0d2cf58",
|
20365 | 1
|
20366 | ],
|
20367 | [
|
20368 | "0xed99c5acb25eedf5",
|
20369 | 3
|
20370 | ],
|
20371 | [
|
20372 | "0xcbca25e39f142387",
|
20373 | 2
|
20374 | ],
|
20375 | [
|
20376 | "0x687ad44ad37f03c2",
|
20377 | 1
|
20378 | ],
|
20379 | [
|
20380 | "0xab3c0572291feb8b",
|
20381 | 1
|
20382 | ],
|
20383 | [
|
20384 | "0xbc9d89904f5b923f",
|
20385 | 1
|
20386 | ],
|
20387 | [
|
20388 | "0x37c8bb1350a9a2a8",
|
20389 | 1
|
20390 | ],
|
20391 | [
|
20392 | "0xf3ff14d5ab527059",
|
20393 | 1
|
20394 | ],
|
20395 | [
|
20396 | "0x17a6bc0d0062aeb3",
|
20397 | 1
|
20398 | ]
|
20399 | ]
|
20400 | ],
|
20401 | [
|
20402 | 12841034,
|
20403 | 9300,
|
20404 | [
|
20405 | [
|
20406 | "0xdf6acb689907609b",
|
20407 | 4
|
20408 | ],
|
20409 | [
|
20410 | "0x37e397fc7c91f5e4",
|
20411 | 1
|
20412 | ],
|
20413 | [
|
20414 | "0x40fe3ad401f8959a",
|
20415 | 6
|
20416 | ],
|
20417 | [
|
20418 | "0xd2bc9897eed08f15",
|
20419 | 3
|
20420 | ],
|
20421 | [
|
20422 | "0xf78b278be53f454c",
|
20423 | 2
|
20424 | ],
|
20425 | [
|
20426 | "0xaf2c0297a23e6d3d",
|
20427 | 3
|
20428 | ],
|
20429 | [
|
20430 | "0x49eaaf1b548a0cb0",
|
20431 | 1
|
20432 | ],
|
20433 | [
|
20434 | "0x91d5df18b0d2cf58",
|
20435 | 1
|
20436 | ],
|
20437 | [
|
20438 | "0xed99c5acb25eedf5",
|
20439 | 3
|
20440 | ],
|
20441 | [
|
20442 | "0xcbca25e39f142387",
|
20443 | 2
|
20444 | ],
|
20445 | [
|
20446 | "0x687ad44ad37f03c2",
|
20447 | 1
|
20448 | ],
|
20449 | [
|
20450 | "0xab3c0572291feb8b",
|
20451 | 1
|
20452 | ],
|
20453 | [
|
20454 | "0xbc9d89904f5b923f",
|
20455 | 1
|
20456 | ],
|
20457 | [
|
20458 | "0x37c8bb1350a9a2a8",
|
20459 | 1
|
20460 | ],
|
20461 | [
|
20462 | "0xf3ff14d5ab527059",
|
20463 | 1
|
20464 | ],
|
20465 | [
|
20466 | "0x17a6bc0d0062aeb3",
|
20467 | 1
|
20468 | ]
|
20469 | ]
|
20470 | ],
|
20471 | [
|
20472 | 13128237,
|
20473 | 9310,
|
20474 | [
|
20475 | [
|
20476 | "0xdf6acb689907609b",
|
20477 | 4
|
20478 | ],
|
20479 | [
|
20480 | "0x37e397fc7c91f5e4",
|
20481 | 1
|
20482 | ],
|
20483 | [
|
20484 | "0x40fe3ad401f8959a",
|
20485 | 6
|
20486 | ],
|
20487 | [
|
20488 | "0xd2bc9897eed08f15",
|
20489 | 3
|
20490 | ],
|
20491 | [
|
20492 | "0xf78b278be53f454c",
|
20493 | 2
|
20494 | ],
|
20495 | [
|
20496 | "0xaf2c0297a23e6d3d",
|
20497 | 3
|
20498 | ],
|
20499 | [
|
20500 | "0x49eaaf1b548a0cb0",
|
20501 | 1
|
20502 | ],
|
20503 | [
|
20504 | "0x91d5df18b0d2cf58",
|
20505 | 1
|
20506 | ],
|
20507 | [
|
20508 | "0xed99c5acb25eedf5",
|
20509 | 3
|
20510 | ],
|
20511 | [
|
20512 | "0xcbca25e39f142387",
|
20513 | 2
|
20514 | ],
|
20515 | [
|
20516 | "0x687ad44ad37f03c2",
|
20517 | 1
|
20518 | ],
|
20519 | [
|
20520 | "0xab3c0572291feb8b",
|
20521 | 1
|
20522 | ],
|
20523 | [
|
20524 | "0xbc9d89904f5b923f",
|
20525 | 1
|
20526 | ],
|
20527 | [
|
20528 | "0x37c8bb1350a9a2a8",
|
20529 | 1
|
20530 | ],
|
20531 | [
|
20532 | "0xf3ff14d5ab527059",
|
20533 | 1
|
20534 | ],
|
20535 | [
|
20536 | "0x17a6bc0d0062aeb3",
|
20537 | 1
|
20538 | ]
|
20539 | ]
|
20540 | ],
|
20541 | [
|
20542 | 13272363,
|
20543 | 9320,
|
20544 | [
|
20545 | [
|
20546 | "0xdf6acb689907609b",
|
20547 | 4
|
20548 | ],
|
20549 | [
|
20550 | "0x37e397fc7c91f5e4",
|
20551 | 1
|
20552 | ],
|
20553 | [
|
20554 | "0x40fe3ad401f8959a",
|
20555 | 6
|
20556 | ],
|
20557 | [
|
20558 | "0xd2bc9897eed08f15",
|
20559 | 3
|
20560 | ],
|
20561 | [
|
20562 | "0xf78b278be53f454c",
|
20563 | 2
|
20564 | ],
|
20565 | [
|
20566 | "0xaf2c0297a23e6d3d",
|
20567 | 3
|
20568 | ],
|
20569 | [
|
20570 | "0x49eaaf1b548a0cb0",
|
20571 | 1
|
20572 | ],
|
20573 | [
|
20574 | "0x91d5df18b0d2cf58",
|
20575 | 1
|
20576 | ],
|
20577 | [
|
20578 | "0xed99c5acb25eedf5",
|
20579 | 3
|
20580 | ],
|
20581 | [
|
20582 | "0xcbca25e39f142387",
|
20583 | 2
|
20584 | ],
|
20585 | [
|
20586 | "0x687ad44ad37f03c2",
|
20587 | 1
|
20588 | ],
|
20589 | [
|
20590 | "0xab3c0572291feb8b",
|
20591 | 1
|
20592 | ],
|
20593 | [
|
20594 | "0xbc9d89904f5b923f",
|
20595 | 1
|
20596 | ],
|
20597 | [
|
20598 | "0x37c8bb1350a9a2a8",
|
20599 | 2
|
20600 | ],
|
20601 | [
|
20602 | "0xf3ff14d5ab527059",
|
20603 | 2
|
20604 | ],
|
20605 | [
|
20606 | "0x17a6bc0d0062aeb3",
|
20607 | 1
|
20608 | ]
|
20609 | ]
|
20610 | ],
|
20611 | [
|
20612 | 13483497,
|
20613 | 9330,
|
20614 | [
|
20615 | [
|
20616 | "0xdf6acb689907609b",
|
20617 | 4
|
20618 | ],
|
20619 | [
|
20620 | "0x37e397fc7c91f5e4",
|
20621 | 1
|
20622 | ],
|
20623 | [
|
20624 | "0x40fe3ad401f8959a",
|
20625 | 6
|
20626 | ],
|
20627 | [
|
20628 | "0xd2bc9897eed08f15",
|
20629 | 3
|
20630 | ],
|
20631 | [
|
20632 | "0xf78b278be53f454c",
|
20633 | 2
|
20634 | ],
|
20635 | [
|
20636 | "0xaf2c0297a23e6d3d",
|
20637 | 3
|
20638 | ],
|
20639 | [
|
20640 | "0x49eaaf1b548a0cb0",
|
20641 | 1
|
20642 | ],
|
20643 | [
|
20644 | "0x91d5df18b0d2cf58",
|
20645 | 1
|
20646 | ],
|
20647 | [
|
20648 | "0xed99c5acb25eedf5",
|
20649 | 3
|
20650 | ],
|
20651 | [
|
20652 | "0xcbca25e39f142387",
|
20653 | 2
|
20654 | ],
|
20655 | [
|
20656 | "0x687ad44ad37f03c2",
|
20657 | 1
|
20658 | ],
|
20659 | [
|
20660 | "0xab3c0572291feb8b",
|
20661 | 1
|
20662 | ],
|
20663 | [
|
20664 | "0xbc9d89904f5b923f",
|
20665 | 1
|
20666 | ],
|
20667 | [
|
20668 | "0x37c8bb1350a9a2a8",
|
20669 | 2
|
20670 | ],
|
20671 | [
|
20672 | "0xf3ff14d5ab527059",
|
20673 | 2
|
20674 | ],
|
20675 | [
|
20676 | "0x17a6bc0d0062aeb3",
|
20677 | 1
|
20678 | ]
|
20679 | ]
|
20680 | ],
|
20681 | [
|
20682 | 13649433,
|
20683 | 9340,
|
20684 | [
|
20685 | [
|
20686 | "0xdf6acb689907609b",
|
20687 | 4
|
20688 | ],
|
20689 | [
|
20690 | "0x37e397fc7c91f5e4",
|
20691 | 1
|
20692 | ],
|
20693 | [
|
20694 | "0x40fe3ad401f8959a",
|
20695 | 6
|
20696 | ],
|
20697 | [
|
20698 | "0xd2bc9897eed08f15",
|
20699 | 3
|
20700 | ],
|
20701 | [
|
20702 | "0xf78b278be53f454c",
|
20703 | 2
|
20704 | ],
|
20705 | [
|
20706 | "0xaf2c0297a23e6d3d",
|
20707 | 3
|
20708 | ],
|
20709 | [
|
20710 | "0x49eaaf1b548a0cb0",
|
20711 | 1
|
20712 | ],
|
20713 | [
|
20714 | "0x91d5df18b0d2cf58",
|
20715 | 1
|
20716 | ],
|
20717 | [
|
20718 | "0xed99c5acb25eedf5",
|
20719 | 3
|
20720 | ],
|
20721 | [
|
20722 | "0xcbca25e39f142387",
|
20723 | 2
|
20724 | ],
|
20725 | [
|
20726 | "0x687ad44ad37f03c2",
|
20727 | 1
|
20728 | ],
|
20729 | [
|
20730 | "0xab3c0572291feb8b",
|
20731 | 1
|
20732 | ],
|
20733 | [
|
20734 | "0xbc9d89904f5b923f",
|
20735 | 1
|
20736 | ],
|
20737 | [
|
20738 | "0x37c8bb1350a9a2a8",
|
20739 | 2
|
20740 | ],
|
20741 | [
|
20742 | "0xf3ff14d5ab527059",
|
20743 | 2
|
20744 | ],
|
20745 | [
|
20746 | "0x17a6bc0d0062aeb3",
|
20747 | 1
|
20748 | ]
|
20749 | ]
|
20750 | ],
|
20751 | [
|
20752 | 13761100,
|
20753 | 9350,
|
20754 | [
|
20755 | [
|
20756 | "0xdf6acb689907609b",
|
20757 | 4
|
20758 | ],
|
20759 | [
|
20760 | "0x37e397fc7c91f5e4",
|
20761 | 1
|
20762 | ],
|
20763 | [
|
20764 | "0x40fe3ad401f8959a",
|
20765 | 6
|
20766 | ],
|
20767 | [
|
20768 | "0xd2bc9897eed08f15",
|
20769 | 3
|
20770 | ],
|
20771 | [
|
20772 | "0xf78b278be53f454c",
|
20773 | 2
|
20774 | ],
|
20775 | [
|
20776 | "0xaf2c0297a23e6d3d",
|
20777 | 3
|
20778 | ],
|
20779 | [
|
20780 | "0x49eaaf1b548a0cb0",
|
20781 | 1
|
20782 | ],
|
20783 | [
|
20784 | "0x91d5df18b0d2cf58",
|
20785 | 1
|
20786 | ],
|
20787 | [
|
20788 | "0xed99c5acb25eedf5",
|
20789 | 3
|
20790 | ],
|
20791 | [
|
20792 | "0xcbca25e39f142387",
|
20793 | 2
|
20794 | ],
|
20795 | [
|
20796 | "0x687ad44ad37f03c2",
|
20797 | 1
|
20798 | ],
|
20799 | [
|
20800 | "0xab3c0572291feb8b",
|
20801 | 1
|
20802 | ],
|
20803 | [
|
20804 | "0xbc9d89904f5b923f",
|
20805 | 1
|
20806 | ],
|
20807 | [
|
20808 | "0x37c8bb1350a9a2a8",
|
20809 | 2
|
20810 | ],
|
20811 | [
|
20812 | "0xf3ff14d5ab527059",
|
20813 | 2
|
20814 | ],
|
20815 | [
|
20816 | "0x17a6bc0d0062aeb3",
|
20817 | 1
|
20818 | ]
|
20819 | ]
|
20820 | ],
|
20821 | [
|
20822 | 13847400,
|
20823 | 9360,
|
20824 | [
|
20825 | [
|
20826 | "0xdf6acb689907609b",
|
20827 | 4
|
20828 | ],
|
20829 | [
|
20830 | "0x37e397fc7c91f5e4",
|
20831 | 1
|
20832 | ],
|
20833 | [
|
20834 | "0x40fe3ad401f8959a",
|
20835 | 6
|
20836 | ],
|
20837 | [
|
20838 | "0xd2bc9897eed08f15",
|
20839 | 3
|
20840 | ],
|
20841 | [
|
20842 | "0xf78b278be53f454c",
|
20843 | 2
|
20844 | ],
|
20845 | [
|
20846 | "0xaf2c0297a23e6d3d",
|
20847 | 3
|
20848 | ],
|
20849 | [
|
20850 | "0x49eaaf1b548a0cb0",
|
20851 | 1
|
20852 | ],
|
20853 | [
|
20854 | "0x91d5df18b0d2cf58",
|
20855 | 1
|
20856 | ],
|
20857 | [
|
20858 | "0xed99c5acb25eedf5",
|
20859 | 3
|
20860 | ],
|
20861 | [
|
20862 | "0xcbca25e39f142387",
|
20863 | 2
|
20864 | ],
|
20865 | [
|
20866 | "0x687ad44ad37f03c2",
|
20867 | 1
|
20868 | ],
|
20869 | [
|
20870 | "0xab3c0572291feb8b",
|
20871 | 1
|
20872 | ],
|
20873 | [
|
20874 | "0xbc9d89904f5b923f",
|
20875 | 1
|
20876 | ],
|
20877 | [
|
20878 | "0x37c8bb1350a9a2a8",
|
20879 | 2
|
20880 | ],
|
20881 | [
|
20882 | "0xf3ff14d5ab527059",
|
20883 | 2
|
20884 | ],
|
20885 | [
|
20886 | "0x17a6bc0d0062aeb3",
|
20887 | 1
|
20888 | ]
|
20889 | ]
|
20890 | ],
|
20891 | [
|
20892 | 14249200,
|
20893 | 9370,
|
20894 | [
|
20895 | [
|
20896 | "0xdf6acb689907609b",
|
20897 | 4
|
20898 | ],
|
20899 | [
|
20900 | "0x37e397fc7c91f5e4",
|
20901 | 1
|
20902 | ],
|
20903 | [
|
20904 | "0x40fe3ad401f8959a",
|
20905 | 6
|
20906 | ],
|
20907 | [
|
20908 | "0xd2bc9897eed08f15",
|
20909 | 3
|
20910 | ],
|
20911 | [
|
20912 | "0xf78b278be53f454c",
|
20913 | 2
|
20914 | ],
|
20915 | [
|
20916 | "0xaf2c0297a23e6d3d",
|
20917 | 3
|
20918 | ],
|
20919 | [
|
20920 | "0x49eaaf1b548a0cb0",
|
20921 | 1
|
20922 | ],
|
20923 | [
|
20924 | "0x91d5df18b0d2cf58",
|
20925 | 1
|
20926 | ],
|
20927 | [
|
20928 | "0xed99c5acb25eedf5",
|
20929 | 3
|
20930 | ],
|
20931 | [
|
20932 | "0xcbca25e39f142387",
|
20933 | 2
|
20934 | ],
|
20935 | [
|
20936 | "0x687ad44ad37f03c2",
|
20937 | 1
|
20938 | ],
|
20939 | [
|
20940 | "0xab3c0572291feb8b",
|
20941 | 1
|
20942 | ],
|
20943 | [
|
20944 | "0xbc9d89904f5b923f",
|
20945 | 1
|
20946 | ],
|
20947 | [
|
20948 | "0x37c8bb1350a9a2a8",
|
20949 | 2
|
20950 | ],
|
20951 | [
|
20952 | "0xf3ff14d5ab527059",
|
20953 | 2
|
20954 | ],
|
20955 | [
|
20956 | "0x17a6bc0d0062aeb3",
|
20957 | 1
|
20958 | ]
|
20959 | ]
|
20960 | ],
|
20961 | [
|
20962 | 14576855,
|
20963 | 9380,
|
20964 | [
|
20965 | [
|
20966 | "0xdf6acb689907609b",
|
20967 | 4
|
20968 | ],
|
20969 | [
|
20970 | "0x37e397fc7c91f5e4",
|
20971 | 1
|
20972 | ],
|
20973 | [
|
20974 | "0x40fe3ad401f8959a",
|
20975 | 6
|
20976 | ],
|
20977 | [
|
20978 | "0xd2bc9897eed08f15",
|
20979 | 3
|
20980 | ],
|
20981 | [
|
20982 | "0xf78b278be53f454c",
|
20983 | 2
|
20984 | ],
|
20985 | [
|
20986 | "0xaf2c0297a23e6d3d",
|
20987 | 3
|
20988 | ],
|
20989 | [
|
20990 | "0x49eaaf1b548a0cb0",
|
20991 | 1
|
20992 | ],
|
20993 | [
|
20994 | "0x91d5df18b0d2cf58",
|
20995 | 1
|
20996 | ],
|
20997 | [
|
20998 | "0xed99c5acb25eedf5",
|
20999 | 3
|
21000 | ],
|
21001 | [
|
21002 | "0xcbca25e39f142387",
|
21003 | 2
|
21004 | ],
|
21005 | [
|
21006 | "0x687ad44ad37f03c2",
|
21007 | 1
|
21008 | ],
|
21009 | [
|
21010 | "0xab3c0572291feb8b",
|
21011 | 1
|
21012 | ],
|
21013 | [
|
21014 | "0xbc9d89904f5b923f",
|
21015 | 1
|
21016 | ],
|
21017 | [
|
21018 | "0x37c8bb1350a9a2a8",
|
21019 | 3
|
21020 | ],
|
21021 | [
|
21022 | "0xf3ff14d5ab527059",
|
21023 | 3
|
21024 | ],
|
21025 | [
|
21026 | "0x17a6bc0d0062aeb3",
|
21027 | 1
|
21028 | ]
|
21029 | ]
|
21030 | ],
|
21031 | [
|
21032 | 14849830,
|
21033 | 9390,
|
21034 | [
|
21035 | [
|
21036 | "0xdf6acb689907609b",
|
21037 | 4
|
21038 | ],
|
21039 | [
|
21040 | "0x37e397fc7c91f5e4",
|
21041 | 1
|
21042 | ],
|
21043 | [
|
21044 | "0x40fe3ad401f8959a",
|
21045 | 6
|
21046 | ],
|
21047 | [
|
21048 | "0xd2bc9897eed08f15",
|
21049 | 3
|
21050 | ],
|
21051 | [
|
21052 | "0xf78b278be53f454c",
|
21053 | 2
|
21054 | ],
|
21055 | [
|
21056 | "0xaf2c0297a23e6d3d",
|
21057 | 4
|
21058 | ],
|
21059 | [
|
21060 | "0x49eaaf1b548a0cb0",
|
21061 | 1
|
21062 | ],
|
21063 | [
|
21064 | "0x91d5df18b0d2cf58",
|
21065 | 1
|
21066 | ],
|
21067 | [
|
21068 | "0xed99c5acb25eedf5",
|
21069 | 3
|
21070 | ],
|
21071 | [
|
21072 | "0xcbca25e39f142387",
|
21073 | 2
|
21074 | ],
|
21075 | [
|
21076 | "0x687ad44ad37f03c2",
|
21077 | 1
|
21078 | ],
|
21079 | [
|
21080 | "0xab3c0572291feb8b",
|
21081 | 1
|
21082 | ],
|
21083 | [
|
21084 | "0xbc9d89904f5b923f",
|
21085 | 1
|
21086 | ],
|
21087 | [
|
21088 | "0x37c8bb1350a9a2a8",
|
21089 | 3
|
21090 | ],
|
21091 | [
|
21092 | "0xf3ff14d5ab527059",
|
21093 | 3
|
21094 | ],
|
21095 | [
|
21096 | "0x17a6bc0d0062aeb3",
|
21097 | 1
|
21098 | ],
|
21099 | [
|
21100 | "0x18ef58a3b67ba770",
|
21101 | 1
|
21102 | ]
|
21103 | ]
|
21104 | ],
|
21105 | [
|
21106 | 15146832,
|
21107 | 9400,
|
21108 | [
|
21109 | [
|
21110 | "0xdf6acb689907609b",
|
21111 | 4
|
21112 | ],
|
21113 | [
|
21114 | "0x37e397fc7c91f5e4",
|
21115 | 1
|
21116 | ],
|
21117 | [
|
21118 | "0x40fe3ad401f8959a",
|
21119 | 6
|
21120 | ],
|
21121 | [
|
21122 | "0xd2bc9897eed08f15",
|
21123 | 3
|
21124 | ],
|
21125 | [
|
21126 | "0xf78b278be53f454c",
|
21127 | 2
|
21128 | ],
|
21129 | [
|
21130 | "0xaf2c0297a23e6d3d",
|
21131 | 4
|
21132 | ],
|
21133 | [
|
21134 | "0x49eaaf1b548a0cb0",
|
21135 | 2
|
21136 | ],
|
21137 | [
|
21138 | "0x91d5df18b0d2cf58",
|
21139 | 2
|
21140 | ],
|
21141 | [
|
21142 | "0xed99c5acb25eedf5",
|
21143 | 3
|
21144 | ],
|
21145 | [
|
21146 | "0xcbca25e39f142387",
|
21147 | 2
|
21148 | ],
|
21149 | [
|
21150 | "0x687ad44ad37f03c2",
|
21151 | 1
|
21152 | ],
|
21153 | [
|
21154 | "0xab3c0572291feb8b",
|
21155 | 1
|
21156 | ],
|
21157 | [
|
21158 | "0xbc9d89904f5b923f",
|
21159 | 1
|
21160 | ],
|
21161 | [
|
21162 | "0x37c8bb1350a9a2a8",
|
21163 | 3
|
21164 | ],
|
21165 | [
|
21166 | "0xf3ff14d5ab527059",
|
21167 | 3
|
21168 | ],
|
21169 | [
|
21170 | "0x17a6bc0d0062aeb3",
|
21171 | 1
|
21172 | ],
|
21173 | [
|
21174 | "0x18ef58a3b67ba770",
|
21175 | 1
|
21176 | ]
|
21177 | ]
|
21178 | ],
|
21179 | [
|
21180 | 15332317,
|
21181 | 9401,
|
21182 | [
|
21183 | [
|
21184 | "0xdf6acb689907609b",
|
21185 | 4
|
21186 | ],
|
21187 | [
|
21188 | "0x37e397fc7c91f5e4",
|
21189 | 1
|
21190 | ],
|
21191 | [
|
21192 | "0x40fe3ad401f8959a",
|
21193 | 6
|
21194 | ],
|
21195 | [
|
21196 | "0xd2bc9897eed08f15",
|
21197 | 3
|
21198 | ],
|
21199 | [
|
21200 | "0xf78b278be53f454c",
|
21201 | 2
|
21202 | ],
|
21203 | [
|
21204 | "0xaf2c0297a23e6d3d",
|
21205 | 4
|
21206 | ],
|
21207 | [
|
21208 | "0x49eaaf1b548a0cb0",
|
21209 | 2
|
21210 | ],
|
21211 | [
|
21212 | "0x91d5df18b0d2cf58",
|
21213 | 2
|
21214 | ],
|
21215 | [
|
21216 | "0xed99c5acb25eedf5",
|
21217 | 3
|
21218 | ],
|
21219 | [
|
21220 | "0xcbca25e39f142387",
|
21221 | 2
|
21222 | ],
|
21223 | [
|
21224 | "0x687ad44ad37f03c2",
|
21225 | 1
|
21226 | ],
|
21227 | [
|
21228 | "0xab3c0572291feb8b",
|
21229 | 1
|
21230 | ],
|
21231 | [
|
21232 | "0xbc9d89904f5b923f",
|
21233 | 1
|
21234 | ],
|
21235 | [
|
21236 | "0x37c8bb1350a9a2a8",
|
21237 | 3
|
21238 | ],
|
21239 | [
|
21240 | "0xf3ff14d5ab527059",
|
21241 | 3
|
21242 | ],
|
21243 | [
|
21244 | "0x17a6bc0d0062aeb3",
|
21245 | 1
|
21246 | ],
|
21247 | [
|
21248 | "0x18ef58a3b67ba770",
|
21249 | 1
|
21250 | ]
|
21251 | ]
|
21252 | ],
|
21253 | [
|
21254 | 15661793,
|
21255 | 9420,
|
21256 | [
|
21257 | [
|
21258 | "0xdf6acb689907609b",
|
21259 | 4
|
21260 | ],
|
21261 | [
|
21262 | "0x37e397fc7c91f5e4",
|
21263 | 2
|
21264 | ],
|
21265 | [
|
21266 | "0x40fe3ad401f8959a",
|
21267 | 6
|
21268 | ],
|
21269 | [
|
21270 | "0xd2bc9897eed08f15",
|
21271 | 3
|
21272 | ],
|
21273 | [
|
21274 | "0xf78b278be53f454c",
|
21275 | 2
|
21276 | ],
|
21277 | [
|
21278 | "0xaf2c0297a23e6d3d",
|
21279 | 4
|
21280 | ],
|
21281 | [
|
21282 | "0x49eaaf1b548a0cb0",
|
21283 | 2
|
21284 | ],
|
21285 | [
|
21286 | "0x91d5df18b0d2cf58",
|
21287 | 2
|
21288 | ],
|
21289 | [
|
21290 | "0xed99c5acb25eedf5",
|
21291 | 3
|
21292 | ],
|
21293 | [
|
21294 | "0xcbca25e39f142387",
|
21295 | 2
|
21296 | ],
|
21297 | [
|
21298 | "0x687ad44ad37f03c2",
|
21299 | 1
|
21300 | ],
|
21301 | [
|
21302 | "0xab3c0572291feb8b",
|
21303 | 1
|
21304 | ],
|
21305 | [
|
21306 | "0xbc9d89904f5b923f",
|
21307 | 1
|
21308 | ],
|
21309 | [
|
21310 | "0x37c8bb1350a9a2a8",
|
21311 | 4
|
21312 | ],
|
21313 | [
|
21314 | "0xf3ff14d5ab527059",
|
21315 | 3
|
21316 | ],
|
21317 | [
|
21318 | "0x17a6bc0d0062aeb3",
|
21319 | 1
|
21320 | ],
|
21321 | [
|
21322 | "0x18ef58a3b67ba770",
|
21323 | 1
|
21324 | ]
|
21325 | ]
|
21326 | ],
|
21327 | [
|
21328 | 16165469,
|
21329 | 9430,
|
21330 | [
|
21331 | [
|
21332 | "0xdf6acb689907609b",
|
21333 | 4
|
21334 | ],
|
21335 | [
|
21336 | "0x37e397fc7c91f5e4",
|
21337 | 2
|
21338 | ],
|
21339 | [
|
21340 | "0x40fe3ad401f8959a",
|
21341 | 6
|
21342 | ],
|
21343 | [
|
21344 | "0xd2bc9897eed08f15",
|
21345 | 3
|
21346 | ],
|
21347 | [
|
21348 | "0xf78b278be53f454c",
|
21349 | 2
|
21350 | ],
|
21351 | [
|
21352 | "0xaf2c0297a23e6d3d",
|
21353 | 4
|
21354 | ],
|
21355 | [
|
21356 | "0x49eaaf1b548a0cb0",
|
21357 | 2
|
21358 | ],
|
21359 | [
|
21360 | "0x91d5df18b0d2cf58",
|
21361 | 2
|
21362 | ],
|
21363 | [
|
21364 | "0xed99c5acb25eedf5",
|
21365 | 3
|
21366 | ],
|
21367 | [
|
21368 | "0xcbca25e39f142387",
|
21369 | 2
|
21370 | ],
|
21371 | [
|
21372 | "0x687ad44ad37f03c2",
|
21373 | 1
|
21374 | ],
|
21375 | [
|
21376 | "0xab3c0572291feb8b",
|
21377 | 1
|
21378 | ],
|
21379 | [
|
21380 | "0xbc9d89904f5b923f",
|
21381 | 1
|
21382 | ],
|
21383 | [
|
21384 | "0x37c8bb1350a9a2a8",
|
21385 | 4
|
21386 | ],
|
21387 | [
|
21388 | "0xf3ff14d5ab527059",
|
21389 | 3
|
21390 | ],
|
21391 | [
|
21392 | "0x17a6bc0d0062aeb3",
|
21393 | 1
|
21394 | ],
|
21395 | [
|
21396 | "0x18ef58a3b67ba770",
|
21397 | 1
|
21398 | ]
|
21399 | ]
|
21400 | ],
|
21401 | [
|
21402 | 18293984,
|
21403 | 102000,
|
21404 | [
|
21405 | [
|
21406 | "0xdf6acb689907609b",
|
21407 | 4
|
21408 | ],
|
21409 | [
|
21410 | "0x37e397fc7c91f5e4",
|
21411 | 2
|
21412 | ],
|
21413 | [
|
21414 | "0x40fe3ad401f8959a",
|
21415 | 6
|
21416 | ],
|
21417 | [
|
21418 | "0xd2bc9897eed08f15",
|
21419 | 3
|
21420 | ],
|
21421 | [
|
21422 | "0xf78b278be53f454c",
|
21423 | 2
|
21424 | ],
|
21425 | [
|
21426 | "0xaf2c0297a23e6d3d",
|
21427 | 7
|
21428 | ],
|
21429 | [
|
21430 | "0x49eaaf1b548a0cb0",
|
21431 | 3
|
21432 | ],
|
21433 | [
|
21434 | "0x91d5df18b0d2cf58",
|
21435 | 2
|
21436 | ],
|
21437 | [
|
21438 | "0x2a5e924655399e60",
|
21439 | 1
|
21440 | ],
|
21441 | [
|
21442 | "0xed99c5acb25eedf5",
|
21443 | 3
|
21444 | ],
|
21445 | [
|
21446 | "0xcbca25e39f142387",
|
21447 | 2
|
21448 | ],
|
21449 | [
|
21450 | "0x687ad44ad37f03c2",
|
21451 | 1
|
21452 | ],
|
21453 | [
|
21454 | "0xab3c0572291feb8b",
|
21455 | 1
|
21456 | ],
|
21457 | [
|
21458 | "0xbc9d89904f5b923f",
|
21459 | 1
|
21460 | ],
|
21461 | [
|
21462 | "0x37c8bb1350a9a2a8",
|
21463 | 4
|
21464 | ],
|
21465 | [
|
21466 | "0xf3ff14d5ab527059",
|
21467 | 3
|
21468 | ],
|
21469 | [
|
21470 | "0x17a6bc0d0062aeb3",
|
21471 | 1
|
21472 | ],
|
21473 | [
|
21474 | "0x18ef58a3b67ba770",
|
21475 | 1
|
21476 | ],
|
21477 | [
|
21478 | "0xfbc577b9d747efd6",
|
21479 | 1
|
21480 | ]
|
21481 | ]
|
21482 | ],
|
21483 | [
|
21484 | 18293991,
|
21485 | 103000,
|
21486 | [
|
21487 | [
|
21488 | "0xdf6acb689907609b",
|
21489 | 4
|
21490 | ],
|
21491 | [
|
21492 | "0x37e397fc7c91f5e4",
|
21493 | 2
|
21494 | ],
|
21495 | [
|
21496 | "0x40fe3ad401f8959a",
|
21497 | 6
|
21498 | ],
|
21499 | [
|
21500 | "0xd2bc9897eed08f15",
|
21501 | 3
|
21502 | ],
|
21503 | [
|
21504 | "0xf78b278be53f454c",
|
21505 | 2
|
21506 | ],
|
21507 | [
|
21508 | "0xaf2c0297a23e6d3d",
|
21509 | 8
|
21510 | ],
|
21511 | [
|
21512 | "0x49eaaf1b548a0cb0",
|
21513 | 3
|
21514 | ],
|
21515 | [
|
21516 | "0x91d5df18b0d2cf58",
|
21517 | 2
|
21518 | ],
|
21519 | [
|
21520 | "0x2a5e924655399e60",
|
21521 | 1
|
21522 | ],
|
21523 | [
|
21524 | "0xed99c5acb25eedf5",
|
21525 | 3
|
21526 | ],
|
21527 | [
|
21528 | "0xcbca25e39f142387",
|
21529 | 2
|
21530 | ],
|
21531 | [
|
21532 | "0x687ad44ad37f03c2",
|
21533 | 1
|
21534 | ],
|
21535 | [
|
21536 | "0xab3c0572291feb8b",
|
21537 | 1
|
21538 | ],
|
21539 | [
|
21540 | "0xbc9d89904f5b923f",
|
21541 | 1
|
21542 | ],
|
21543 | [
|
21544 | "0x37c8bb1350a9a2a8",
|
21545 | 4
|
21546 | ],
|
21547 | [
|
21548 | "0xf3ff14d5ab527059",
|
21549 | 3
|
21550 | ],
|
21551 | [
|
21552 | "0x17a6bc0d0062aeb3",
|
21553 | 1
|
21554 | ],
|
21555 | [
|
21556 | "0x18ef58a3b67ba770",
|
21557 | 1
|
21558 | ],
|
21559 | [
|
21560 | "0xfbc577b9d747efd6",
|
21561 | 1
|
21562 | ]
|
21563 | ]
|
21564 | ],
|
21565 | [
|
21566 | 18451783,
|
21567 | 104000,
|
21568 | [
|
21569 | [
|
21570 | "0xdf6acb689907609b",
|
21571 | 4
|
21572 | ],
|
21573 | [
|
21574 | "0x37e397fc7c91f5e4",
|
21575 | 2
|
21576 | ],
|
21577 | [
|
21578 | "0x40fe3ad401f8959a",
|
21579 | 6
|
21580 | ],
|
21581 | [
|
21582 | "0xd2bc9897eed08f15",
|
21583 | 3
|
21584 | ],
|
21585 | [
|
21586 | "0xf78b278be53f454c",
|
21587 | 2
|
21588 | ],
|
21589 | [
|
21590 | "0xaf2c0297a23e6d3d",
|
21591 | 9
|
21592 | ],
|
21593 | [
|
21594 | "0x49eaaf1b548a0cb0",
|
21595 | 3
|
21596 | ],
|
21597 | [
|
21598 | "0x91d5df18b0d2cf58",
|
21599 | 2
|
21600 | ],
|
21601 | [
|
21602 | "0x2a5e924655399e60",
|
21603 | 1
|
21604 | ],
|
21605 | [
|
21606 | "0xed99c5acb25eedf5",
|
21607 | 3
|
21608 | ],
|
21609 | [
|
21610 | "0xcbca25e39f142387",
|
21611 | 2
|
21612 | ],
|
21613 | [
|
21614 | "0x687ad44ad37f03c2",
|
21615 | 1
|
21616 | ],
|
21617 | [
|
21618 | "0xab3c0572291feb8b",
|
21619 | 1
|
21620 | ],
|
21621 | [
|
21622 | "0xbc9d89904f5b923f",
|
21623 | 1
|
21624 | ],
|
21625 | [
|
21626 | "0x37c8bb1350a9a2a8",
|
21627 | 4
|
21628 | ],
|
21629 | [
|
21630 | "0xf3ff14d5ab527059",
|
21631 | 3
|
21632 | ],
|
21633 | [
|
21634 | "0x17a6bc0d0062aeb3",
|
21635 | 1
|
21636 | ],
|
21637 | [
|
21638 | "0x18ef58a3b67ba770",
|
21639 | 1
|
21640 | ],
|
21641 | [
|
21642 | "0xfbc577b9d747efd6",
|
21643 | 1
|
21644 | ]
|
21645 | ]
|
21646 | ],
|
21647 | [
|
21648 | 18679741,
|
21649 | 1005000,
|
21650 | [
|
21651 | [
|
21652 | "0xdf6acb689907609b",
|
21653 | 4
|
21654 | ],
|
21655 | [
|
21656 | "0x37e397fc7c91f5e4",
|
21657 | 2
|
21658 | ],
|
21659 | [
|
21660 | "0x40fe3ad401f8959a",
|
21661 | 6
|
21662 | ],
|
21663 | [
|
21664 | "0xd2bc9897eed08f15",
|
21665 | 3
|
21666 | ],
|
21667 | [
|
21668 | "0xf78b278be53f454c",
|
21669 | 2
|
21670 | ],
|
21671 | [
|
21672 | "0xaf2c0297a23e6d3d",
|
21673 | 9
|
21674 | ],
|
21675 | [
|
21676 | "0x49eaaf1b548a0cb0",
|
21677 | 3
|
21678 | ],
|
21679 | [
|
21680 | "0x91d5df18b0d2cf58",
|
21681 | 2
|
21682 | ],
|
21683 | [
|
21684 | "0x2a5e924655399e60",
|
21685 | 1
|
21686 | ],
|
21687 | [
|
21688 | "0xed99c5acb25eedf5",
|
21689 | 3
|
21690 | ],
|
21691 | [
|
21692 | "0xcbca25e39f142387",
|
21693 | 2
|
21694 | ],
|
21695 | [
|
21696 | "0x687ad44ad37f03c2",
|
21697 | 1
|
21698 | ],
|
21699 | [
|
21700 | "0xab3c0572291feb8b",
|
21701 | 1
|
21702 | ],
|
21703 | [
|
21704 | "0xbc9d89904f5b923f",
|
21705 | 1
|
21706 | ],
|
21707 | [
|
21708 | "0x37c8bb1350a9a2a8",
|
21709 | 4
|
21710 | ],
|
21711 | [
|
21712 | "0xf3ff14d5ab527059",
|
21713 | 3
|
21714 | ],
|
21715 | [
|
21716 | "0x17a6bc0d0062aeb3",
|
21717 | 1
|
21718 | ],
|
21719 | [
|
21720 | "0x18ef58a3b67ba770",
|
21721 | 1
|
21722 | ],
|
21723 | [
|
21724 | "0xfbc577b9d747efd6",
|
21725 | 1
|
21726 | ]
|
21727 | ]
|
21728 | ],
|
21729 | [
|
21730 | 19166695,
|
21731 | 1006000,
|
21732 | [
|
21733 | [
|
21734 | "0xdf6acb689907609b",
|
21735 | 4
|
21736 | ],
|
21737 | [
|
21738 | "0x37e397fc7c91f5e4",
|
21739 | 2
|
21740 | ],
|
21741 | [
|
21742 | "0x40fe3ad401f8959a",
|
21743 | 6
|
21744 | ],
|
21745 | [
|
21746 | "0xd2bc9897eed08f15",
|
21747 | 3
|
21748 | ],
|
21749 | [
|
21750 | "0xf78b278be53f454c",
|
21751 | 2
|
21752 | ],
|
21753 | [
|
21754 | "0xaf2c0297a23e6d3d",
|
21755 | 10
|
21756 | ],
|
21757 | [
|
21758 | "0x49eaaf1b548a0cb0",
|
21759 | 3
|
21760 | ],
|
21761 | [
|
21762 | "0x91d5df18b0d2cf58",
|
21763 | 2
|
21764 | ],
|
21765 | [
|
21766 | "0x2a5e924655399e60",
|
21767 | 1
|
21768 | ],
|
21769 | [
|
21770 | "0xed99c5acb25eedf5",
|
21771 | 3
|
21772 | ],
|
21773 | [
|
21774 | "0xcbca25e39f142387",
|
21775 | 2
|
21776 | ],
|
21777 | [
|
21778 | "0x687ad44ad37f03c2",
|
21779 | 1
|
21780 | ],
|
21781 | [
|
21782 | "0xab3c0572291feb8b",
|
21783 | 1
|
21784 | ],
|
21785 | [
|
21786 | "0xbc9d89904f5b923f",
|
21787 | 1
|
21788 | ],
|
21789 | [
|
21790 | "0x37c8bb1350a9a2a8",
|
21791 | 4
|
21792 | ],
|
21793 | [
|
21794 | "0xf3ff14d5ab527059",
|
21795 | 3
|
21796 | ],
|
21797 | [
|
21798 | "0x17a6bc0d0062aeb3",
|
21799 | 1
|
21800 | ],
|
21801 | [
|
21802 | "0x18ef58a3b67ba770",
|
21803 | 1
|
21804 | ],
|
21805 | [
|
21806 | "0xfbc577b9d747efd6",
|
21807 | 1
|
21808 | ]
|
21809 | ]
|
21810 | ],
|
21811 | [
|
21812 | 19234157,
|
21813 | 1006001,
|
21814 | [
|
21815 | [
|
21816 | "0xdf6acb689907609b",
|
21817 | 4
|
21818 | ],
|
21819 | [
|
21820 | "0x37e397fc7c91f5e4",
|
21821 | 2
|
21822 | ],
|
21823 | [
|
21824 | "0x40fe3ad401f8959a",
|
21825 | 6
|
21826 | ],
|
21827 | [
|
21828 | "0xd2bc9897eed08f15",
|
21829 | 3
|
21830 | ],
|
21831 | [
|
21832 | "0xf78b278be53f454c",
|
21833 | 2
|
21834 | ],
|
21835 | [
|
21836 | "0xaf2c0297a23e6d3d",
|
21837 | 10
|
21838 | ],
|
21839 | [
|
21840 | "0x49eaaf1b548a0cb0",
|
21841 | 3
|
21842 | ],
|
21843 | [
|
21844 | "0x91d5df18b0d2cf58",
|
21845 | 2
|
21846 | ],
|
21847 | [
|
21848 | "0x2a5e924655399e60",
|
21849 | 1
|
21850 | ],
|
21851 | [
|
21852 | "0xed99c5acb25eedf5",
|
21853 | 3
|
21854 | ],
|
21855 | [
|
21856 | "0xcbca25e39f142387",
|
21857 | 2
|
21858 | ],
|
21859 | [
|
21860 | "0x687ad44ad37f03c2",
|
21861 | 1
|
21862 | ],
|
21863 | [
|
21864 | "0xab3c0572291feb8b",
|
21865 | 1
|
21866 | ],
|
21867 | [
|
21868 | "0xbc9d89904f5b923f",
|
21869 | 1
|
21870 | ],
|
21871 | [
|
21872 | "0x37c8bb1350a9a2a8",
|
21873 | 4
|
21874 | ],
|
21875 | [
|
21876 | "0xf3ff14d5ab527059",
|
21877 | 3
|
21878 | ],
|
21879 | [
|
21880 | "0x17a6bc0d0062aeb3",
|
21881 | 1
|
21882 | ],
|
21883 | [
|
21884 | "0x18ef58a3b67ba770",
|
21885 | 1
|
21886 | ],
|
21887 | [
|
21888 | "0xfbc577b9d747efd6",
|
21889 | 1
|
21890 | ]
|
21891 | ]
|
21892 | ],
|
21893 | [
|
21894 | 19542944,
|
21895 | 1007000,
|
21896 | [
|
21897 | [
|
21898 | "0xdf6acb689907609b",
|
21899 | 4
|
21900 | ],
|
21901 | [
|
21902 | "0x37e397fc7c91f5e4",
|
21903 | 2
|
21904 | ],
|
21905 | [
|
21906 | "0x40fe3ad401f8959a",
|
21907 | 6
|
21908 | ],
|
21909 | [
|
21910 | "0xd2bc9897eed08f15",
|
21911 | 3
|
21912 | ],
|
21913 | [
|
21914 | "0xf78b278be53f454c",
|
21915 | 2
|
21916 | ],
|
21917 | [
|
21918 | "0xaf2c0297a23e6d3d",
|
21919 | 10
|
21920 | ],
|
21921 | [
|
21922 | "0x49eaaf1b548a0cb0",
|
21923 | 3
|
21924 | ],
|
21925 | [
|
21926 | "0x91d5df18b0d2cf58",
|
21927 | 2
|
21928 | ],
|
21929 | [
|
21930 | "0x2a5e924655399e60",
|
21931 | 1
|
21932 | ],
|
21933 | [
|
21934 | "0xed99c5acb25eedf5",
|
21935 | 3
|
21936 | ],
|
21937 | [
|
21938 | "0xcbca25e39f142387",
|
21939 | 2
|
21940 | ],
|
21941 | [
|
21942 | "0x687ad44ad37f03c2",
|
21943 | 1
|
21944 | ],
|
21945 | [
|
21946 | "0xab3c0572291feb8b",
|
21947 | 1
|
21948 | ],
|
21949 | [
|
21950 | "0xbc9d89904f5b923f",
|
21951 | 1
|
21952 | ],
|
21953 | [
|
21954 | "0x37c8bb1350a9a2a8",
|
21955 | 4
|
21956 | ],
|
21957 | [
|
21958 | "0xf3ff14d5ab527059",
|
21959 | 3
|
21960 | ],
|
21961 | [
|
21962 | "0x17a6bc0d0062aeb3",
|
21963 | 1
|
21964 | ],
|
21965 | [
|
21966 | "0x18ef58a3b67ba770",
|
21967 | 1
|
21968 | ],
|
21969 | [
|
21970 | "0xfbc577b9d747efd6",
|
21971 | 1
|
21972 | ]
|
21973 | ]
|
21974 | ],
|
21975 | [
|
21976 | 19621258,
|
21977 | 1007001,
|
21978 | [
|
21979 | [
|
21980 | "0xdf6acb689907609b",
|
21981 | 4
|
21982 | ],
|
21983 | [
|
21984 | "0x37e397fc7c91f5e4",
|
21985 | 2
|
21986 | ],
|
21987 | [
|
21988 | "0x40fe3ad401f8959a",
|
21989 | 6
|
21990 | ],
|
21991 | [
|
21992 | "0xd2bc9897eed08f15",
|
21993 | 3
|
21994 | ],
|
21995 | [
|
21996 | "0xf78b278be53f454c",
|
21997 | 2
|
21998 | ],
|
21999 | [
|
22000 | "0xaf2c0297a23e6d3d",
|
22001 | 10
|
22002 | ],
|
22003 | [
|
22004 | "0x49eaaf1b548a0cb0",
|
22005 | 3
|
22006 | ],
|
22007 | [
|
22008 | "0x91d5df18b0d2cf58",
|
22009 | 2
|
22010 | ],
|
22011 | [
|
22012 | "0x2a5e924655399e60",
|
22013 | 1
|
22014 | ],
|
22015 | [
|
22016 | "0xed99c5acb25eedf5",
|
22017 | 3
|
22018 | ],
|
22019 | [
|
22020 | "0xcbca25e39f142387",
|
22021 | 2
|
22022 | ],
|
22023 | [
|
22024 | "0x687ad44ad37f03c2",
|
22025 | 1
|
22026 | ],
|
22027 | [
|
22028 | "0xab3c0572291feb8b",
|
22029 | 1
|
22030 | ],
|
22031 | [
|
22032 | "0xbc9d89904f5b923f",
|
22033 | 1
|
22034 | ],
|
22035 | [
|
22036 | "0x37c8bb1350a9a2a8",
|
22037 | 4
|
22038 | ],
|
22039 | [
|
22040 | "0xf3ff14d5ab527059",
|
22041 | 3
|
22042 | ],
|
22043 | [
|
22044 | "0x17a6bc0d0062aeb3",
|
22045 | 1
|
22046 | ],
|
22047 | [
|
22048 | "0x18ef58a3b67ba770",
|
22049 | 1
|
22050 | ],
|
22051 | [
|
22052 | "0xfbc577b9d747efd6",
|
22053 | 1
|
22054 | ]
|
22055 | ]
|
22056 | ],
|
22057 | [
|
22058 | 19761406,
|
22059 | 1008000,
|
22060 | [
|
22061 | [
|
22062 | "0xdf6acb689907609b",
|
22063 | 4
|
22064 | ],
|
22065 | [
|
22066 | "0x37e397fc7c91f5e4",
|
22067 | 2
|
22068 | ],
|
22069 | [
|
22070 | "0x40fe3ad401f8959a",
|
22071 | 6
|
22072 | ],
|
22073 | [
|
22074 | "0xd2bc9897eed08f15",
|
22075 | 3
|
22076 | ],
|
22077 | [
|
22078 | "0xf78b278be53f454c",
|
22079 | 2
|
22080 | ],
|
22081 | [
|
22082 | "0xaf2c0297a23e6d3d",
|
22083 | 10
|
22084 | ],
|
22085 | [
|
22086 | "0x49eaaf1b548a0cb0",
|
22087 | 3
|
22088 | ],
|
22089 | [
|
22090 | "0x91d5df18b0d2cf58",
|
22091 | 2
|
22092 | ],
|
22093 | [
|
22094 | "0x2a5e924655399e60",
|
22095 | 1
|
22096 | ],
|
22097 | [
|
22098 | "0xed99c5acb25eedf5",
|
22099 | 3
|
22100 | ],
|
22101 | [
|
22102 | "0xcbca25e39f142387",
|
22103 | 2
|
22104 | ],
|
22105 | [
|
22106 | "0x687ad44ad37f03c2",
|
22107 | 1
|
22108 | ],
|
22109 | [
|
22110 | "0xab3c0572291feb8b",
|
22111 | 1
|
22112 | ],
|
22113 | [
|
22114 | "0xbc9d89904f5b923f",
|
22115 | 1
|
22116 | ],
|
22117 | [
|
22118 | "0x37c8bb1350a9a2a8",
|
22119 | 4
|
22120 | ],
|
22121 | [
|
22122 | "0xf3ff14d5ab527059",
|
22123 | 3
|
22124 | ],
|
22125 | [
|
22126 | "0x17a6bc0d0062aeb3",
|
22127 | 1
|
22128 | ],
|
22129 | [
|
22130 | "0x18ef58a3b67ba770",
|
22131 | 1
|
22132 | ],
|
22133 | [
|
22134 | "0xfbc577b9d747efd6",
|
22135 | 1
|
22136 | ]
|
22137 | ]
|
22138 | ],
|
22139 | [
|
22140 | 20056997,
|
22141 | 1009000,
|
22142 | [
|
22143 | [
|
22144 | "0xdf6acb689907609b",
|
22145 | 5
|
22146 | ],
|
22147 | [
|
22148 | "0x37e397fc7c91f5e4",
|
22149 | 2
|
22150 | ],
|
22151 | [
|
22152 | "0x40fe3ad401f8959a",
|
22153 | 6
|
22154 | ],
|
22155 | [
|
22156 | "0xd2bc9897eed08f15",
|
22157 | 3
|
22158 | ],
|
22159 | [
|
22160 | "0xf78b278be53f454c",
|
22161 | 2
|
22162 | ],
|
22163 | [
|
22164 | "0xaf2c0297a23e6d3d",
|
22165 | 10
|
22166 | ],
|
22167 | [
|
22168 | "0x49eaaf1b548a0cb0",
|
22169 | 3
|
22170 | ],
|
22171 | [
|
22172 | "0x91d5df18b0d2cf58",
|
22173 | 2
|
22174 | ],
|
22175 | [
|
22176 | "0x2a5e924655399e60",
|
22177 | 1
|
22178 | ],
|
22179 | [
|
22180 | "0xed99c5acb25eedf5",
|
22181 | 3
|
22182 | ],
|
22183 | [
|
22184 | "0xcbca25e39f142387",
|
22185 | 2
|
22186 | ],
|
22187 | [
|
22188 | "0x687ad44ad37f03c2",
|
22189 | 1
|
22190 | ],
|
22191 | [
|
22192 | "0xab3c0572291feb8b",
|
22193 | 1
|
22194 | ],
|
22195 | [
|
22196 | "0xbc9d89904f5b923f",
|
22197 | 1
|
22198 | ],
|
22199 | [
|
22200 | "0x37c8bb1350a9a2a8",
|
22201 | 4
|
22202 | ],
|
22203 | [
|
22204 | "0xf3ff14d5ab527059",
|
22205 | 3
|
22206 | ],
|
22207 | [
|
22208 | "0x17a6bc0d0062aeb3",
|
22209 | 1
|
22210 | ],
|
22211 | [
|
22212 | "0x18ef58a3b67ba770",
|
22213 | 1
|
22214 | ],
|
22215 | [
|
22216 | "0xfbc577b9d747efd6",
|
22217 | 1
|
22218 | ]
|
22219 | ]
|
22220 | ],
|
22221 | [
|
22222 | 20368318,
|
22223 | 1010000,
|
22224 | [
|
22225 | [
|
22226 | "0xdf6acb689907609b",
|
22227 | 5
|
22228 | ],
|
22229 | [
|
22230 | "0x37e397fc7c91f5e4",
|
22231 | 2
|
22232 | ],
|
22233 | [
|
22234 | "0x40fe3ad401f8959a",
|
22235 | 6
|
22236 | ],
|
22237 | [
|
22238 | "0xd2bc9897eed08f15",
|
22239 | 3
|
22240 | ],
|
22241 | [
|
22242 | "0xf78b278be53f454c",
|
22243 | 2
|
22244 | ],
|
22245 | [
|
22246 | "0xaf2c0297a23e6d3d",
|
22247 | 10
|
22248 | ],
|
22249 | [
|
22250 | "0x49eaaf1b548a0cb0",
|
22251 | 3
|
22252 | ],
|
22253 | [
|
22254 | "0x91d5df18b0d2cf58",
|
22255 | 2
|
22256 | ],
|
22257 | [
|
22258 | "0x2a5e924655399e60",
|
22259 | 1
|
22260 | ],
|
22261 | [
|
22262 | "0xed99c5acb25eedf5",
|
22263 | 3
|
22264 | ],
|
22265 | [
|
22266 | "0xcbca25e39f142387",
|
22267 | 2
|
22268 | ],
|
22269 | [
|
22270 | "0x687ad44ad37f03c2",
|
22271 | 1
|
22272 | ],
|
22273 | [
|
22274 | "0xab3c0572291feb8b",
|
22275 | 1
|
22276 | ],
|
22277 | [
|
22278 | "0xbc9d89904f5b923f",
|
22279 | 1
|
22280 | ],
|
22281 | [
|
22282 | "0x37c8bb1350a9a2a8",
|
22283 | 4
|
22284 | ],
|
22285 | [
|
22286 | "0xf3ff14d5ab527059",
|
22287 | 3
|
22288 | ],
|
22289 | [
|
22290 | "0x6ff52ee858e6c5bd",
|
22291 | 1
|
22292 | ],
|
22293 | [
|
22294 | "0x17a6bc0d0062aeb3",
|
22295 | 1
|
22296 | ],
|
22297 | [
|
22298 | "0x18ef58a3b67ba770",
|
22299 | 1
|
22300 | ],
|
22301 | [
|
22302 | "0xfbc577b9d747efd6",
|
22303 | 1
|
22304 | ]
|
22305 | ]
|
22306 | ],
|
22307 | [
|
22308 | 20649086,
|
22309 | 1011000,
|
22310 | [
|
22311 | [
|
22312 | "0xdf6acb689907609b",
|
22313 | 5
|
22314 | ],
|
22315 | [
|
22316 | "0x37e397fc7c91f5e4",
|
22317 | 2
|
22318 | ],
|
22319 | [
|
22320 | "0x40fe3ad401f8959a",
|
22321 | 6
|
22322 | ],
|
22323 | [
|
22324 | "0xd2bc9897eed08f15",
|
22325 | 3
|
22326 | ],
|
22327 | [
|
22328 | "0xf78b278be53f454c",
|
22329 | 2
|
22330 | ],
|
22331 | [
|
22332 | "0xaf2c0297a23e6d3d",
|
22333 | 11
|
22334 | ],
|
22335 | [
|
22336 | "0x49eaaf1b548a0cb0",
|
22337 | 3
|
22338 | ],
|
22339 | [
|
22340 | "0x91d5df18b0d2cf58",
|
22341 | 2
|
22342 | ],
|
22343 | [
|
22344 | "0x2a5e924655399e60",
|
22345 | 1
|
22346 | ],
|
22347 | [
|
22348 | "0xed99c5acb25eedf5",
|
22349 | 3
|
22350 | ],
|
22351 | [
|
22352 | "0xcbca25e39f142387",
|
22353 | 2
|
22354 | ],
|
22355 | [
|
22356 | "0x687ad44ad37f03c2",
|
22357 | 1
|
22358 | ],
|
22359 | [
|
22360 | "0xab3c0572291feb8b",
|
22361 | 1
|
22362 | ],
|
22363 | [
|
22364 | "0xbc9d89904f5b923f",
|
22365 | 1
|
22366 | ],
|
22367 | [
|
22368 | "0x37c8bb1350a9a2a8",
|
22369 | 4
|
22370 | ],
|
22371 | [
|
22372 | "0xf3ff14d5ab527059",
|
22373 | 3
|
22374 | ],
|
22375 | [
|
22376 | "0x6ff52ee858e6c5bd",
|
22377 | 1
|
22378 | ],
|
22379 | [
|
22380 | "0x17a6bc0d0062aeb3",
|
22381 | 1
|
22382 | ],
|
22383 | [
|
22384 | "0x18ef58a3b67ba770",
|
22385 | 1
|
22386 | ],
|
22387 | [
|
22388 | "0xfbc577b9d747efd6",
|
22389 | 1
|
22390 | ]
|
22391 | ]
|
22392 | ],
|
22393 | [
|
22394 | 21217837,
|
22395 | 1011001,
|
22396 | [
|
22397 | [
|
22398 | "0xdf6acb689907609b",
|
22399 | 5
|
22400 | ],
|
22401 | [
|
22402 | "0x37e397fc7c91f5e4",
|
22403 | 2
|
22404 | ],
|
22405 | [
|
22406 | "0x40fe3ad401f8959a",
|
22407 | 6
|
22408 | ],
|
22409 | [
|
22410 | "0xd2bc9897eed08f15",
|
22411 | 3
|
22412 | ],
|
22413 | [
|
22414 | "0xf78b278be53f454c",
|
22415 | 2
|
22416 | ],
|
22417 | [
|
22418 | "0xaf2c0297a23e6d3d",
|
22419 | 11
|
22420 | ],
|
22421 | [
|
22422 | "0x49eaaf1b548a0cb0",
|
22423 | 3
|
22424 | ],
|
22425 | [
|
22426 | "0x91d5df18b0d2cf58",
|
22427 | 2
|
22428 | ],
|
22429 | [
|
22430 | "0x2a5e924655399e60",
|
22431 | 1
|
22432 | ],
|
22433 | [
|
22434 | "0xed99c5acb25eedf5",
|
22435 | 3
|
22436 | ],
|
22437 | [
|
22438 | "0xcbca25e39f142387",
|
22439 | 2
|
22440 | ],
|
22441 | [
|
22442 | "0x687ad44ad37f03c2",
|
22443 | 1
|
22444 | ],
|
22445 | [
|
22446 | "0xab3c0572291feb8b",
|
22447 | 1
|
22448 | ],
|
22449 | [
|
22450 | "0xbc9d89904f5b923f",
|
22451 | 1
|
22452 | ],
|
22453 | [
|
22454 | "0x37c8bb1350a9a2a8",
|
22455 | 4
|
22456 | ],
|
22457 | [
|
22458 | "0xf3ff14d5ab527059",
|
22459 | 3
|
22460 | ],
|
22461 | [
|
22462 | "0x6ff52ee858e6c5bd",
|
22463 | 1
|
22464 | ],
|
22465 | [
|
22466 | "0x17a6bc0d0062aeb3",
|
22467 | 1
|
22468 | ],
|
22469 | [
|
22470 | "0x18ef58a3b67ba770",
|
22471 | 1
|
22472 | ],
|
22473 | [
|
22474 | "0xfbc577b9d747efd6",
|
22475 | 1
|
22476 | ]
|
22477 | ]
|
22478 | ]
|
22479 | ];
|
22480 |
|
22481 | const allKnown = Object.freeze({
|
22482 | __proto__: null,
|
22483 | kusama: upgrades$3,
|
22484 | polkadot: upgrades$2,
|
22485 | westend: upgrades$1
|
22486 | });
|
22487 |
|
22488 | const NET_EXTRA = {
|
22489 | westend: {
|
22490 | genesisHash: ['0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e']
|
22491 | }
|
22492 | };
|
22493 | function mapRaw([network, versions]) {
|
22494 | const chain = utilCrypto.selectableNetworks.find((n) => n.network === network) || NET_EXTRA[network];
|
22495 | if (!chain) {
|
22496 | throw new Error(`Unable to find info for chain ${network}`);
|
22497 | }
|
22498 | return {
|
22499 | genesisHash: util.hexToU8a(chain.genesisHash[0]),
|
22500 | network,
|
22501 | versions: versions.map(([blockNumber, specVersion, apis]) => ({
|
22502 | apis,
|
22503 | blockNumber: new util.BN(blockNumber),
|
22504 | specVersion: new util.BN(specVersion)
|
22505 | }))
|
22506 | };
|
22507 | }
|
22508 | const upgrades = Object.entries(allKnown).map(mapRaw);
|
22509 |
|
22510 | function withNames(chainName, specName, fn) {
|
22511 | return fn(chainName.toString(), specName.toString());
|
22512 | }
|
22513 | function filterVersions(versions = [], specVersion) {
|
22514 | return versions
|
22515 | .filter(({ minmax: [min, max] }) => (min === undefined || min === null || specVersion >= min) &&
|
22516 | (max === undefined || max === null || specVersion <= max))
|
22517 | .reduce((result, { types }) => ({ ...result, ...types }), {});
|
22518 | }
|
22519 | function getSpecExtensions({ knownTypes }, chainName, specName) {
|
22520 | return withNames(chainName, specName, (c, s) => ({
|
22521 | ...(knownTypes.typesBundle?.spec?.[s]?.signedExtensions ?? {}),
|
22522 | ...(knownTypes.typesBundle?.chain?.[c]?.signedExtensions ?? {})
|
22523 | }));
|
22524 | }
|
22525 | function getSpecTypes({ knownTypes }, chainName, specName, specVersion) {
|
22526 | const _specVersion = util.bnToBn(specVersion).toNumber();
|
22527 | return withNames(chainName, specName, (c, s) => ({
|
22528 | ...filterVersions(typesSpec[s], _specVersion),
|
22529 | ...filterVersions(typesChain[c], _specVersion),
|
22530 | ...filterVersions(knownTypes.typesBundle?.spec?.[s]?.types, _specVersion),
|
22531 | ...filterVersions(knownTypes.typesBundle?.chain?.[c]?.types, _specVersion),
|
22532 | ...(knownTypes.typesSpec?.[s] ?? {}),
|
22533 | ...(knownTypes.typesChain?.[c] ?? {}),
|
22534 | ...(knownTypes.types ?? {})
|
22535 | }));
|
22536 | }
|
22537 | function getSpecHasher({ knownTypes }, chainName, specName) {
|
22538 | return withNames(chainName, specName, (c, s) => knownTypes.hasher ||
|
22539 | knownTypes.typesBundle?.chain?.[c]?.hasher ||
|
22540 | knownTypes.typesBundle?.spec?.[s]?.hasher ||
|
22541 | null);
|
22542 | }
|
22543 | function getSpecRpc({ knownTypes }, chainName, specName) {
|
22544 | return withNames(chainName, specName, (c, s) => ({
|
22545 | ...(knownTypes.typesBundle?.spec?.[s]?.rpc ?? {}),
|
22546 | ...(knownTypes.typesBundle?.chain?.[c]?.rpc ?? {})
|
22547 | }));
|
22548 | }
|
22549 | function getSpecRuntime({ knownTypes }, chainName, specName) {
|
22550 | return withNames(chainName, specName, (c, s) => ({
|
22551 | ...(knownTypes.typesBundle?.spec?.[s]?.runtime ?? {}),
|
22552 | ...(knownTypes.typesBundle?.chain?.[c]?.runtime ?? {})
|
22553 | }));
|
22554 | }
|
22555 | function getSpecAlias({ knownTypes }, chainName, specName) {
|
22556 | return withNames(chainName, specName, (c, s) => ({
|
22557 | ...(knownTypes.typesBundle?.spec?.[s]?.alias ?? {}),
|
22558 | ...(knownTypes.typesBundle?.chain?.[c]?.alias ?? {}),
|
22559 | ...(knownTypes.typesAlias ?? {})
|
22560 | }));
|
22561 | }
|
22562 | function getUpgradeVersion(genesisHash, blockNumber) {
|
22563 | const known = upgrades.find((u) => genesisHash.eq(u.genesisHash));
|
22564 | return known
|
22565 | ? [
|
22566 | known.versions.reduce((last, version) => {
|
22567 | return blockNumber.gt(version.blockNumber)
|
22568 | ? version
|
22569 | : last;
|
22570 | }, undefined),
|
22571 | known.versions.find((version) => blockNumber.lte(version.blockNumber))
|
22572 | ]
|
22573 | : [undefined, undefined];
|
22574 | }
|
22575 |
|
22576 | const l$2 = util.logger('api/augment');
|
22577 | function logLength(type, values, and = []) {
|
22578 | return values.length
|
22579 | ? ` ${values.length} ${type}${and.length ? ' and' : ''}`
|
22580 | : '';
|
22581 | }
|
22582 | function logValues(type, values) {
|
22583 | return values.length
|
22584 | ? `\n\t${type.padStart(7)}: ${values.sort().join(', ')}`
|
22585 | : '';
|
22586 | }
|
22587 | function warn(prefix, type, [added, removed]) {
|
22588 | if (added.length || removed.length) {
|
22589 | l$2.warn(`api.${prefix}: Found${logLength('added', added, removed)}${logLength('removed', removed)} ${type}:${logValues('added', added)}${logValues('removed', removed)}`);
|
22590 | }
|
22591 | }
|
22592 | function findSectionExcludes(a, b) {
|
22593 | return a.filter((s) => !b.includes(s));
|
22594 | }
|
22595 | function findSectionIncludes(a, b) {
|
22596 | return a.filter((s) => b.includes(s));
|
22597 | }
|
22598 | function extractSections(src, dst) {
|
22599 | const srcSections = Object.keys(src);
|
22600 | const dstSections = Object.keys(dst);
|
22601 | return [
|
22602 | findSectionExcludes(srcSections, dstSections),
|
22603 | findSectionExcludes(dstSections, srcSections)
|
22604 | ];
|
22605 | }
|
22606 | function findMethodExcludes(src, dst) {
|
22607 | const srcSections = Object.keys(src);
|
22608 | const dstSections = findSectionIncludes(Object.keys(dst), srcSections);
|
22609 | const excludes = [];
|
22610 | for (let s = 0, scount = dstSections.length; s < scount; s++) {
|
22611 | const section = dstSections[s];
|
22612 | const srcMethods = Object.keys(src[section]);
|
22613 | const dstMethods = Object.keys(dst[section]);
|
22614 | for (let d = 0, mcount = dstMethods.length; d < mcount; d++) {
|
22615 | const method = dstMethods[d];
|
22616 | if (!srcMethods.includes(method)) {
|
22617 | excludes.push(`${section}.${method}`);
|
22618 | }
|
22619 | }
|
22620 | }
|
22621 | return excludes;
|
22622 | }
|
22623 | function extractMethods(src, dst) {
|
22624 | return [
|
22625 | findMethodExcludes(dst, src),
|
22626 | findMethodExcludes(src, dst)
|
22627 | ];
|
22628 | }
|
22629 | function augmentObject(prefix, src, dst, fromEmpty = false) {
|
22630 | fromEmpty && util.objectClear(dst);
|
22631 | if (prefix && Object.keys(dst).length) {
|
22632 | warn(prefix, 'modules', extractSections(src, dst));
|
22633 | warn(prefix, 'calls', extractMethods(src, dst));
|
22634 | }
|
22635 | const sections = Object.keys(src);
|
22636 | for (let i = 0, count = sections.length; i < count; i++) {
|
22637 | const section = sections[i];
|
22638 | const methods = src[section];
|
22639 | if (!dst[section]) {
|
22640 | dst[section] = {};
|
22641 | }
|
22642 | util.lazyMethods(dst[section], Object.keys(methods), (m) => methods[m]);
|
22643 | }
|
22644 | return dst;
|
22645 | }
|
22646 |
|
22647 | function sig({ lookup }, { method, section }, args) {
|
22648 | return `${section}.${method}(${args.map((a) => lookup.getTypeDef(a).type).join(', ')})`;
|
22649 | }
|
22650 | function extractStorageArgs(registry, creator, _args) {
|
22651 | const args = _args.filter((a) => !util.isUndefined(a));
|
22652 | if (creator.meta.type.isPlain) {
|
22653 | if (args.length !== 0) {
|
22654 | throw new Error(`${sig(registry, creator, [])} does not take any arguments, ${args.length} found`);
|
22655 | }
|
22656 | }
|
22657 | else {
|
22658 | const { hashers, key } = creator.meta.type.asMap;
|
22659 | const keys = hashers.length === 1
|
22660 | ? [key]
|
22661 | : registry.lookup.getSiType(key).def.asTuple.map((t) => t);
|
22662 | if (args.length !== keys.length) {
|
22663 | throw new Error(`${sig(registry, creator, keys)} is a map, requiring ${keys.length} arguments, ${args.length} found`);
|
22664 | }
|
22665 | }
|
22666 | return [creator, args];
|
22667 | }
|
22668 |
|
22669 | class Events {
|
22670 | __internal__eventemitter = new EventEmitter();
|
22671 | emit(type, ...args) {
|
22672 | return this.__internal__eventemitter.emit(type, ...args);
|
22673 | }
|
22674 | on(type, handler) {
|
22675 | this.__internal__eventemitter.on(type, handler);
|
22676 | return this;
|
22677 | }
|
22678 | off(type, handler) {
|
22679 | this.__internal__eventemitter.removeListener(type, handler);
|
22680 | return this;
|
22681 | }
|
22682 | once(type, handler) {
|
22683 | this.__internal__eventemitter.once(type, handler);
|
22684 | return this;
|
22685 | }
|
22686 | }
|
22687 |
|
22688 | const PAGE_SIZE_K = 1000;
|
22689 | const PAGE_SIZE_V = 250;
|
22690 | const PAGE_SIZE_Q = 50;
|
22691 | const l$1 = util.logger('api/init');
|
22692 | let instanceCounter = 0;
|
22693 | function getAtQueryFn(api, { method, section }) {
|
22694 | return util.assertReturn(api.rx.query[section] && api.rx.query[section][method], () => `query.${section}.${method} is not available in this version of the metadata`);
|
22695 | }
|
22696 | class Decorate extends Events {
|
22697 | __internal__instanceId;
|
22698 | __internal__runtimeLog = {};
|
22699 | __internal__registry;
|
22700 | __internal__storageGetQ = [];
|
22701 | __internal__storageSubQ = [];
|
22702 | __phantom = new util.BN(0);
|
22703 | _type;
|
22704 | _call = {};
|
22705 | _consts = {};
|
22706 | _derive;
|
22707 | _errors = {};
|
22708 | _events = {};
|
22709 | _extrinsics;
|
22710 | _extrinsicType = types.GenericExtrinsic.LATEST_EXTRINSIC_VERSION;
|
22711 | _genesisHash;
|
22712 | _isConnected;
|
22713 | _isReady = false;
|
22714 | _query = {};
|
22715 | _queryMulti;
|
22716 | _rpc;
|
22717 | _rpcCore;
|
22718 | _runtimeMap = {};
|
22719 | _runtimeChain;
|
22720 | _runtimeMetadata;
|
22721 | _runtimeVersion;
|
22722 | _rx = { call: {}, consts: {}, query: {}, tx: {} };
|
22723 | _options;
|
22724 | _decorateMethod;
|
22725 | constructor(options, type, decorateMethod) {
|
22726 | super();
|
22727 | this.__internal__instanceId = `${++instanceCounter}`;
|
22728 | this.__internal__registry = options.source?.registry || options.registry || new types.TypeRegistry();
|
22729 | this._rx.callAt = (blockHash, knownVersion) => from(this.at(blockHash, knownVersion)).pipe(map((a) => a.rx.call));
|
22730 | this._rx.queryAt = (blockHash, knownVersion) => from(this.at(blockHash, knownVersion)).pipe(map((a) => a.rx.query));
|
22731 | this._rx.registry = this.__internal__registry;
|
22732 | this._decorateMethod = decorateMethod;
|
22733 | this._options = options;
|
22734 | this._type = type;
|
22735 | const provider = options.source
|
22736 | ? options.source._rpcCore.provider.isClonable
|
22737 | ? options.source._rpcCore.provider.clone()
|
22738 | : options.source._rpcCore.provider
|
22739 | : (options.provider || new WsProvider());
|
22740 | this._rpcCore = new RpcCore(this.__internal__instanceId, this.__internal__registry, {
|
22741 | isPedantic: this._options.isPedantic,
|
22742 | provider,
|
22743 | userRpc: this._options.rpc
|
22744 | });
|
22745 | this._isConnected = new BehaviorSubject(this._rpcCore.provider.isConnected);
|
22746 | this._rx.hasSubscriptions = this._rpcCore.provider.hasSubscriptions;
|
22747 | }
|
22748 | get registry() {
|
22749 | return this.__internal__registry;
|
22750 | }
|
22751 | createType(type, ...params) {
|
22752 | return this.__internal__registry.createType(type, ...params);
|
22753 | }
|
22754 | registerTypes(types) {
|
22755 | types && this.__internal__registry.register(types);
|
22756 | }
|
22757 | get hasSubscriptions() {
|
22758 | return this._rpcCore.provider.hasSubscriptions;
|
22759 | }
|
22760 | get supportMulti() {
|
22761 | return this._rpcCore.provider.hasSubscriptions || !!this._rpcCore.state.queryStorageAt;
|
22762 | }
|
22763 | _emptyDecorated(registry, blockHash) {
|
22764 | return {
|
22765 | call: {},
|
22766 | consts: {},
|
22767 | errors: {},
|
22768 | events: {},
|
22769 | query: {},
|
22770 | registry,
|
22771 | rx: {
|
22772 | call: {},
|
22773 | query: {}
|
22774 | },
|
22775 | tx: createSubmittable(this._type, this._rx, this._decorateMethod, registry, blockHash)
|
22776 | };
|
22777 | }
|
22778 | _createDecorated(registry, fromEmpty, decoratedApi, blockHash) {
|
22779 | if (!decoratedApi) {
|
22780 | decoratedApi = this._emptyDecorated(registry.registry, blockHash);
|
22781 | }
|
22782 | if (fromEmpty || !registry.decoratedMeta) {
|
22783 | registry.decoratedMeta = types.expandMetadata(registry.registry, registry.metadata);
|
22784 | }
|
22785 | const runtime = this._decorateCalls(registry, this._decorateMethod, blockHash);
|
22786 | const runtimeRx = this._decorateCalls(registry, this._rxDecorateMethod, blockHash);
|
22787 | const storage = this._decorateStorage(registry.decoratedMeta, this._decorateMethod, blockHash);
|
22788 | const storageRx = this._decorateStorage(registry.decoratedMeta, this._rxDecorateMethod, blockHash);
|
22789 | augmentObject('consts', registry.decoratedMeta.consts, decoratedApi.consts, fromEmpty);
|
22790 | augmentObject('errors', registry.decoratedMeta.errors, decoratedApi.errors, fromEmpty);
|
22791 | augmentObject('events', registry.decoratedMeta.events, decoratedApi.events, fromEmpty);
|
22792 | augmentObject('query', storage, decoratedApi.query, fromEmpty);
|
22793 | augmentObject('query', storageRx, decoratedApi.rx.query, fromEmpty);
|
22794 | augmentObject('call', runtime, decoratedApi.call, fromEmpty);
|
22795 | augmentObject('call', runtimeRx, decoratedApi.rx.call, fromEmpty);
|
22796 | decoratedApi.findCall = (callIndex) => findCall(registry.registry, callIndex);
|
22797 | decoratedApi.findError = (errorIndex) => findError(registry.registry, errorIndex);
|
22798 | decoratedApi.queryMulti = blockHash
|
22799 | ? this._decorateMultiAt(decoratedApi, this._decorateMethod, blockHash)
|
22800 | : this._decorateMulti(this._decorateMethod);
|
22801 | decoratedApi.runtimeVersion = registry.runtimeVersion;
|
22802 | return {
|
22803 | createdAt: blockHash,
|
22804 | decoratedApi,
|
22805 | decoratedMeta: registry.decoratedMeta
|
22806 | };
|
22807 | }
|
22808 | _injectMetadata(registry, fromEmpty = false) {
|
22809 | if (fromEmpty || !registry.decoratedApi) {
|
22810 | registry.decoratedApi = this._emptyDecorated(registry.registry);
|
22811 | }
|
22812 | const { decoratedApi, decoratedMeta } = this._createDecorated(registry, fromEmpty, registry.decoratedApi);
|
22813 | this._call = decoratedApi.call;
|
22814 | this._consts = decoratedApi.consts;
|
22815 | this._errors = decoratedApi.errors;
|
22816 | this._events = decoratedApi.events;
|
22817 | this._query = decoratedApi.query;
|
22818 | this._rx.call = decoratedApi.rx.call;
|
22819 | this._rx.query = decoratedApi.rx.query;
|
22820 | const tx = this._decorateExtrinsics(decoratedMeta, this._decorateMethod);
|
22821 | const rxtx = this._decorateExtrinsics(decoratedMeta, this._rxDecorateMethod);
|
22822 | if (fromEmpty || !this._extrinsics) {
|
22823 | this._extrinsics = tx;
|
22824 | this._rx.tx = rxtx;
|
22825 | }
|
22826 | else {
|
22827 | augmentObject('tx', tx, this._extrinsics, false);
|
22828 | augmentObject(null, rxtx, this._rx.tx, false);
|
22829 | }
|
22830 | augmentObject(null, decoratedMeta.consts, this._rx.consts, fromEmpty);
|
22831 | this.emit('decorated');
|
22832 | }
|
22833 | injectMetadata(metadata, fromEmpty, registry) {
|
22834 | this._injectMetadata({ counter: 0, metadata, registry: registry || this.__internal__registry, runtimeVersion: this.__internal__registry.createType('RuntimeVersionPartial') }, fromEmpty);
|
22835 | }
|
22836 | _decorateFunctionMeta(input, output) {
|
22837 | output.meta = input.meta;
|
22838 | output.method = input.method;
|
22839 | output.section = input.section;
|
22840 | output.toJSON = input.toJSON;
|
22841 | if (input.callIndex) {
|
22842 | output.callIndex = input.callIndex;
|
22843 | }
|
22844 | return output;
|
22845 | }
|
22846 | _filterRpc(methods, additional) {
|
22847 | if (Object.keys(additional).length !== 0) {
|
22848 | this._rpcCore.addUserInterfaces(additional);
|
22849 | this._decorateRpc(this._rpcCore, this._decorateMethod, this._rpc);
|
22850 | this._decorateRpc(this._rpcCore, this._rxDecorateMethod, this._rx.rpc);
|
22851 | }
|
22852 | const sectionMap = {};
|
22853 | for (let i = 0, count = methods.length; i < count; i++) {
|
22854 | const [section] = methods[i].split('_');
|
22855 | sectionMap[section] = true;
|
22856 | }
|
22857 | const sections = Object.keys(sectionMap);
|
22858 | for (let i = 0, count = sections.length; i < count; i++) {
|
22859 | const nameA = util.stringUpperFirst(sections[i]);
|
22860 | const nameB = `${nameA}Api`;
|
22861 | this._runtimeMap[utilCrypto.blake2AsHex(nameA, 64)] = nameA;
|
22862 | this._runtimeMap[utilCrypto.blake2AsHex(nameB, 64)] = nameB;
|
22863 | }
|
22864 | this._filterRpcMethods(methods);
|
22865 | }
|
22866 | _filterRpcMethods(exposed) {
|
22867 | const hasResults = exposed.length !== 0;
|
22868 | const allKnown = [...this._rpcCore.mapping.entries()];
|
22869 | const allKeys = [];
|
22870 | const count = allKnown.length;
|
22871 | for (let i = 0; i < count; i++) {
|
22872 | const [, { alias, endpoint, method, pubsub, section }] = allKnown[i];
|
22873 | allKeys.push(`${section}_${method}`);
|
22874 | if (pubsub) {
|
22875 | allKeys.push(`${section}_${pubsub[1]}`);
|
22876 | allKeys.push(`${section}_${pubsub[2]}`);
|
22877 | }
|
22878 | if (alias) {
|
22879 | allKeys.push(...alias);
|
22880 | }
|
22881 | if (endpoint) {
|
22882 | allKeys.push(endpoint);
|
22883 | }
|
22884 | }
|
22885 | const unknown = exposed.filter((k) => !allKeys.includes(k) &&
|
22886 | !k.includes('_unstable_'));
|
22887 | if (unknown.length && !this._options.noInitWarn) {
|
22888 | l$1.warn(`RPC methods not decorated: ${unknown.join(', ')}`);
|
22889 | }
|
22890 | for (let i = 0; i < count; i++) {
|
22891 | const [k, { method, section }] = allKnown[i];
|
22892 | if (hasResults && !exposed.includes(k) && k !== 'rpc_methods') {
|
22893 | if (this._rpc[section]) {
|
22894 | delete this._rpc[section][method];
|
22895 | delete this._rx.rpc[section][method];
|
22896 | }
|
22897 | }
|
22898 | }
|
22899 | }
|
22900 | _rpcSubmitter(decorateMethod) {
|
22901 | const method = (method, ...params) => {
|
22902 | return from(this._rpcCore.provider.send(method, params));
|
22903 | };
|
22904 | return decorateMethod(method);
|
22905 | }
|
22906 | _decorateRpc(rpc, decorateMethod, input = this._rpcSubmitter(decorateMethod)) {
|
22907 | const out = input;
|
22908 | const decorateFn = (section, method) => {
|
22909 | const source = rpc[section][method];
|
22910 | const fn = decorateMethod(source, { methodName: method });
|
22911 | fn.meta = source.meta;
|
22912 | fn.raw = decorateMethod(source.raw, { methodName: method });
|
22913 | return fn;
|
22914 | };
|
22915 | for (let s = 0, scount = rpc.sections.length; s < scount; s++) {
|
22916 | const section = rpc.sections[s];
|
22917 | if (!Object.prototype.hasOwnProperty.call(out, section)) {
|
22918 | const methods = Object.keys(rpc[section]);
|
22919 | const decorateInternal = (method) => decorateFn(section, method);
|
22920 | for (let m = 0, mcount = methods.length; m < mcount; m++) {
|
22921 | const method = methods[m];
|
22922 | if (this.hasSubscriptions || !(method.startsWith('subscribe') || method.startsWith('unsubscribe'))) {
|
22923 | if (!Object.prototype.hasOwnProperty.call(out, section)) {
|
22924 | out[section] = {};
|
22925 | }
|
22926 | util.lazyMethod(out[section], method, decorateInternal);
|
22927 | }
|
22928 | }
|
22929 | }
|
22930 | }
|
22931 | return out;
|
22932 | }
|
22933 | _addRuntimeDef(result, additional) {
|
22934 | if (!additional) {
|
22935 | return;
|
22936 | }
|
22937 | const entries = Object.entries(additional);
|
22938 | for (let j = 0, ecount = entries.length; j < ecount; j++) {
|
22939 | const [key, defs] = entries[j];
|
22940 | if (result[key]) {
|
22941 | for (let k = 0, dcount = defs.length; k < dcount; k++) {
|
22942 | const def = defs[k];
|
22943 | const prev = result[key].find(({ version }) => def.version === version);
|
22944 | if (prev) {
|
22945 | util.objectSpread(prev.methods, def.methods);
|
22946 | }
|
22947 | else {
|
22948 | result[key].push(def);
|
22949 | }
|
22950 | }
|
22951 | }
|
22952 | else {
|
22953 | result[key] = defs;
|
22954 | }
|
22955 | }
|
22956 | }
|
22957 | _getRuntimeDefs(registry, specName, chain = '') {
|
22958 | const result = {};
|
22959 | const defValues = Object.values(types.typeDefinitions);
|
22960 | for (let i = 0, count = defValues.length; i < count; i++) {
|
22961 | this._addRuntimeDef(result, defValues[i].runtime);
|
22962 | }
|
22963 | this._addRuntimeDef(result, getSpecRuntime(registry, chain, specName));
|
22964 | this._addRuntimeDef(result, this._options.runtime);
|
22965 | return Object.entries(result);
|
22966 | }
|
22967 | _decorateCalls({ registry, runtimeVersion: { apis, specName, specVersion } }, decorateMethod, blockHash) {
|
22968 | const result = {};
|
22969 | const named = {};
|
22970 | const hashes = {};
|
22971 | const sections = this._getRuntimeDefs(registry, specName, this._runtimeChain);
|
22972 | const older = [];
|
22973 | const implName = `${specName.toString()}/${specVersion.toString()}`;
|
22974 | const hasLogged = this.__internal__runtimeLog[implName] || false;
|
22975 | this.__internal__runtimeLog[implName] = true;
|
22976 | for (let i = 0, scount = sections.length; i < scount; i++) {
|
22977 | const [_section, secs] = sections[i];
|
22978 | const sectionHash = utilCrypto.blake2AsHex(_section, 64);
|
22979 | const rtApi = apis.find(([a]) => a.eq(sectionHash));
|
22980 | hashes[sectionHash] = true;
|
22981 | if (rtApi) {
|
22982 | const all = secs.map(({ version }) => version).sort();
|
22983 | const sec = secs.find(({ version }) => rtApi[1].eq(version));
|
22984 | if (sec) {
|
22985 | const section = util.stringCamelCase(_section);
|
22986 | const methods = Object.entries(sec.methods);
|
22987 | if (methods.length) {
|
22988 | if (!named[section]) {
|
22989 | named[section] = {};
|
22990 | }
|
22991 | for (let m = 0, mcount = methods.length; m < mcount; m++) {
|
22992 | const [_method, def] = methods[m];
|
22993 | const method = util.stringCamelCase(_method);
|
22994 | named[section][method] = util.objectSpread({ method, name: `${_section}_${_method}`, section, sectionHash }, def);
|
22995 | }
|
22996 | }
|
22997 | }
|
22998 | else {
|
22999 | older.push(`${_section}/${rtApi[1].toString()} (${all.join('/')} known)`);
|
23000 | }
|
23001 | }
|
23002 | }
|
23003 | const notFound = apis
|
23004 | .map(([a, v]) => [a.toHex(), v.toString()])
|
23005 | .filter(([a]) => !hashes[a])
|
23006 | .map(([a, v]) => `${this._runtimeMap[a] || a}/${v}`);
|
23007 | if (!this._options.noInitWarn && !hasLogged) {
|
23008 | if (older.length) {
|
23009 | l$1.warn(`${implName}: Not decorating runtime apis without matching versions: ${older.join(', ')}`);
|
23010 | }
|
23011 | if (notFound.length) {
|
23012 | l$1.warn(`${implName}: Not decorating unknown runtime apis: ${notFound.join(', ')}`);
|
23013 | }
|
23014 | }
|
23015 | const stateCall = blockHash
|
23016 | ? (name, bytes) => this._rpcCore.state.call(name, bytes, blockHash)
|
23017 | : (name, bytes) => this._rpcCore.state.call(name, bytes);
|
23018 | const lazySection = (section) => util.lazyMethods({}, Object.keys(named[section]), (method) => this._decorateCall(registry, named[section][method], stateCall, decorateMethod));
|
23019 | const modules = Object.keys(named);
|
23020 | for (let i = 0, count = modules.length; i < count; i++) {
|
23021 | util.lazyMethod(result, modules[i], lazySection);
|
23022 | }
|
23023 | return result;
|
23024 | }
|
23025 | _decorateCall(registry, def, stateCall, decorateMethod) {
|
23026 | const decorated = decorateMethod((...args) => {
|
23027 | if (args.length !== def.params.length) {
|
23028 | throw new Error(`${def.name}:: Expected ${def.params.length} arguments, found ${args.length}`);
|
23029 | }
|
23030 | const bytes = registry.createType('Raw', util.u8aConcatStrict(args.map((a, i) => registry.createTypeUnsafe(def.params[i].type, [a]).toU8a())));
|
23031 | return stateCall(def.name, bytes).pipe(map((r) => registry.createTypeUnsafe(def.type, [r])));
|
23032 | });
|
23033 | decorated.meta = def;
|
23034 | return decorated;
|
23035 | }
|
23036 | _decorateMulti(decorateMethod) {
|
23037 | return decorateMethod((keys) => keys.length
|
23038 | ? (this.hasSubscriptions
|
23039 | ? this._rpcCore.state.subscribeStorage
|
23040 | : this._rpcCore.state.queryStorageAt)(keys.map((args) => Array.isArray(args)
|
23041 | ? args[0].creator.meta.type.isPlain
|
23042 | ? [args[0].creator]
|
23043 | : args[0].creator.meta.type.asMap.hashers.length === 1
|
23044 | ? [args[0].creator, args.slice(1)]
|
23045 | : [args[0].creator, ...args.slice(1)]
|
23046 | : [args.creator]))
|
23047 | : of([]));
|
23048 | }
|
23049 | _decorateMultiAt(atApi, decorateMethod, blockHash) {
|
23050 | return decorateMethod((calls) => calls.length
|
23051 | ? this._rpcCore.state.queryStorageAt(calls.map((args) => {
|
23052 | if (Array.isArray(args)) {
|
23053 | const { creator } = getAtQueryFn(atApi, args[0].creator);
|
23054 | return creator.meta.type.isPlain
|
23055 | ? [creator]
|
23056 | : creator.meta.type.asMap.hashers.length === 1
|
23057 | ? [creator, args.slice(1)]
|
23058 | : [creator, ...args.slice(1)];
|
23059 | }
|
23060 | return [getAtQueryFn(atApi, args.creator).creator];
|
23061 | }), blockHash)
|
23062 | : of([]));
|
23063 | }
|
23064 | _decorateExtrinsics({ tx }, decorateMethod) {
|
23065 | const result = createSubmittable(this._type, this._rx, decorateMethod);
|
23066 | const lazySection = (section) => util.lazyMethods({}, Object.keys(tx[section]), (method) => method.startsWith('$')
|
23067 | ? tx[section][method]
|
23068 | : this._decorateExtrinsicEntry(tx[section][method], result));
|
23069 | const sections = Object.keys(tx);
|
23070 | for (let i = 0, count = sections.length; i < count; i++) {
|
23071 | util.lazyMethod(result, sections[i], lazySection);
|
23072 | }
|
23073 | return result;
|
23074 | }
|
23075 | _decorateExtrinsicEntry(method, creator) {
|
23076 | const decorated = (...params) => creator(method(...params));
|
23077 | decorated.is = (other) => method.is(other);
|
23078 | return this._decorateFunctionMeta(method, decorated);
|
23079 | }
|
23080 | _decorateStorage({ query, registry }, decorateMethod, blockHash) {
|
23081 | const result = {};
|
23082 | const lazySection = (section) => util.lazyMethods({}, Object.keys(query[section]), (method) => blockHash
|
23083 | ? this._decorateStorageEntryAt(registry, query[section][method], decorateMethod, blockHash)
|
23084 | : this._decorateStorageEntry(query[section][method], decorateMethod));
|
23085 | const sections = Object.keys(query);
|
23086 | for (let i = 0, count = sections.length; i < count; i++) {
|
23087 | util.lazyMethod(result, sections[i], lazySection);
|
23088 | }
|
23089 | return result;
|
23090 | }
|
23091 | _decorateStorageEntry(creator, decorateMethod) {
|
23092 | const getArgs = (args, registry) => extractStorageArgs(registry || this.__internal__registry, creator, args);
|
23093 | const getQueryAt = (blockHash) => from(this.at(blockHash)).pipe(map((api) => getAtQueryFn(api, creator)));
|
23094 | const decorated = this._decorateStorageCall(creator, decorateMethod);
|
23095 | decorated.creator = creator;
|
23096 | decorated.at = decorateMethod((blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => q(...args))));
|
23097 | decorated.hash = decorateMethod((...args) => this._rpcCore.state.getStorageHash(getArgs(args)));
|
23098 | decorated.is = (key) => key.section === creator.section &&
|
23099 | key.method === creator.method;
|
23100 | decorated.key = (...args) => util.u8aToHex(util.compactStripLength(creator(...args))[1]);
|
23101 | decorated.keyPrefix = (...args) => util.u8aToHex(creator.keyPrefix(...args));
|
23102 | decorated.size = decorateMethod((...args) => this._rpcCore.state.getStorageSize(getArgs(args)));
|
23103 | decorated.sizeAt = decorateMethod((blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => this._rpcCore.state.getStorageSize(getArgs(args, q.creator.meta.registry), blockHash))));
|
23104 | if (creator.iterKey && creator.meta.type.isMap) {
|
23105 | decorated.entries = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapEntries(creator, null, args)));
|
23106 | decorated.entriesAt = decorateMethod(memo(this.__internal__instanceId, (blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => this._retrieveMapEntries(q.creator, blockHash, args)))));
|
23107 | decorated.entriesPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapEntriesPaged(creator, undefined, opts)));
|
23108 | decorated.keys = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapKeys(creator, null, args)));
|
23109 | decorated.keysAt = decorateMethod(memo(this.__internal__instanceId, (blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => this._retrieveMapKeys(q.creator, blockHash, args)))));
|
23110 | decorated.keysPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapKeysPaged(creator, undefined, opts)));
|
23111 | }
|
23112 | if (this.supportMulti && creator.meta.type.isMap) {
|
23113 | decorated.multi = decorateMethod((args) => creator.meta.type.asMap.hashers.length === 1
|
23114 | ? this._retrieveMulti(args.map((a) => [creator, [a]]))
|
23115 | : this._retrieveMulti(args.map((a) => [creator, a])));
|
23116 | }
|
23117 | return this._decorateFunctionMeta(creator, decorated);
|
23118 | }
|
23119 | _decorateStorageEntryAt(registry, creator, decorateMethod, blockHash) {
|
23120 | const getArgs = (args) => extractStorageArgs(registry, creator, args);
|
23121 | const decorated = decorateMethod((...args) => this._rpcCore.state.getStorage(getArgs(args), blockHash));
|
23122 | decorated.creator = creator;
|
23123 | decorated.hash = decorateMethod((...args) => this._rpcCore.state.getStorageHash(getArgs(args), blockHash));
|
23124 | decorated.is = (key) => key.section === creator.section &&
|
23125 | key.method === creator.method;
|
23126 | decorated.key = (...args) => util.u8aToHex(util.compactStripLength(creator(...args))[1]);
|
23127 | decorated.keyPrefix = (...keys) => util.u8aToHex(creator.keyPrefix(...keys));
|
23128 | decorated.size = decorateMethod((...args) => this._rpcCore.state.getStorageSize(getArgs(args), blockHash));
|
23129 | if (creator.iterKey && creator.meta.type.isMap) {
|
23130 | decorated.entries = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapEntries(creator, blockHash, args)));
|
23131 | decorated.entriesPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapEntriesPaged(creator, blockHash, opts)));
|
23132 | decorated.keys = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapKeys(creator, blockHash, args)));
|
23133 | decorated.keysPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapKeysPaged(creator, blockHash, opts)));
|
23134 | }
|
23135 | if (this.supportMulti && creator.meta.type.isMap) {
|
23136 | decorated.multi = decorateMethod((args) => creator.meta.type.asMap.hashers.length === 1
|
23137 | ? this._retrieveMulti(args.map((a) => [creator, [a]]), blockHash)
|
23138 | : this._retrieveMulti(args.map((a) => [creator, a]), blockHash));
|
23139 | }
|
23140 | return this._decorateFunctionMeta(creator, decorated);
|
23141 | }
|
23142 | _queueStorage(call, queue) {
|
23143 | const query = queue === this.__internal__storageSubQ
|
23144 | ? this._rpcCore.state.subscribeStorage
|
23145 | : this._rpcCore.state.queryStorageAt;
|
23146 | let queueIdx = queue.length - 1;
|
23147 | let valueIdx = 0;
|
23148 | let valueObs;
|
23149 | if (queueIdx === -1 || !queue[queueIdx] || queue[queueIdx][1].length === PAGE_SIZE_Q) {
|
23150 | queueIdx++;
|
23151 | valueObs = from(
|
23152 | new Promise((resolve) => {
|
23153 | util.nextTick(() => {
|
23154 | const calls = queue[queueIdx][1];
|
23155 | delete queue[queueIdx];
|
23156 | resolve(calls);
|
23157 | });
|
23158 | })).pipe(switchMap((calls) => query(calls)));
|
23159 | queue.push([valueObs, [call]]);
|
23160 | }
|
23161 | else {
|
23162 | valueObs = queue[queueIdx][0];
|
23163 | valueIdx = queue[queueIdx][1].length;
|
23164 | queue[queueIdx][1].push(call);
|
23165 | }
|
23166 | return valueObs.pipe(
|
23167 | map((values) => values[valueIdx]));
|
23168 | }
|
23169 | _decorateStorageCall(creator, decorateMethod) {
|
23170 | const memoed = memo(this.__internal__instanceId, (...args) => {
|
23171 | const call = extractStorageArgs(this.__internal__registry, creator, args);
|
23172 | if (!this.hasSubscriptions) {
|
23173 | return this._rpcCore.state.getStorage(call);
|
23174 | }
|
23175 | return this._queueStorage(call, this.__internal__storageSubQ);
|
23176 | });
|
23177 | return decorateMethod(memoed, {
|
23178 | methodName: creator.method,
|
23179 | overrideNoSub: (...args) => this._queueStorage(extractStorageArgs(this.__internal__registry, creator, args), this.__internal__storageGetQ)
|
23180 | });
|
23181 | }
|
23182 | _retrieveMulti(keys, blockHash) {
|
23183 | if (!keys.length) {
|
23184 | return of([]);
|
23185 | }
|
23186 | const query = this.hasSubscriptions && !blockHash
|
23187 | ? this._rpcCore.state.subscribeStorage
|
23188 | : this._rpcCore.state.queryStorageAt;
|
23189 | if (keys.length <= PAGE_SIZE_V) {
|
23190 | return blockHash
|
23191 | ? query(keys, blockHash)
|
23192 | : query(keys);
|
23193 | }
|
23194 | return combineLatest(util.arrayChunk(keys, PAGE_SIZE_V).map((k) => blockHash
|
23195 | ? query(k, blockHash)
|
23196 | : query(k))).pipe(map(util.arrayFlatten));
|
23197 | }
|
23198 | _retrieveMapKeys({ iterKey, meta, method, section }, at, args) {
|
23199 | if (!iterKey || !meta.type.isMap) {
|
23200 | throw new Error('keys can only be retrieved on maps');
|
23201 | }
|
23202 | const headKey = iterKey(...args).toHex();
|
23203 | const startSubject = new BehaviorSubject(headKey);
|
23204 | const query = at
|
23205 | ? (startKey) => this._rpcCore.state.getKeysPaged(headKey, PAGE_SIZE_K, startKey, at)
|
23206 | : (startKey) => this._rpcCore.state.getKeysPaged(headKey, PAGE_SIZE_K, startKey);
|
23207 | const setMeta = (key) => key.setMeta(meta, section, method);
|
23208 | return startSubject.pipe(switchMap(query), map((keys) => keys.map(setMeta)), tap((keys) => util.nextTick(() => {
|
23209 | keys.length === PAGE_SIZE_K
|
23210 | ? startSubject.next(keys[PAGE_SIZE_K - 1].toHex())
|
23211 | : startSubject.complete();
|
23212 | })), toArray(),
|
23213 | map(util.arrayFlatten));
|
23214 | }
|
23215 | _retrieveMapKeysPaged({ iterKey, meta, method, section }, at, opts) {
|
23216 | if (!iterKey || !meta.type.isMap) {
|
23217 | throw new Error('keys can only be retrieved on maps');
|
23218 | }
|
23219 | const setMeta = (key) => key.setMeta(meta, section, method);
|
23220 | const query = at
|
23221 | ? (headKey) => this._rpcCore.state.getKeysPaged(headKey, opts.pageSize, opts.startKey || headKey, at)
|
23222 | : (headKey) => this._rpcCore.state.getKeysPaged(headKey, opts.pageSize, opts.startKey || headKey);
|
23223 | return query(iterKey(...opts.args).toHex()).pipe(map((keys) => keys.map(setMeta)));
|
23224 | }
|
23225 | _retrieveMapEntries(entry, at, args) {
|
23226 | const query = at
|
23227 | ? (keys) => this._rpcCore.state.queryStorageAt(keys, at)
|
23228 | : (keys) => this._rpcCore.state.queryStorageAt(keys);
|
23229 | return this._retrieveMapKeys(entry, at, args).pipe(switchMap((keys) => keys.length
|
23230 | ? combineLatest(util.arrayChunk(keys, PAGE_SIZE_V).map(query)).pipe(map((valsArr) => util.arrayFlatten(valsArr).map((value, index) => [keys[index], value])))
|
23231 | : of([])));
|
23232 | }
|
23233 | _retrieveMapEntriesPaged(entry, at, opts) {
|
23234 | const query = at
|
23235 | ? (keys) => this._rpcCore.state.queryStorageAt(keys, at)
|
23236 | : (keys) => this._rpcCore.state.queryStorageAt(keys);
|
23237 | return this._retrieveMapKeysPaged(entry, at, opts).pipe(switchMap((keys) => keys.length
|
23238 | ? query(keys).pipe(map((valsArr) => valsArr.map((value, index) => [keys[index], value])))
|
23239 | : of([])));
|
23240 | }
|
23241 | _decorateDeriveRx(decorateMethod) {
|
23242 | const specName = this._runtimeVersion?.specName.toString();
|
23243 | const available = getAvailableDerives(this.__internal__instanceId, this._rx, util.objectSpread({}, this._options.derives, this._options.typesBundle?.spec?.[specName || '']?.derives));
|
23244 | return decorateDeriveSections(decorateMethod, available);
|
23245 | }
|
23246 | _decorateDerive(decorateMethod) {
|
23247 | return decorateDeriveSections(decorateMethod, this._rx.derive);
|
23248 | }
|
23249 | _rxDecorateMethod = (method) => {
|
23250 | return method;
|
23251 | };
|
23252 | }
|
23253 |
|
23254 | const KEEPALIVE_INTERVAL = 10000;
|
23255 | const l = util.logger('api/init');
|
23256 | function textToString(t) {
|
23257 | return t.toString();
|
23258 | }
|
23259 | class Init extends Decorate {
|
23260 | __internal__atLast = null;
|
23261 | __internal__healthTimer = null;
|
23262 | __internal__registries = [];
|
23263 | __internal__updateSub = null;
|
23264 | __internal__waitingRegistries = {};
|
23265 | constructor(options, type, decorateMethod) {
|
23266 | super(options, type, decorateMethod);
|
23267 | this.registry.setKnownTypes(options);
|
23268 | if (!options.source) {
|
23269 | this.registerTypes(options.types);
|
23270 | }
|
23271 | else {
|
23272 | this.__internal__registries = options.source.__internal__registries;
|
23273 | }
|
23274 | this._rpc = this._decorateRpc(this._rpcCore, this._decorateMethod);
|
23275 | this._rx.rpc = this._decorateRpc(this._rpcCore, this._rxDecorateMethod);
|
23276 | if (this.supportMulti) {
|
23277 | this._queryMulti = this._decorateMulti(this._decorateMethod);
|
23278 | this._rx.queryMulti = this._decorateMulti(this._rxDecorateMethod);
|
23279 | }
|
23280 | this._rx.signer = options.signer;
|
23281 | this._rpcCore.setRegistrySwap((blockHash) => this.getBlockRegistry(blockHash));
|
23282 | this._rpcCore.setResolveBlockHash((blockNumber) => firstValueFrom(this._rpcCore.chain.getBlockHash(blockNumber)));
|
23283 | if (this.hasSubscriptions) {
|
23284 | this._rpcCore.provider.on('disconnected', () => this.__internal__onProviderDisconnect());
|
23285 | this._rpcCore.provider.on('error', (e) => this.__internal__onProviderError(e));
|
23286 | this._rpcCore.provider.on('connected', () => this.__internal__onProviderConnect());
|
23287 | }
|
23288 | else if (!this._options.noInitWarn) {
|
23289 | l.warn('Api will be available in a limited mode since the provider does not support subscriptions');
|
23290 | }
|
23291 | if (this._rpcCore.provider.isConnected) {
|
23292 | this.__internal__onProviderConnect().catch(util.noop);
|
23293 | }
|
23294 | }
|
23295 | _initRegistry(registry, chain, version, metadata, chainProps) {
|
23296 | registry.clearCache();
|
23297 | registry.setChainProperties(chainProps || this.registry.getChainProperties());
|
23298 | registry.setKnownTypes(this._options);
|
23299 | registry.register(getSpecTypes(registry, chain, version.specName, version.specVersion));
|
23300 | registry.setHasher(getSpecHasher(registry, chain, version.specName));
|
23301 | if (registry.knownTypes.typesBundle) {
|
23302 | registry.knownTypes.typesAlias = getSpecAlias(registry, chain, version.specName);
|
23303 | }
|
23304 | registry.setMetadata(metadata, undefined, util.objectSpread({}, getSpecExtensions(registry, chain, version.specName), this._options.signedExtensions), this._options.noInitWarn);
|
23305 | }
|
23306 | _getDefaultRegistry() {
|
23307 | return util.assertReturn(this.__internal__registries.find(({ isDefault }) => isDefault), 'Initialization error, cannot find the default registry');
|
23308 | }
|
23309 | async at(blockHash, knownVersion) {
|
23310 | const u8aHash = util.u8aToU8a(blockHash);
|
23311 | const u8aHex = util.u8aToHex(u8aHash);
|
23312 | const registry = await this.getBlockRegistry(u8aHash, knownVersion);
|
23313 | if (!this.__internal__atLast || this.__internal__atLast[0] !== u8aHex) {
|
23314 | this.__internal__atLast = [u8aHex, this._createDecorated(registry, true, null, u8aHash).decoratedApi];
|
23315 | }
|
23316 | return this.__internal__atLast[1];
|
23317 | }
|
23318 | async _createBlockRegistry(blockHash, header, version) {
|
23319 | const registry = new types.TypeRegistry(blockHash);
|
23320 | const metadata = new types.Metadata(registry, await firstValueFrom(this._rpcCore.state.getMetadata.raw(header.parentHash)));
|
23321 | const runtimeChain = this._runtimeChain;
|
23322 | if (!runtimeChain) {
|
23323 | throw new Error('Invalid initializion order, runtimeChain is not available');
|
23324 | }
|
23325 | this._initRegistry(registry, runtimeChain, version, metadata);
|
23326 | const result = { counter: 0, lastBlockHash: blockHash, metadata, registry, runtimeVersion: version };
|
23327 | this.__internal__registries.push(result);
|
23328 | return result;
|
23329 | }
|
23330 | _cacheBlockRegistryProgress(key, creator) {
|
23331 | let waiting = this.__internal__waitingRegistries[key];
|
23332 | if (util.isUndefined(waiting)) {
|
23333 | waiting = this.__internal__waitingRegistries[key] = new Promise((resolve, reject) => {
|
23334 | creator()
|
23335 | .then((registry) => {
|
23336 | delete this.__internal__waitingRegistries[key];
|
23337 | resolve(registry);
|
23338 | })
|
23339 | .catch((error) => {
|
23340 | delete this.__internal__waitingRegistries[key];
|
23341 | reject(error);
|
23342 | });
|
23343 | });
|
23344 | }
|
23345 | return waiting;
|
23346 | }
|
23347 | _getBlockRegistryViaVersion(blockHash, version) {
|
23348 | if (version) {
|
23349 | const existingViaVersion = this.__internal__registries.find(({ runtimeVersion: { specName, specVersion } }) => specName.eq(version.specName) &&
|
23350 | specVersion.eq(version.specVersion));
|
23351 | if (existingViaVersion) {
|
23352 | existingViaVersion.counter++;
|
23353 | existingViaVersion.lastBlockHash = blockHash;
|
23354 | return existingViaVersion;
|
23355 | }
|
23356 | }
|
23357 | return null;
|
23358 | }
|
23359 | async _getBlockRegistryViaHash(blockHash) {
|
23360 | if (!this._genesisHash || !this._runtimeVersion) {
|
23361 | throw new Error('Cannot retrieve data on an uninitialized chain');
|
23362 | }
|
23363 | const header = this.registry.createType('HeaderPartial', this._genesisHash.eq(blockHash)
|
23364 | ? { number: util.BN_ZERO, parentHash: this._genesisHash }
|
23365 | : await firstValueFrom(this._rpcCore.chain.getHeader.raw(blockHash)));
|
23366 | if (header.parentHash.isEmpty) {
|
23367 | throw new Error('Unable to retrieve header and parent from supplied hash');
|
23368 | }
|
23369 | getUpgradeVersion(this._genesisHash, header.number);
|
23370 | const version = this.registry.createType('RuntimeVersionPartial', await firstValueFrom(this._rpcCore.state.getRuntimeVersion.raw(header.parentHash)));
|
23371 | return (
|
23372 | this._getBlockRegistryViaVersion(blockHash, version) ||
|
23373 | await this._cacheBlockRegistryProgress(version.toHex(), () => this._createBlockRegistry(blockHash, header, version)));
|
23374 | }
|
23375 | async getBlockRegistry(blockHash, knownVersion) {
|
23376 | return (
|
23377 | this.__internal__registries.find(({ lastBlockHash }) => lastBlockHash && util.u8aEq(lastBlockHash, blockHash)) ||
|
23378 | this._getBlockRegistryViaVersion(blockHash, knownVersion) ||
|
23379 | await this._cacheBlockRegistryProgress(util.u8aToHex(blockHash), () => this._getBlockRegistryViaHash(blockHash)));
|
23380 | }
|
23381 | async _loadMeta() {
|
23382 | if (this._isReady) {
|
23383 | if (!this._options.source) {
|
23384 | this._subscribeUpdates();
|
23385 | }
|
23386 | return true;
|
23387 | }
|
23388 | this._unsubscribeUpdates();
|
23389 | [this._genesisHash, this._runtimeMetadata] = this._options.source?._isReady
|
23390 | ? await this._metaFromSource(this._options.source)
|
23391 | : await this._metaFromChain(this._options.metadata);
|
23392 | return this._initFromMeta(this._runtimeMetadata);
|
23393 | }
|
23394 | async _metaFromSource(source) {
|
23395 | this._extrinsicType = source.extrinsicVersion;
|
23396 | this._runtimeChain = source.runtimeChain;
|
23397 | this._runtimeVersion = source.runtimeVersion;
|
23398 | const sections = Object.keys(source.rpc);
|
23399 | const rpcs = [];
|
23400 | for (let s = 0, scount = sections.length; s < scount; s++) {
|
23401 | const section = sections[s];
|
23402 | const methods = Object.keys(source.rpc[section]);
|
23403 | for (let m = 0, mcount = methods.length; m < mcount; m++) {
|
23404 | rpcs.push(`${section}_${methods[m]}`);
|
23405 | }
|
23406 | }
|
23407 | this._filterRpc(rpcs, getSpecRpc(this.registry, source.runtimeChain, source.runtimeVersion.specName));
|
23408 | return [source.genesisHash, source.runtimeMetadata];
|
23409 | }
|
23410 | _subscribeUpdates() {
|
23411 | if (this.__internal__updateSub || !this.hasSubscriptions) {
|
23412 | return;
|
23413 | }
|
23414 | this.__internal__updateSub = this._rpcCore.state.subscribeRuntimeVersion().pipe(switchMap((version) =>
|
23415 | this._runtimeVersion?.specVersion.eq(version.specVersion)
|
23416 | ? of(false)
|
23417 | : this._rpcCore.state.getMetadata().pipe(map((metadata) => {
|
23418 | l.log(`Runtime version updated to spec=${version.specVersion.toString()}, tx=${version.transactionVersion.toString()}`);
|
23419 | this._runtimeMetadata = metadata;
|
23420 | this._runtimeVersion = version;
|
23421 | this._rx.runtimeVersion = version;
|
23422 | const thisRegistry = this._getDefaultRegistry();
|
23423 | const runtimeChain = this._runtimeChain;
|
23424 | if (!runtimeChain) {
|
23425 | throw new Error('Invalid initializion order, runtimeChain is not available');
|
23426 | }
|
23427 | thisRegistry.metadata = metadata;
|
23428 | thisRegistry.runtimeVersion = version;
|
23429 | this._initRegistry(this.registry, runtimeChain, version, metadata);
|
23430 | this._injectMetadata(thisRegistry, true);
|
23431 | return true;
|
23432 | })))).subscribe();
|
23433 | }
|
23434 | async _metaFromChain(optMetadata) {
|
23435 | const [genesisHash, runtimeVersion, chain, chainProps, rpcMethods, chainMetadata] = await Promise.all([
|
23436 | firstValueFrom(this._rpcCore.chain.getBlockHash(0)),
|
23437 | firstValueFrom(this._rpcCore.state.getRuntimeVersion()),
|
23438 | firstValueFrom(this._rpcCore.system.chain()),
|
23439 | firstValueFrom(this._rpcCore.system.properties()),
|
23440 | firstValueFrom(this._rpcCore.rpc.methods()),
|
23441 | optMetadata
|
23442 | ? Promise.resolve(null)
|
23443 | : firstValueFrom(this._rpcCore.state.getMetadata())
|
23444 | ]);
|
23445 | this._runtimeChain = chain;
|
23446 | this._runtimeVersion = runtimeVersion;
|
23447 | this._rx.runtimeVersion = runtimeVersion;
|
23448 | const metadataKey = `${genesisHash.toHex() || '0x'}-${runtimeVersion.specVersion.toString()}`;
|
23449 | const metadata = chainMetadata || (optMetadata?.[metadataKey]
|
23450 | ? new types.Metadata(this.registry, optMetadata[metadataKey])
|
23451 | : await firstValueFrom(this._rpcCore.state.getMetadata()));
|
23452 | this._initRegistry(this.registry, chain, runtimeVersion, metadata, chainProps);
|
23453 | this._filterRpc(rpcMethods.methods.map(textToString), getSpecRpc(this.registry, chain, runtimeVersion.specName));
|
23454 | this._subscribeUpdates();
|
23455 | if (!this.__internal__registries.length) {
|
23456 | this.__internal__registries.push({ counter: 0, isDefault: true, metadata, registry: this.registry, runtimeVersion });
|
23457 | }
|
23458 | metadata.getUniqTypes(this._options.throwOnUnknown || false);
|
23459 | return [genesisHash, metadata];
|
23460 | }
|
23461 | _initFromMeta(metadata) {
|
23462 | const runtimeVersion = this._runtimeVersion;
|
23463 | if (!runtimeVersion) {
|
23464 | throw new Error('Invalid initializion order, runtimeVersion is not available');
|
23465 | }
|
23466 | this._extrinsicType = metadata.asLatest.extrinsic.version.toNumber();
|
23467 | this._rx.extrinsicType = this._extrinsicType;
|
23468 | this._rx.genesisHash = this._genesisHash;
|
23469 | this._rx.runtimeVersion = runtimeVersion;
|
23470 | this._injectMetadata(this._getDefaultRegistry(), true);
|
23471 | this._rx.derive = this._decorateDeriveRx(this._rxDecorateMethod);
|
23472 | this._derive = this._decorateDerive(this._decorateMethod);
|
23473 | return true;
|
23474 | }
|
23475 | _subscribeHealth() {
|
23476 | this._unsubscribeHealth();
|
23477 | this.__internal__healthTimer = this.hasSubscriptions
|
23478 | ? setInterval(() => {
|
23479 | firstValueFrom(this._rpcCore.system.health.raw()).catch(util.noop);
|
23480 | }, KEEPALIVE_INTERVAL)
|
23481 | : null;
|
23482 | }
|
23483 | _unsubscribeHealth() {
|
23484 | if (this.__internal__healthTimer) {
|
23485 | clearInterval(this.__internal__healthTimer);
|
23486 | this.__internal__healthTimer = null;
|
23487 | }
|
23488 | }
|
23489 | _unsubscribeUpdates() {
|
23490 | if (this.__internal__updateSub) {
|
23491 | this.__internal__updateSub.unsubscribe();
|
23492 | this.__internal__updateSub = null;
|
23493 | }
|
23494 | }
|
23495 | _unsubscribe() {
|
23496 | this._unsubscribeHealth();
|
23497 | this._unsubscribeUpdates();
|
23498 | }
|
23499 | async __internal__onProviderConnect() {
|
23500 | this._isConnected.next(true);
|
23501 | this.emit('connected');
|
23502 | try {
|
23503 | const cryptoReady = this._options.initWasm === false
|
23504 | ? true
|
23505 | : await utilCrypto.cryptoWaitReady();
|
23506 | const hasMeta = await this._loadMeta();
|
23507 | this._subscribeHealth();
|
23508 | if (hasMeta && !this._isReady && cryptoReady) {
|
23509 | this._isReady = true;
|
23510 | this.emit('ready', this);
|
23511 | }
|
23512 | }
|
23513 | catch (_error) {
|
23514 | const error = new Error(`FATAL: Unable to initialize the API: ${_error.message}`);
|
23515 | l.error(error);
|
23516 | this.emit('error', error);
|
23517 | }
|
23518 | }
|
23519 | __internal__onProviderDisconnect() {
|
23520 | this._isConnected.next(false);
|
23521 | this._unsubscribe();
|
23522 | this.emit('disconnected');
|
23523 | }
|
23524 | __internal__onProviderError(error) {
|
23525 | this.emit('error', error);
|
23526 | }
|
23527 | }
|
23528 |
|
23529 | function assertResult(value) {
|
23530 | if (value === undefined) {
|
23531 | throw new Error("Api interfaces needs to be initialized before using, wait for 'isReady'");
|
23532 | }
|
23533 | return value;
|
23534 | }
|
23535 | class Getters extends Init {
|
23536 | get call() {
|
23537 | return assertResult(this._call);
|
23538 | }
|
23539 | get consts() {
|
23540 | return assertResult(this._consts);
|
23541 | }
|
23542 | get derive() {
|
23543 | return assertResult(this._derive);
|
23544 | }
|
23545 | get errors() {
|
23546 | return assertResult(this._errors);
|
23547 | }
|
23548 | get events() {
|
23549 | return assertResult(this._events);
|
23550 | }
|
23551 | get extrinsicVersion() {
|
23552 | return this._extrinsicType;
|
23553 | }
|
23554 | get genesisHash() {
|
23555 | return assertResult(this._genesisHash);
|
23556 | }
|
23557 | get isConnected() {
|
23558 | return this._isConnected.getValue();
|
23559 | }
|
23560 | get libraryInfo() {
|
23561 | return `${packageInfo.name} v${packageInfo.version}`;
|
23562 | }
|
23563 | get query() {
|
23564 | return assertResult(this._query);
|
23565 | }
|
23566 | get queryMulti() {
|
23567 | return assertResult(this._queryMulti);
|
23568 | }
|
23569 | get rpc() {
|
23570 | return assertResult(this._rpc);
|
23571 | }
|
23572 | get runtimeChain() {
|
23573 | return assertResult(this._runtimeChain);
|
23574 | }
|
23575 | get runtimeMetadata() {
|
23576 | return assertResult(this._runtimeMetadata);
|
23577 | }
|
23578 | get runtimeVersion() {
|
23579 | return assertResult(this._runtimeVersion);
|
23580 | }
|
23581 | get rx() {
|
23582 | return assertResult(this._rx);
|
23583 | }
|
23584 | get stats() {
|
23585 | return this._rpcCore.stats;
|
23586 | }
|
23587 | get type() {
|
23588 | return this._type;
|
23589 | }
|
23590 | get tx() {
|
23591 | return assertResult(this._extrinsics);
|
23592 | }
|
23593 | findCall(callIndex) {
|
23594 | return findCall(this.registry, callIndex);
|
23595 | }
|
23596 | findError(errorIndex) {
|
23597 | return findError(this.registry, errorIndex);
|
23598 | }
|
23599 | }
|
23600 |
|
23601 | class ApiBase extends Getters {
|
23602 | constructor(options = {}, type, decorateMethod) {
|
23603 | super(options, type, decorateMethod);
|
23604 | }
|
23605 | connect() {
|
23606 | return this._rpcCore.connect();
|
23607 | }
|
23608 | disconnect() {
|
23609 | this._unsubscribe();
|
23610 | return this._rpcCore.disconnect();
|
23611 | }
|
23612 | setSigner(signer) {
|
23613 | this._rx.signer = signer;
|
23614 | }
|
23615 | async sign(address, data, { signer } = {}) {
|
23616 | if (util.isString(address)) {
|
23617 | const _signer = signer || this._rx.signer;
|
23618 | if (!_signer?.signRaw) {
|
23619 | throw new Error('No signer exists with a signRaw interface. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.');
|
23620 | }
|
23621 | return (await _signer.signRaw(util.objectSpread({ type: 'bytes' }, data, { address }))).signature;
|
23622 | }
|
23623 | return util.u8aToHex(address.sign(util.u8aToU8a(data.data)));
|
23624 | }
|
23625 | }
|
23626 |
|
23627 | class Combinator {
|
23628 | __internal__allHasFired = false;
|
23629 | __internal__callback;
|
23630 | __internal__fired = [];
|
23631 | __internal__fns = [];
|
23632 | __internal__isActive = true;
|
23633 | __internal__results = [];
|
23634 | __internal__subscriptions = [];
|
23635 | constructor(fns, callback) {
|
23636 | this.__internal__callback = callback;
|
23637 | this.__internal__subscriptions = fns.map(async (input, index) => {
|
23638 | const [fn, ...args] = Array.isArray(input)
|
23639 | ? input
|
23640 | : [input];
|
23641 | this.__internal__fired.push(false);
|
23642 | this.__internal__fns.push(fn);
|
23643 | return fn(...args, this._createCallback(index));
|
23644 | });
|
23645 | }
|
23646 | _allHasFired() {
|
23647 | this.__internal__allHasFired ||= this.__internal__fired.filter((hasFired) => !hasFired).length === 0;
|
23648 | return this.__internal__allHasFired;
|
23649 | }
|
23650 | _createCallback(index) {
|
23651 | return (value) => {
|
23652 | this.__internal__fired[index] = true;
|
23653 | this.__internal__results[index] = value;
|
23654 | this._triggerUpdate();
|
23655 | };
|
23656 | }
|
23657 | _triggerUpdate() {
|
23658 | if (!this.__internal__isActive || !util.isFunction(this.__internal__callback) || !this._allHasFired()) {
|
23659 | return;
|
23660 | }
|
23661 | try {
|
23662 | Promise
|
23663 | .resolve(this.__internal__callback(this.__internal__results))
|
23664 | .catch(util.noop);
|
23665 | }
|
23666 | catch {
|
23667 | }
|
23668 | }
|
23669 | unsubscribe() {
|
23670 | if (!this.__internal__isActive) {
|
23671 | return;
|
23672 | }
|
23673 | this.__internal__isActive = false;
|
23674 | Promise
|
23675 | .all(this.__internal__subscriptions.map(async (subscription) => {
|
23676 | try {
|
23677 | const unsubscribe = await subscription;
|
23678 | if (util.isFunction(unsubscribe)) {
|
23679 | unsubscribe();
|
23680 | }
|
23681 | }
|
23682 | catch {
|
23683 | }
|
23684 | })).catch(() => {
|
23685 | });
|
23686 | }
|
23687 | }
|
23688 |
|
23689 | function promiseTracker(resolve, reject) {
|
23690 | let isCompleted = false;
|
23691 | return {
|
23692 | reject: (error) => {
|
23693 | if (!isCompleted) {
|
23694 | isCompleted = true;
|
23695 | reject(error);
|
23696 | }
|
23697 | return EMPTY;
|
23698 | },
|
23699 | resolve: (value) => {
|
23700 | if (!isCompleted) {
|
23701 | isCompleted = true;
|
23702 | resolve(value);
|
23703 | }
|
23704 | }
|
23705 | };
|
23706 | }
|
23707 | function extractArgs(args, needsCallback) {
|
23708 | const actualArgs = args.slice();
|
23709 | const callback = (args.length && util.isFunction(args[args.length - 1]))
|
23710 | ? actualArgs.pop()
|
23711 | : undefined;
|
23712 | if (needsCallback && !util.isFunction(callback)) {
|
23713 | throw new Error('Expected a callback to be passed with subscriptions');
|
23714 | }
|
23715 | return [actualArgs, callback];
|
23716 | }
|
23717 | function decorateCall(method, args) {
|
23718 | return new Promise((resolve, reject) => {
|
23719 | const tracker = promiseTracker(resolve, reject);
|
23720 | const subscription = method(...args)
|
23721 | .pipe(catchError((error) => tracker.reject(error)))
|
23722 | .subscribe((result) => {
|
23723 | tracker.resolve(result);
|
23724 | util.nextTick(() => subscription.unsubscribe());
|
23725 | });
|
23726 | });
|
23727 | }
|
23728 | function decorateSubscribe(method, args, resultCb) {
|
23729 | return new Promise((resolve, reject) => {
|
23730 | const tracker = promiseTracker(resolve, reject);
|
23731 | const subscription = method(...args)
|
23732 | .pipe(catchError((error) => tracker.reject(error)), tap(() => tracker.resolve(() => subscription.unsubscribe())))
|
23733 | .subscribe((result) => {
|
23734 | util.nextTick(() => resultCb(result));
|
23735 | });
|
23736 | });
|
23737 | }
|
23738 | function toPromiseMethod(method, options) {
|
23739 | const needsCallback = !!(options?.methodName && options.methodName.includes('subscribe'));
|
23740 | return function (...args) {
|
23741 | const [actualArgs, resultCb] = extractArgs(args, needsCallback);
|
23742 | return resultCb
|
23743 | ? decorateSubscribe(method, actualArgs, resultCb)
|
23744 | : decorateCall(options?.overrideNoSub || method, actualArgs);
|
23745 | };
|
23746 | }
|
23747 |
|
23748 | class ApiPromise extends ApiBase {
|
23749 | __internal__isReadyPromise;
|
23750 | __internal__isReadyOrErrorPromise;
|
23751 | constructor(options) {
|
23752 | super(options, 'promise', toPromiseMethod);
|
23753 | this.__internal__isReadyPromise = new Promise((resolve) => {
|
23754 | super.once('ready', () => resolve(this));
|
23755 | });
|
23756 | this.__internal__isReadyOrErrorPromise = new Promise((resolve, reject) => {
|
23757 | const tracker = promiseTracker(resolve, reject);
|
23758 | super.once('ready', () => tracker.resolve(this));
|
23759 | super.once('error', (error) => tracker.reject(error));
|
23760 | });
|
23761 | }
|
23762 | static create(options) {
|
23763 | const instance = new ApiPromise(options);
|
23764 | if (options && options.throwOnConnect) {
|
23765 | return instance.isReadyOrError;
|
23766 | }
|
23767 | instance.isReadyOrError.catch(util.noop);
|
23768 | return instance.isReady;
|
23769 | }
|
23770 | get isReady() {
|
23771 | return this.__internal__isReadyPromise;
|
23772 | }
|
23773 | get isReadyOrError() {
|
23774 | return this.__internal__isReadyOrErrorPromise;
|
23775 | }
|
23776 | clone() {
|
23777 | return new ApiPromise(util.objectSpread({}, this._options, { source: this }));
|
23778 | }
|
23779 | async combineLatest(fns, callback) {
|
23780 | const combinator = new Combinator(fns, callback);
|
23781 | return () => {
|
23782 | combinator.unsubscribe();
|
23783 | };
|
23784 | }
|
23785 | }
|
23786 |
|
23787 | function toRxMethod(method) {
|
23788 | return method;
|
23789 | }
|
23790 |
|
23791 | class ApiRx extends ApiBase {
|
23792 | __internal__isReadyRx;
|
23793 | constructor(options) {
|
23794 | super(options, 'rxjs', toRxMethod);
|
23795 | this.__internal__isReadyRx = from(
|
23796 | new Promise((resolve) => {
|
23797 | super.on('ready', () => resolve(this));
|
23798 | }));
|
23799 | }
|
23800 | static create(options) {
|
23801 | return new ApiRx(options).isReady;
|
23802 | }
|
23803 | get isReady() {
|
23804 | return this.__internal__isReadyRx;
|
23805 | }
|
23806 | clone() {
|
23807 | return new ApiRx(util.objectSpread({}, this._options, { source: this }));
|
23808 | }
|
23809 | }
|
23810 |
|
23811 | Object.defineProperty(exports, "Keyring", {
|
23812 | enumerable: true,
|
23813 | get: function () { return keyring.Keyring; }
|
23814 | });
|
23815 | exports.ApiPromise = ApiPromise;
|
23816 | exports.ApiRx = ApiRx;
|
23817 | exports.HttpProvider = HttpProvider;
|
23818 | exports.ScProvider = ScProvider;
|
23819 | exports.SubmittableResult = SubmittableResult;
|
23820 | exports.WsProvider = WsProvider;
|
23821 | exports.packageInfo = packageInfo;
|
23822 | exports.toPromiseMethod = toPromiseMethod;
|
23823 | exports.toRxMethod = toRxMethod;
|
23824 |
|
23825 | }));
|