(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@polkadot/keyring'), require('@polkadot/ui-settings'), require('@polkadot/util'), require('@polkadot/util-crypto')) : typeof define === 'function' && define.amd ? define(['exports', '@polkadot/keyring', '@polkadot/ui-settings', '@polkadot/util', '@polkadot/util-crypto'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.polkadotUiKeyring = {}, global.polkadotKeyring, global.polkadotUiSettings, global.polkadotUtil, global.polkadotUtilCrypto)); })(this, (function (exports, keyring$1, uiSettings, util$7, utilCrypto) { 'use strict'; const global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : window; var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null; var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { 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; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __values(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; 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); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; 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); 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); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } } typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; function isFunction$2(value) { return typeof value === 'function'; } function createErrorClass(createImpl) { var _super = function (instance) { Error.call(instance); instance.stack = new Error().stack; }; var ctorFunc = createImpl(_super); ctorFunc.prototype = Object.create(Error.prototype); ctorFunc.prototype.constructor = ctorFunc; return ctorFunc; } var UnsubscriptionError = createErrorClass(function (_super) { return function UnsubscriptionErrorImpl(errors) { _super(this); this.message = errors ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ') : ''; this.name = 'UnsubscriptionError'; this.errors = errors; }; }); function arrRemove(arr, item) { if (arr) { var index = arr.indexOf(item); 0 <= index && arr.splice(index, 1); } } var Subscription = (function () { function Subscription(initialTeardown) { this.initialTeardown = initialTeardown; this.closed = false; this._parentage = null; this._finalizers = null; } Subscription.prototype.unsubscribe = function () { var e_1, _a, e_2, _b; var errors; if (!this.closed) { this.closed = true; var _parentage = this._parentage; if (_parentage) { this._parentage = null; if (Array.isArray(_parentage)) { try { for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) { var parent_1 = _parentage_1_1.value; parent_1.remove(this); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1); } finally { if (e_1) throw e_1.error; } } } else { _parentage.remove(this); } } var initialFinalizer = this.initialTeardown; if (isFunction$2(initialFinalizer)) { try { initialFinalizer(); } catch (e) { errors = e instanceof UnsubscriptionError ? e.errors : [e]; } } var _finalizers = this._finalizers; if (_finalizers) { this._finalizers = null; try { for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) { var finalizer = _finalizers_1_1.value; try { execFinalizer(finalizer); } catch (err) { errors = errors !== null && errors !== void 0 ? errors : []; if (err instanceof UnsubscriptionError) { errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors)); } else { errors.push(err); } } } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1); } finally { if (e_2) throw e_2.error; } } } if (errors) { throw new UnsubscriptionError(errors); } } }; Subscription.prototype.add = function (teardown) { var _a; if (teardown && teardown !== this) { if (this.closed) { execFinalizer(teardown); } else { if (teardown instanceof Subscription) { if (teardown.closed || teardown._hasParent(this)) { return; } teardown._addParent(this); } (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); } } }; Subscription.prototype._hasParent = function (parent) { var _parentage = this._parentage; return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent)); }; Subscription.prototype._addParent = function (parent) { var _parentage = this._parentage; this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; }; Subscription.prototype._removeParent = function (parent) { var _parentage = this._parentage; if (_parentage === parent) { this._parentage = null; } else if (Array.isArray(_parentage)) { arrRemove(_parentage, parent); } }; Subscription.prototype.remove = function (teardown) { var _finalizers = this._finalizers; _finalizers && arrRemove(_finalizers, teardown); if (teardown instanceof Subscription) { teardown._removeParent(this); } }; Subscription.EMPTY = (function () { var empty = new Subscription(); empty.closed = true; return empty; })(); return Subscription; }()); var EMPTY_SUBSCRIPTION = Subscription.EMPTY; function isSubscription(value) { return (value instanceof Subscription || (value && 'closed' in value && isFunction$2(value.remove) && isFunction$2(value.add) && isFunction$2(value.unsubscribe))); } function execFinalizer(finalizer) { if (isFunction$2(finalizer)) { finalizer(); } else { finalizer.unsubscribe(); } } var config = { onUnhandledError: null, onStoppedNotification: null, Promise: undefined, useDeprecatedSynchronousErrorHandling: false, useDeprecatedNextContext: false, }; var timeoutProvider = { setTimeout: function (handler, timeout) { var args = []; for (var _i = 2; _i < arguments.length; _i++) { args[_i - 2] = arguments[_i]; } var delegate = timeoutProvider.delegate; if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args))); } return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args))); }, clearTimeout: function (handle) { var delegate = timeoutProvider.delegate; return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); }, delegate: undefined, }; function reportUnhandledError(err) { timeoutProvider.setTimeout(function () { { throw err; } }); } function noop() { } function errorContext(cb) { { cb(); } } var Subscriber = (function (_super) { __extends(Subscriber, _super); function Subscriber(destination) { var _this = _super.call(this) || this; _this.isStopped = false; if (destination) { _this.destination = destination; if (isSubscription(destination)) { destination.add(_this); } } else { _this.destination = EMPTY_OBSERVER; } return _this; } Subscriber.create = function (next, error, complete) { return new SafeSubscriber(next, error, complete); }; Subscriber.prototype.next = function (value) { if (this.isStopped) ; else { this._next(value); } }; Subscriber.prototype.error = function (err) { if (this.isStopped) ; else { this.isStopped = true; this._error(err); } }; Subscriber.prototype.complete = function () { if (this.isStopped) ; else { this.isStopped = true; this._complete(); } }; Subscriber.prototype.unsubscribe = function () { if (!this.closed) { this.isStopped = true; _super.prototype.unsubscribe.call(this); this.destination = null; } }; Subscriber.prototype._next = function (value) { this.destination.next(value); }; Subscriber.prototype._error = function (err) { try { this.destination.error(err); } finally { this.unsubscribe(); } }; Subscriber.prototype._complete = function () { try { this.destination.complete(); } finally { this.unsubscribe(); } }; return Subscriber; }(Subscription)); var _bind = Function.prototype.bind; function bind$2(fn, thisArg) { return _bind.call(fn, thisArg); } var ConsumerObserver = (function () { function ConsumerObserver(partialObserver) { this.partialObserver = partialObserver; } ConsumerObserver.prototype.next = function (value) { var partialObserver = this.partialObserver; if (partialObserver.next) { try { partialObserver.next(value); } catch (error) { handleUnhandledError(error); } } }; ConsumerObserver.prototype.error = function (err) { var partialObserver = this.partialObserver; if (partialObserver.error) { try { partialObserver.error(err); } catch (error) { handleUnhandledError(error); } } else { handleUnhandledError(err); } }; ConsumerObserver.prototype.complete = function () { var partialObserver = this.partialObserver; if (partialObserver.complete) { try { partialObserver.complete(); } catch (error) { handleUnhandledError(error); } } }; return ConsumerObserver; }()); var SafeSubscriber = (function (_super) { __extends(SafeSubscriber, _super); function SafeSubscriber(observerOrNext, error, complete) { var _this = _super.call(this) || this; var partialObserver; if (isFunction$2(observerOrNext) || !observerOrNext) { partialObserver = { next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined), error: error !== null && error !== void 0 ? error : undefined, complete: complete !== null && complete !== void 0 ? complete : undefined, }; } else { var context_1; if (_this && config.useDeprecatedNextContext) { context_1 = Object.create(observerOrNext); context_1.unsubscribe = function () { return _this.unsubscribe(); }; partialObserver = { next: observerOrNext.next && bind$2(observerOrNext.next, context_1), error: observerOrNext.error && bind$2(observerOrNext.error, context_1), complete: observerOrNext.complete && bind$2(observerOrNext.complete, context_1), }; } else { partialObserver = observerOrNext; } } _this.destination = new ConsumerObserver(partialObserver); return _this; } return SafeSubscriber; }(Subscriber)); function handleUnhandledError(error) { { reportUnhandledError(error); } } function defaultErrorHandler(err) { throw err; } var EMPTY_OBSERVER = { closed: true, next: noop, error: defaultErrorHandler, complete: noop, }; var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })(); function identity(x) { return x; } function pipeFromArray(fns) { if (fns.length === 0) { return identity; } if (fns.length === 1) { return fns[0]; } return function piped(input) { return fns.reduce(function (prev, fn) { return fn(prev); }, input); }; } var Observable = (function () { function Observable(subscribe) { if (subscribe) { this._subscribe = subscribe; } } Observable.prototype.lift = function (operator) { var observable = new Observable(); observable.source = this; observable.operator = operator; return observable; }; Observable.prototype.subscribe = function (observerOrNext, error, complete) { var _this = this; var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete); errorContext(function () { var _a = _this, operator = _a.operator, source = _a.source; subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber)); }); return subscriber; }; Observable.prototype._trySubscribe = function (sink) { try { return this._subscribe(sink); } catch (err) { sink.error(err); } }; Observable.prototype.forEach = function (next, promiseCtor) { var _this = this; promiseCtor = getPromiseCtor(promiseCtor); return new promiseCtor(function (resolve, reject) { var subscriber = new SafeSubscriber({ next: function (value) { try { next(value); } catch (err) { reject(err); subscriber.unsubscribe(); } }, error: reject, complete: resolve, }); _this.subscribe(subscriber); }); }; Observable.prototype._subscribe = function (subscriber) { var _a; return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); }; Observable.prototype[observable] = function () { return this; }; Observable.prototype.pipe = function () { var operations = []; for (var _i = 0; _i < arguments.length; _i++) { operations[_i] = arguments[_i]; } return pipeFromArray(operations)(this); }; Observable.prototype.toPromise = function (promiseCtor) { var _this = this; promiseCtor = getPromiseCtor(promiseCtor); return new promiseCtor(function (resolve, reject) { var value; _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); }); }); }; Observable.create = function (subscribe) { return new Observable(subscribe); }; return Observable; }()); function getPromiseCtor(promiseCtor) { var _a; return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise; } function isObserver(value) { return value && isFunction$2(value.next) && isFunction$2(value.error) && isFunction$2(value.complete); } function isSubscriber(value) { return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value)); } function hasLift(source) { return isFunction$2(source === null || source === void 0 ? void 0 : source.lift); } function operate(init) { return function (source) { if (hasLift(source)) { return source.lift(function (liftedSource) { try { return init(liftedSource, this); } catch (err) { this.error(err); } }); } throw new TypeError('Unable to lift unknown Observable type'); }; } function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); } var OperatorSubscriber = (function (_super) { __extends(OperatorSubscriber, _super); function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { var _this = _super.call(this, destination) || this; _this.onFinalize = onFinalize; _this.shouldUnsubscribe = shouldUnsubscribe; _this._next = onNext ? function (value) { try { onNext(value); } catch (err) { destination.error(err); } } : _super.prototype._next; _this._error = onError ? function (err) { try { onError(err); } catch (err) { destination.error(err); } finally { this.unsubscribe(); } } : _super.prototype._error; _this._complete = onComplete ? function () { try { onComplete(); } catch (err) { destination.error(err); } finally { this.unsubscribe(); } } : _super.prototype._complete; return _this; } OperatorSubscriber.prototype.unsubscribe = function () { var _a; if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { var closed_1 = this.closed; _super.prototype.unsubscribe.call(this); !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); } }; return OperatorSubscriber; }(Subscriber)); var ObjectUnsubscribedError = createErrorClass(function (_super) { return function ObjectUnsubscribedErrorImpl() { _super(this); this.name = 'ObjectUnsubscribedError'; this.message = 'object unsubscribed'; }; }); var Subject = (function (_super) { __extends(Subject, _super); function Subject() { var _this = _super.call(this) || this; _this.closed = false; _this.currentObservers = null; _this.observers = []; _this.isStopped = false; _this.hasError = false; _this.thrownError = null; return _this; } Subject.prototype.lift = function (operator) { var subject = new AnonymousSubject(this, this); subject.operator = operator; return subject; }; Subject.prototype._throwIfClosed = function () { if (this.closed) { throw new ObjectUnsubscribedError(); } }; Subject.prototype.next = function (value) { var _this = this; errorContext(function () { var e_1, _a; _this._throwIfClosed(); if (!_this.isStopped) { if (!_this.currentObservers) { _this.currentObservers = Array.from(_this.observers); } try { for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) { var observer = _c.value; observer.next(value); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } } }); }; Subject.prototype.error = function (err) { var _this = this; errorContext(function () { _this._throwIfClosed(); if (!_this.isStopped) { _this.hasError = _this.isStopped = true; _this.thrownError = err; var observers = _this.observers; while (observers.length) { observers.shift().error(err); } } }); }; Subject.prototype.complete = function () { var _this = this; errorContext(function () { _this._throwIfClosed(); if (!_this.isStopped) { _this.isStopped = true; var observers = _this.observers; while (observers.length) { observers.shift().complete(); } } }); }; Subject.prototype.unsubscribe = function () { this.isStopped = this.closed = true; this.observers = this.currentObservers = null; }; Object.defineProperty(Subject.prototype, "observed", { get: function () { var _a; return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; }, enumerable: false, configurable: true }); Subject.prototype._trySubscribe = function (subscriber) { this._throwIfClosed(); return _super.prototype._trySubscribe.call(this, subscriber); }; Subject.prototype._subscribe = function (subscriber) { this._throwIfClosed(); this._checkFinalizedStatuses(subscriber); return this._innerSubscribe(subscriber); }; Subject.prototype._innerSubscribe = function (subscriber) { var _this = this; var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; if (hasError || isStopped) { return EMPTY_SUBSCRIPTION; } this.currentObservers = null; observers.push(subscriber); return new Subscription(function () { _this.currentObservers = null; arrRemove(observers, subscriber); }); }; Subject.prototype._checkFinalizedStatuses = function (subscriber) { var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; if (hasError) { subscriber.error(thrownError); } else if (isStopped) { subscriber.complete(); } }; Subject.prototype.asObservable = function () { var observable = new Observable(); observable.source = this; return observable; }; Subject.create = function (destination, source) { return new AnonymousSubject(destination, source); }; return Subject; }(Observable)); var AnonymousSubject = (function (_super) { __extends(AnonymousSubject, _super); function AnonymousSubject(destination, source) { var _this = _super.call(this) || this; _this.destination = destination; _this.source = source; return _this; } AnonymousSubject.prototype.next = function (value) { var _a, _b; (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); }; AnonymousSubject.prototype.error = function (err) { var _a, _b; (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); }; AnonymousSubject.prototype.complete = function () { var _a, _b; (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); }; AnonymousSubject.prototype._subscribe = function (subscriber) { var _a, _b; return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; }; return AnonymousSubject; }(Subject)); var BehaviorSubject = (function (_super) { __extends(BehaviorSubject, _super); function BehaviorSubject(_value) { var _this = _super.call(this) || this; _this._value = _value; return _this; } Object.defineProperty(BehaviorSubject.prototype, "value", { get: function () { return this.getValue(); }, enumerable: false, configurable: true }); BehaviorSubject.prototype._subscribe = function (subscriber) { var subscription = _super.prototype._subscribe.call(this, subscriber); !subscription.closed && subscriber.next(this._value); return subscription; }; BehaviorSubject.prototype.getValue = function () { var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; if (hasError) { throw thrownError; } this._throwIfClosed(); return _value; }; BehaviorSubject.prototype.next = function (value) { _super.prototype.next.call(this, (this._value = value)); }; return BehaviorSubject; }(Subject)); function isScheduler(value) { return value && isFunction$2(value.schedule); } function last(arr) { return arr[arr.length - 1]; } function popResultSelector(args) { return isFunction$2(last(args)) ? args.pop() : undefined; } function popScheduler(args) { return isScheduler(last(args)) ? args.pop() : undefined; } var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; }); function isPromise(value) { return isFunction$2(value === null || value === void 0 ? void 0 : value.then); } function isInteropObservable(input) { return isFunction$2(input[observable]); } function isAsyncIterable(obj) { return Symbol.asyncIterator && isFunction$2(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); } function createInvalidObservableTypeError(input) { 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."); } function getSymbolIterator() { if (typeof Symbol !== 'function' || !Symbol.iterator) { return '@@iterator'; } return Symbol.iterator; } var iterator = getSymbolIterator(); function isIterable(input) { return isFunction$2(input === null || input === void 0 ? void 0 : input[iterator]); } function readableStreamLikeToAsyncGenerator(readableStream) { return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() { var reader, _a, value, done; return __generator(this, function (_b) { switch (_b.label) { case 0: reader = readableStream.getReader(); _b.label = 1; case 1: _b.trys.push([1, , 9, 10]); _b.label = 2; case 2: return [4, __await(reader.read())]; case 3: _a = _b.sent(), value = _a.value, done = _a.done; if (!done) return [3, 5]; return [4, __await(void 0)]; case 4: return [2, _b.sent()]; case 5: return [4, __await(value)]; case 6: return [4, _b.sent()]; case 7: _b.sent(); return [3, 2]; case 8: return [3, 10]; case 9: reader.releaseLock(); return [7]; case 10: return [2]; } }); }); } function isReadableStreamLike(obj) { return isFunction$2(obj === null || obj === void 0 ? void 0 : obj.getReader); } function innerFrom(input) { if (input instanceof Observable) { return input; } if (input != null) { if (isInteropObservable(input)) { return fromInteropObservable(input); } if (isArrayLike(input)) { return fromArrayLike(input); } if (isPromise(input)) { return fromPromise(input); } if (isAsyncIterable(input)) { return fromAsyncIterable(input); } if (isIterable(input)) { return fromIterable(input); } if (isReadableStreamLike(input)) { return fromReadableStreamLike(input); } } throw createInvalidObservableTypeError(input); } function fromInteropObservable(obj) { return new Observable(function (subscriber) { var obs = obj[observable](); if (isFunction$2(obs.subscribe)) { return obs.subscribe(subscriber); } throw new TypeError('Provided object does not correctly implement Symbol.observable'); }); } function fromArrayLike(array) { return new Observable(function (subscriber) { for (var i = 0; i < array.length && !subscriber.closed; i++) { subscriber.next(array[i]); } subscriber.complete(); }); } function fromPromise(promise) { return new Observable(function (subscriber) { promise .then(function (value) { if (!subscriber.closed) { subscriber.next(value); subscriber.complete(); } }, function (err) { return subscriber.error(err); }) .then(null, reportUnhandledError); }); } function fromIterable(iterable) { return new Observable(function (subscriber) { var e_1, _a; try { for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) { var value = iterable_1_1.value; subscriber.next(value); if (subscriber.closed) { return; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1); } finally { if (e_1) throw e_1.error; } } subscriber.complete(); }); } function fromAsyncIterable(asyncIterable) { return new Observable(function (subscriber) { process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); }); }); } function fromReadableStreamLike(readableStream) { return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream)); } function process(asyncIterable, subscriber) { var asyncIterable_1, asyncIterable_1_1; var e_2, _a; return __awaiter(this, void 0, void 0, function () { var value, e_2_1; return __generator(this, function (_b) { switch (_b.label) { case 0: _b.trys.push([0, 5, 6, 11]); asyncIterable_1 = __asyncValues(asyncIterable); _b.label = 1; case 1: return [4, asyncIterable_1.next()]; case 2: if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4]; value = asyncIterable_1_1.value; subscriber.next(value); if (subscriber.closed) { return [2]; } _b.label = 3; case 3: return [3, 1]; case 4: return [3, 11]; case 5: e_2_1 = _b.sent(); e_2 = { error: e_2_1 }; return [3, 11]; case 6: _b.trys.push([6, , 9, 10]); if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8]; return [4, _a.call(asyncIterable_1)]; case 7: _b.sent(); _b.label = 8; case 8: return [3, 10]; case 9: if (e_2) throw e_2.error; return [7]; case 10: return [7]; case 11: subscriber.complete(); return [2]; } }); }); } function executeSchedule(parentSubscription, scheduler, work, delay, repeat) { if (delay === void 0) { delay = 0; } if (repeat === void 0) { repeat = false; } var scheduleSubscription = scheduler.schedule(function () { work(); if (repeat) { parentSubscription.add(this.schedule(null, delay)); } else { this.unsubscribe(); } }, delay); parentSubscription.add(scheduleSubscription); if (!repeat) { return scheduleSubscription; } } function observeOn(scheduler, delay) { if (delay === void 0) { delay = 0; } return operate(function (source, subscriber) { 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); })); }); } function subscribeOn(scheduler, delay) { if (delay === void 0) { delay = 0; } return operate(function (source, subscriber) { subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay)); }); } function scheduleObservable(input, scheduler) { return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler)); } function schedulePromise(input, scheduler) { return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler)); } function scheduleArray(input, scheduler) { return new Observable(function (subscriber) { var i = 0; return scheduler.schedule(function () { if (i === input.length) { subscriber.complete(); } else { subscriber.next(input[i++]); if (!subscriber.closed) { this.schedule(); } } }); }); } function scheduleIterable(input, scheduler) { return new Observable(function (subscriber) { var iterator$1; executeSchedule(subscriber, scheduler, function () { iterator$1 = input[iterator](); executeSchedule(subscriber, scheduler, function () { var _a; var value; var done; try { (_a = iterator$1.next(), value = _a.value, done = _a.done); } catch (err) { subscriber.error(err); return; } if (done) { subscriber.complete(); } else { subscriber.next(value); } }, 0, true); }); return function () { return isFunction$2(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return(); }; }); } function scheduleAsyncIterable(input, scheduler) { if (!input) { throw new Error('Iterable cannot be null'); } return new Observable(function (subscriber) { executeSchedule(subscriber, scheduler, function () { var iterator = input[Symbol.asyncIterator](); executeSchedule(subscriber, scheduler, function () { iterator.next().then(function (result) { if (result.done) { subscriber.complete(); } else { subscriber.next(result.value); } }); }, 0, true); }); }); } function scheduleReadableStreamLike(input, scheduler) { return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler); } function scheduled(input, scheduler) { if (input != null) { if (isInteropObservable(input)) { return scheduleObservable(input, scheduler); } if (isArrayLike(input)) { return scheduleArray(input, scheduler); } if (isPromise(input)) { return schedulePromise(input, scheduler); } if (isAsyncIterable(input)) { return scheduleAsyncIterable(input, scheduler); } if (isIterable(input)) { return scheduleIterable(input, scheduler); } if (isReadableStreamLike(input)) { return scheduleReadableStreamLike(input, scheduler); } } throw createInvalidObservableTypeError(input); } function from(input, scheduler) { return scheduler ? scheduled(input, scheduler) : innerFrom(input); } function map$1(project, thisArg) { return operate(function (source, subscriber) { var index = 0; source.subscribe(createOperatorSubscriber(subscriber, function (value) { subscriber.next(project.call(thisArg, value, index++)); })); }); } var isArray$1 = Array.isArray; function callOrApply(fn, args) { return isArray$1(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args); } function mapOneOrManyArgs(fn) { return map$1(function (args) { return callOrApply(fn, args); }); } var isArray = Array.isArray; var getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys; function argsArgArrayOrObject(args) { if (args.length === 1) { var first_1 = args[0]; if (isArray(first_1)) { return { args: first_1, keys: null }; } if (isPOJO(first_1)) { var keys = getKeys(first_1); return { args: keys.map(function (key) { return first_1[key]; }), keys: keys, }; } } return { args: args, keys: null }; } function isPOJO(obj) { return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto; } function createObject(keys, values) { return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {}); } function combineLatest() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var scheduler = popScheduler(args); var resultSelector = popResultSelector(args); var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys; if (observables.length === 0) { return from([], scheduler); } var result = new Observable(combineLatestInit(observables, scheduler, keys ? function (values) { return createObject(keys, values); } : identity)); return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result; } function combineLatestInit(observables, scheduler, valueTransform) { if (valueTransform === void 0) { valueTransform = identity; } return function (subscriber) { maybeSchedule(scheduler, function () { var length = observables.length; var values = new Array(length); var active = length; var remainingFirstValues = length; var _loop_1 = function (i) { maybeSchedule(scheduler, function () { var source = from(observables[i], scheduler); var hasFirstValue = false; source.subscribe(createOperatorSubscriber(subscriber, function (value) { values[i] = value; if (!hasFirstValue) { hasFirstValue = true; remainingFirstValues--; } if (!remainingFirstValues) { subscriber.next(valueTransform(values.slice())); } }, function () { if (!--active) { subscriber.complete(); } })); }, subscriber); }; for (var i = 0; i < length; i++) { _loop_1(i); } }, subscriber); }; } function maybeSchedule(scheduler, execute, subscription) { if (scheduler) { executeSchedule(subscription, scheduler, execute); } else { execute(); } } const subject = new BehaviorSubject(false); const env = { isDevelopment: () => subject.getValue(), set: (isDevelopment) => { subject.next(isDevelopment); }, subject }; const ACCOUNT_PREFIX = 'account:'; const ADDRESS_PREFIX = 'address:'; const CONTRACT_PREFIX = 'contract:'; function toHex(address) { return util$7.u8aToHex( keyring$1.decodeAddress(address, true)); } function accountKey(address) { return `${ACCOUNT_PREFIX}${toHex(address)}`; } function addressKey(address) { return `${ADDRESS_PREFIX}${toHex(address)}`; } function contractKey(address) { return `${CONTRACT_PREFIX}${toHex(address)}`; } const accountRegex = new RegExp(`^${ACCOUNT_PREFIX}0x[0-9a-f]*`, ''); const addressRegex = new RegExp(`^${ADDRESS_PREFIX}0x[0-9a-f]*`, ''); const contractRegex = new RegExp(`^${CONTRACT_PREFIX}0x[0-9a-f]*`, ''); function createOptionItem(address, _name) { const name = util$7.isUndefined(_name) ? ((address.length > 15) ? `${address.slice(0, 6)}…${address.slice(-6)}` : address) : _name; return { key: address, name, value: address }; } function callNext(current, subject, withTest) { const isDevMode = env.isDevelopment(); const filtered = {}; Object.keys(current).forEach((key) => { const { json: { meta: { isTesting = false } = {} } = {} } = current[key]; if (!withTest || isDevMode || isTesting !== true) { filtered[key] = current[key]; } }); subject.next(filtered); } function genericSubject(keyCreator, withTest = false) { let current = {}; const subject = new BehaviorSubject({}); const next = () => callNext(current, subject, withTest); env.subject.subscribe(next); return { add: (store, address, json, type) => { current = util$7.objectCopy(current); current[address] = { json: util$7.objectSpread({}, json, { address }), option: createOptionItem(address, json.meta.name), type }; if (!json.meta.isInjected && (!json.meta.isTesting || env.isDevelopment())) { store.set(keyCreator(address), json); } next(); return current[address]; }, remove: (store, address) => { current = util$7.objectCopy(current); delete current[address]; store.remove(keyCreator(address)); next(); }, subject }; } const accounts = genericSubject(accountKey, true); const addresses = genericSubject(addressKey); const contracts = genericSubject(contractKey); const obervableAll = combineLatest([ accounts.subject, addresses.subject, contracts.subject ]).pipe(map$1(([accounts, addresses, contracts]) => ({ accounts, addresses, contracts }))); let hasCalledInitOptions = false; const sortByName = (a, b) => { const valueA = a.option.name; const valueB = b.option.name; return valueA.localeCompare(valueB); }; const sortByCreated = (a, b) => { const valueA = a.json.meta.whenCreated || 0; const valueB = b.json.meta.whenCreated || 0; if (valueA < valueB) { return 1; } if (valueA > valueB) { return -1; } return 0; }; class KeyringOption { __internal__allSub = null; optionsSubject = new BehaviorSubject(this.emptyOptions()); createOptionHeader(name) { return { key: `header-${name.toLowerCase()}`, name, value: null }; } init(keyring) { if (hasCalledInitOptions) { throw new Error('Unable to initialise options more than once'); } this.__internal__allSub = obervableAll.subscribe(() => { const opts = this.emptyOptions(); this.addAccounts(keyring, opts); this.addAddresses(keyring, opts); this.addContracts(keyring, opts); opts.address = this.linkItems({ Addresses: opts.address, Recent: opts.recent }); opts.account = this.linkItems({ Accounts: opts.account, Development: opts.testing }); opts.contract = this.linkItems({ Contracts: opts.contract }); opts.all = [].concat(opts.account, opts.address); opts.allPlus = [].concat(opts.account, opts.address, opts.contract); this.optionsSubject.next(opts); }); hasCalledInitOptions = true; } clear() { if (this.__internal__allSub) { this.__internal__allSub.unsubscribe(); } } linkItems(items) { return Object.keys(items).reduce((result, header) => { const options = items[header]; return result.concat(options.length ? [this.createOptionHeader(header)] : [], options); }, []); } addAccounts(keyring, options) { const available = keyring.accounts.subject.getValue(); Object .values(available) .sort(sortByName) .forEach(({ json: { meta: { isTesting = false } }, option }) => { if (!isTesting) { options.account.push(option); } else { options.testing.push(option); } }); } addAddresses(keyring, options) { const available = keyring.addresses.subject.getValue(); Object .values(available) .filter(({ json }) => !!json.meta.isRecent) .sort(sortByCreated) .forEach(({ option }) => { options.recent.push(option); }); Object .values(available) .filter(({ json }) => !json.meta.isRecent) .sort(sortByName) .forEach(({ option }) => { options.address.push(option); }); } addContracts(keyring, options) { const available = keyring.contracts.subject.getValue(); Object .values(available) .sort(sortByName) .forEach(({ option }) => { options.contract.push(option); }); } emptyOptions() { return { account: [], address: [], all: [], allPlus: [], contract: [], recent: [], testing: [] }; } } var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var assign = make_assign(); var create$1 = make_create(); var trim$1 = make_trim(); var Global$5 = (typeof window !== 'undefined' ? window : commonjsGlobal); var util$6 = { assign: assign, create: create$1, trim: trim$1, bind: bind$1, slice: slice$1, each: each$7, map: map, pluck: pluck$1, isList: isList$1, isFunction: isFunction$1, isObject: isObject$1, Global: Global$5 }; function make_assign() { if (Object.assign) { return Object.assign } else { return function shimAssign(obj, props1, props2, etc) { for (var i = 1; i < arguments.length; i++) { each$7(Object(arguments[i]), function(val, key) { obj[key] = val; }); } return obj } } } function make_create() { if (Object.create) { return function create(obj, assignProps1, assignProps2, etc) { var assignArgsList = slice$1(arguments, 1); return assign.apply(this, [Object.create(obj)].concat(assignArgsList)) } } else { function F() {} return function create(obj, assignProps1, assignProps2, etc) { var assignArgsList = slice$1(arguments, 1); F.prototype = obj; return assign.apply(this, [new F()].concat(assignArgsList)) } } } function make_trim() { if (String.prototype.trim) { return function trim(str) { return String.prototype.trim.call(str) } } else { return function trim(str) { return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '') } } } function bind$1(obj, fn) { return function() { return fn.apply(obj, Array.prototype.slice.call(arguments, 0)) } } function slice$1(arr, index) { return Array.prototype.slice.call(arr, index || 0) } function each$7(obj, fn) { pluck$1(obj, function(val, key) { fn(val, key); return false }); } function map(obj, fn) { var res = (isList$1(obj) ? [] : {}); pluck$1(obj, function(v, k) { res[k] = fn(v, k); return false }); return res } function pluck$1(obj, fn) { if (isList$1(obj)) { for (var i=0; i= 0; i--) { var key = localStorage().key(i); fn(read$5(key), key); } } function remove$5(key) { return localStorage().removeItem(key) } function clearAll$5() { return localStorage().clear() } getDefaultExportFromCjs(localStorage_1); var util$3 = util$6; var Global$3 = util$3.Global; var oldFFGlobalStorage = { name: 'oldFF-globalStorage', read: read$4, write: write$4, each: each$4, remove: remove$4, clearAll: clearAll$4, }; var globalStorage = Global$3.globalStorage; function read$4(key) { return globalStorage[key] } function write$4(key, data) { globalStorage[key] = data; } function each$4(fn) { for (var i = globalStorage.length - 1; i >= 0; i--) { var key = globalStorage.key(i); fn(globalStorage[key], key); } } function remove$4(key) { return globalStorage.removeItem(key) } function clearAll$4() { each$4(function(key, _) { delete globalStorage[key]; }); } getDefaultExportFromCjs(oldFFGlobalStorage); var util$2 = util$6; var Global$2 = util$2.Global; var oldIEUserDataStorage = { name: 'oldIE-userDataStorage', write: write$3, read: read$3, each: each$3, remove: remove$3, clearAll: clearAll$3, }; var storageName = 'storejs'; var doc$1 = Global$2.document; var _withStorageEl = _makeIEStorageElFunction(); var disable = (Global$2.navigator ? Global$2.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\./); function write$3(unfixedKey, data) { if (disable) { return } var fixedKey = fixKey(unfixedKey); _withStorageEl(function(storageEl) { storageEl.setAttribute(fixedKey, data); storageEl.save(storageName); }); } function read$3(unfixedKey) { if (disable) { return } var fixedKey = fixKey(unfixedKey); var res = null; _withStorageEl(function(storageEl) { res = storageEl.getAttribute(fixedKey); }); return res } function each$3(callback) { _withStorageEl(function(storageEl) { var attributes = storageEl.XMLDocument.documentElement.attributes; for (var i=attributes.length-1; i>=0; i--) { var attr = attributes[i]; callback(storageEl.getAttribute(attr.name), attr.name); } }); } function remove$3(unfixedKey) { var fixedKey = fixKey(unfixedKey); _withStorageEl(function(storageEl) { storageEl.removeAttribute(fixedKey); storageEl.save(storageName); }); } function clearAll$3() { _withStorageEl(function(storageEl) { var attributes = storageEl.XMLDocument.documentElement.attributes; storageEl.load(storageName); for (var i=attributes.length-1; i>=0; i--) { storageEl.removeAttribute(attributes[i].name); } storageEl.save(storageName); }); } var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g"); function fixKey(key) { return key.replace(/^\d/, '___$&').replace(forbiddenCharsRegex, '___') } function _makeIEStorageElFunction() { if (!doc$1 || !doc$1.documentElement || !doc$1.documentElement.addBehavior) { return null } var scriptTag = 'script', storageOwner, storageContainer, storageEl; try { storageContainer = new ActiveXObject('htmlfile'); storageContainer.open(); storageContainer.write('<'+scriptTag+'>document.w=window'); storageContainer.close(); storageOwner = storageContainer.w.frames[0].document; storageEl = storageOwner.createElement('div'); } catch(e) { storageEl = doc$1.createElement('div'); storageOwner = doc$1.body; } return function(storeFunction) { var args = [].slice.call(arguments, 0); args.unshift(storageEl); storageOwner.appendChild(storageEl); storageEl.addBehavior('#default#userData'); storageEl.load(storageName); storeFunction.apply(this, args); storageOwner.removeChild(storageEl); return } } getDefaultExportFromCjs(oldIEUserDataStorage); var util$1 = util$6; var Global$1 = util$1.Global; var trim = util$1.trim; var cookieStorage = { name: 'cookieStorage', read: read$2, write: write$2, each: each$2, remove: remove$2, clearAll: clearAll$2, }; var doc = Global$1.document; function read$2(key) { if (!key || !_has(key)) { return null } var regexpStr = "(?:^|.*;\\s*)" + escape(key).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"; return unescape(doc.cookie.replace(new RegExp(regexpStr), "$1")) } function each$2(callback) { var cookies = doc.cookie.split(/; ?/g); for (var i = cookies.length - 1; i >= 0; i--) { if (!trim(cookies[i])) { continue } var kvp = cookies[i].split('='); var key = unescape(kvp[0]); var val = unescape(kvp[1]); callback(val, key); } } function write$2(key, data) { if(!key) { return } doc.cookie = escape(key) + "=" + escape(data) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/"; } function remove$2(key) { if (!key || !_has(key)) { return } doc.cookie = escape(key) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; } function clearAll$2() { each$2(function(_, key) { remove$2(key); }); } function _has(key) { return (new RegExp("(?:^|;\\s*)" + escape(key).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(doc.cookie) } getDefaultExportFromCjs(cookieStorage); var util = util$6; var Global = util.Global; var sessionStorage_1 = { name: 'sessionStorage', read: read$1, write: write$1, each: each$1, remove: remove$1, clearAll: clearAll$1 }; function sessionStorage() { return Global.sessionStorage } function read$1(key) { return sessionStorage().getItem(key) } function write$1(key, data) { return sessionStorage().setItem(key, data) } function each$1(fn) { for (var i = sessionStorage().length - 1; i >= 0; i--) { var key = sessionStorage().key(i); fn(read$1(key), key); } } function remove$1(key) { return sessionStorage().removeItem(key) } function clearAll$1() { return sessionStorage().clear() } getDefaultExportFromCjs(sessionStorage_1); var memoryStorage_1 = { name: 'memoryStorage', read: read, write: write, each: each, remove: remove, clearAll: clearAll, }; var memoryStorage = {}; function read(key) { return memoryStorage[key] } function write(key, data) { memoryStorage[key] = data; } function each(callback) { for (var key in memoryStorage) { if (memoryStorage.hasOwnProperty(key)) { callback(memoryStorage[key], key); } } } function remove(key) { delete memoryStorage[key]; } function clearAll(key) { memoryStorage = {}; } getDefaultExportFromCjs(memoryStorage_1); var all = [ localStorage_1, oldFFGlobalStorage, oldIEUserDataStorage, cookieStorage, sessionStorage_1, memoryStorage_1 ]; getDefaultExportFromCjs(all); var json2$1 = {}; var hasRequiredJson2; function requireJson2 () { if (hasRequiredJson2) return json2$1; hasRequiredJson2 = 1; if (typeof JSON !== "object") { JSON = {}; } (function () { var rx_one = /^[\],:{}\s]*$/; var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g; var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; var rx_four = /(?:^|:|,)(?:\s*\[)+/g; var rx_escapable = /[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; function f(n) { return n < 10 ? "0" + n : n; } function this_value() { return this.valueOf(); } if (typeof Date.prototype.toJSON !== "function") { Date.prototype.toJSON = function () { return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + f(this.getUTCMonth() + 1) + "-" + f(this.getUTCDate()) + "T" + f(this.getUTCHours()) + ":" + f(this.getUTCMinutes()) + ":" + f(this.getUTCSeconds()) + "Z" : null; }; Boolean.prototype.toJSON = this_value; Number.prototype.toJSON = this_value; String.prototype.toJSON = this_value; } var gap; var indent; var meta; var rep; function quote(string) { rx_escapable.lastIndex = 0; return rx_escapable.test(string) ? "\"" + string.replace(rx_escapable, function (a) { var c = meta[a]; return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4); }) + "\"" : "\"" + string + "\""; } function str(key, holder) { var i; var k; var v; var length; var mind = gap; var partial; var value = holder[key]; if (value && typeof value === "object" && typeof value.toJSON === "function") { value = value.toJSON(key); } if (typeof rep === "function") { value = rep.call(holder, key, value); } switch (typeof value) { case "string": return quote(value); case "number": return isFinite(value) ? String(value) : "null"; case "boolean": case "null": return String(value); case "object": if (!value) { return "null"; } gap += indent; partial = []; if (Object.prototype.toString.apply(value) === "[object Array]") { length = value.length; for (i = 0; i < length; i += 1) { partial[i] = str(i, value) || "null"; } v = partial.length === 0 ? "[]" : gap ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" : "[" + partial.join(",") + "]"; gap = mind; return v; } if (rep && typeof rep === "object") { length = rep.length; for (i = 0; i < length; i += 1) { if (typeof rep[i] === "string") { k = rep[i]; v = str(k, value); if (v) { partial.push(quote(k) + ( gap ? ": " : ":" ) + v); } } } } else { for (k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + ( gap ? ": " : ":" ) + v); } } } } v = partial.length === 0 ? "{}" : gap ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}" : "{" + partial.join(",") + "}"; gap = mind; return v; } } if (typeof JSON.stringify !== "function") { meta = { "\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", "\"": "\\\"", "\\": "\\\\" }; JSON.stringify = function (value, replacer, space) { var i; gap = ""; indent = ""; if (typeof space === "number") { for (i = 0; i < space; i += 1) { indent += " "; } } else if (typeof space === "string") { indent = space; } rep = replacer; if (replacer && typeof replacer !== "function" && (typeof replacer !== "object" || typeof replacer.length !== "number")) { throw new Error("JSON.stringify"); } return str("", {"": value}); }; } if (typeof JSON.parse !== "function") { JSON.parse = function (text, reviver) { var j; function walk(holder, key) { var k; var v; var value = holder[key]; if (value && typeof value === "object") { for (k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } } return reviver.call(holder, key, value); } text = String(text); rx_dangerous.lastIndex = 0; if (rx_dangerous.test(text)) { text = text.replace(rx_dangerous, function (a) { return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4); }); } if ( rx_one.test( text .replace(rx_two, "@") .replace(rx_three, "]") .replace(rx_four, "") ) ) { j = eval("(" + text + ")"); return (typeof reviver === "function") ? walk({"": j}, "") : j; } throw new SyntaxError("JSON.parse"); }; } }()); return json2$1; } var json2 = json2Plugin; function json2Plugin() { requireJson2(); return {} } getDefaultExportFromCjs(json2); var engine = storeEngine; var storages = all; var plugins = [json2]; var store_legacy = engine.createStore(storages, plugins); const store = getDefaultExportFromCjs(store_legacy); class BrowserStore { all(fn) { store.each((value, key) => { fn(key, value); }); } get(key, fn) { fn(store.get(key)); } remove(key, fn) { store.remove(key); fn && fn(); } set(key, value, fn) { store.set(key, value); fn && fn(); } } class Base { __internal__accounts; __internal__addresses; __internal__contracts; __internal__isEthereum; __internal__keyring; _store; _genesisHash; _genesisHashAdd = []; constructor() { this.__internal__accounts = accounts; this.__internal__addresses = addresses; this.__internal__contracts = contracts; this.__internal__isEthereum = false; this._store = new BrowserStore(); } get accounts() { return this.__internal__accounts; } get addresses() { return this.__internal__addresses; } get contracts() { return this.__internal__contracts; } get isEthereum() { return this.__internal__isEthereum; } get keyring() { if (this.__internal__keyring) { return this.__internal__keyring; } throw new Error('Keyring should be initialised via \'loadAll\' before use'); } get genesisHash() { return this._genesisHash; } get genesisHashes() { return this._genesisHash ? [this._genesisHash, ...this._genesisHashAdd] : [...this._genesisHashAdd]; } decodeAddress = (key, ignoreChecksum, ss58Format) => { return this.keyring.decodeAddress(key, ignoreChecksum, ss58Format); }; encodeAddress = (key, ss58Format) => { return this.keyring.encodeAddress(key, ss58Format); }; getPair(address) { return this.keyring.getPair(address); } getPairs() { return this.keyring.getPairs().filter((pair) => env.isDevelopment() || pair.meta.isTesting !== true); } isAvailable(_address) { const accountsValue = this.accounts.subject.getValue(); const addressesValue = this.addresses.subject.getValue(); const contractsValue = this.contracts.subject.getValue(); const address = util$7.isString(_address) ? _address : this.encodeAddress(_address); return !accountsValue[address] && !addressesValue[address] && !contractsValue[address]; } isPassValid(password) { return password.length > 0; } setSS58Format(ss58Format) { if (this.__internal__keyring && util$7.isNumber(ss58Format)) { this.__internal__keyring.setSS58Format(ss58Format); } } setDevMode(isDevelopment) { env.set(isDevelopment); } initKeyring(options) { const keyring = keyring$1.createTestKeyring(options, true); if (util$7.isBoolean(options.isDevelopment)) { this.setDevMode(options.isDevelopment); } this.__internal__isEthereum = keyring.type === 'ethereum'; this.__internal__keyring = keyring; this._genesisHash = options.genesisHash && (util$7.isString(options.genesisHash) ? options.genesisHash.toString() : options.genesisHash.toHex()); this._genesisHashAdd = options.genesisHashAdd || []; this._store = options.store || this._store; this.addAccountPairs(); } addAccountPairs() { this.keyring .getPairs() .forEach(({ address, meta }) => { this.accounts.add(this._store, address, { address, meta }); }); } addTimestamp(pair) { if (!pair.meta.whenCreated) { pair.setMeta({ whenCreated: Date.now() }); } } } const RECENT_EXPIRY = 24 * 60 * 60; class Keyring extends Base { keyringOption = new KeyringOption(); __internal__stores = { account: () => this.accounts, address: () => this.addresses, contract: () => this.contracts }; addExternal(address, meta = {}) { const pair = this.keyring.addFromAddress(address, util$7.objectSpread({}, meta, { isExternal: true }), null); return { json: this.saveAccount(pair), pair }; } addHardware(address, hardwareType, meta = {}) { return this.addExternal(address, util$7.objectSpread({}, meta, { hardwareType, isHardware: true })); } addMultisig(addresses, threshold, meta = {}) { let address = utilCrypto.createKeyMulti(addresses, threshold); if (this.isEthereum) { address = address.slice(0, 20); } const who = util$7.u8aSorted(addresses.map((who) => this.decodeAddress(who))).map((who) => this.encodeAddress(who)); return this.addExternal(address, util$7.objectSpread({}, meta, { isMultisig: true, threshold: util$7.bnToBn(threshold).toNumber(), who })); } addPair(pair, password) { this.keyring.addPair(pair); return { json: this.saveAccount(pair, password), pair }; } addUri(suri, password, meta = {}, type) { const pair = this.keyring.addFromUri(suri, meta, type); return { json: this.saveAccount(pair, password), pair }; } backupAccount(pair, password) { if (!pair.isLocked) { pair.lock(); } pair.decodePkcs8(password); return pair.toJson(password); } async backupAccounts(addresses, password) { const accountPromises = addresses.map((address) => { return new Promise((resolve) => { this._store.get(accountKey(address), resolve); }); }); const accounts = await Promise.all(accountPromises); return util$7.objectSpread({}, utilCrypto.jsonEncrypt(util$7.stringToU8a(JSON.stringify(accounts)), ['batch-pkcs8'], password), { accounts: accounts.map((account) => ({ address: account.address, meta: account.meta })) }); } createFromJson(json, meta = {}) { return this.keyring.createFromJson(util$7.objectSpread({}, json, { meta: util$7.objectSpread({}, json.meta, meta) })); } createFromUri(suri, meta = {}, type) { return this.keyring.createFromUri(suri, meta, type); } encryptAccount(pair, password) { const json = pair.toJson(password); json.meta.whenEdited = Date.now(); this.keyring.addFromJson(json); this.accounts.add(this._store, pair.address, json, pair.type); } forgetAccount(address) { this.keyring.removePair(address); this.accounts.remove(this._store, address); } forgetAddress(address) { this.addresses.remove(this._store, address); } forgetContract(address) { this.contracts.remove(this._store, address); } getAccount(address) { return this.getAddress(address, 'account'); } getAccounts() { const available = this.accounts.subject.getValue(); return Object .keys(available) .map((address) => this.getAddress(address, 'account')) .filter((account) => !!account && (env.isDevelopment() || account.meta.isTesting !== true)); } getAddress(_address, type = null) { const address = util$7.isString(_address) ? _address : this.encodeAddress(_address); const publicKey = this.decodeAddress(address); const stores = type ? [this.__internal__stores[type]] : Object.values(this.__internal__stores); const info = stores.reduce((lastInfo, store) => (store().subject.getValue()[address] || lastInfo), undefined); return info && { address, meta: info.json.meta, publicKey }; } getAddresses() { const available = this.addresses.subject.getValue(); return Object .keys(available) .map((address) => this.getAddress(address)) .filter((account) => !!account); } getContract(address) { return this.getAddress(address, 'contract'); } getContracts() { const available = this.contracts.subject.getValue(); return Object .entries(available) .filter(([, { json: { meta: { contract } } }]) => !!contract && contract.genesisHash === this.genesisHash) .map(([address]) => this.getContract(address)) .filter((account) => !!account); } rewriteKey(json, key, hexAddr, creator) { if (hexAddr.startsWith('0x')) { return; } this._store.remove(key); this._store.set(creator(hexAddr), json); } loadAccount(json, key) { if (!json.meta.isTesting && json.encoded) { const pair = this.keyring.addFromJson(json, true); this.accounts.add(this._store, pair.address, json, pair.type); } const [, hexAddr] = key.split(':'); this.rewriteKey(json, key, hexAddr.trim(), accountKey); } loadAddress(json, key) { const { isRecent, whenCreated = 0 } = json.meta; if (isRecent && (Date.now() - whenCreated) > RECENT_EXPIRY) { this._store.remove(key); return; } const address = util$7.isHex(json.address) && json.address.length !== 66 ? json.address : this.encodeAddress(util$7.isHex(json.address) ? util$7.hexToU8a(json.address) : this.decodeAddress(json.address, true)); const [, hexAddr] = key.split(':'); this.addresses.add(this._store, address, json); this.rewriteKey(json, key, hexAddr, addressKey); } loadContract(json, key) { const address = this.encodeAddress(this.decodeAddress(json.address)); const [, hexAddr] = key.split(':'); json.meta.genesisHash = json.meta.genesisHash || (json.meta.contract?.genesisHash); this.contracts.add(this._store, address, json); this.rewriteKey(json, key, hexAddr, contractKey); } loadInjected(address, meta, type) { const json = { address, meta: util$7.objectSpread({}, meta, { isInjected: true }) }; const pair = this.keyring.addFromAddress(address, json.meta, null, type); this.accounts.add(this._store, pair.address, json, pair.type); } allowGenesis(json) { if (json?.meta && this.genesisHash) { const hashes = Object.values(uiSettings.chains).find((hashes) => hashes.includes(this.genesisHash || '')) || [this.genesisHash]; if (json.meta.genesisHash) { return hashes.includes(json.meta.genesisHash) || this.genesisHashes.includes(json.meta.genesisHash); } else if (json.meta.contract) { return hashes.includes(json.meta.contract.genesisHash); } } return true; } loadAll(options, injected = []) { super.initKeyring(options); this._store.all((key, json) => { if (!util$7.isFunction(options.filter) || options.filter(json)) { try { if (this.allowGenesis(json)) { if (accountRegex.test(key)) { this.loadAccount(json, key); } else if (addressRegex.test(key)) { this.loadAddress(json, key); } else if (contractRegex.test(key)) { this.loadContract(json, key); } } } catch { console.warn(`Keyring: Unable to load ${key}:${util$7.stringify(json)}`); } } }); injected.forEach((account) => { if (this.allowGenesis(account)) { try { this.loadInjected(account.address, account.meta, account.type); } catch { console.warn(`Keyring: Unable to inject ${util$7.stringify(account)}`); } } }); this.keyringOption.init(this); } restoreAccount(json, password) { const cryptoType = Array.isArray(json.encoding.content) ? json.encoding.content[1] : 'ed25519'; const encType = Array.isArray(json.encoding.type) ? json.encoding.type : [json.encoding.type]; const pair = keyring$1.createPair({ toSS58: this.encodeAddress, type: cryptoType }, { publicKey: this.decodeAddress(json.address, true) }, json.meta, util$7.isHex(json.encoded) ? util$7.hexToU8a(json.encoded) : utilCrypto.base64Decode(json.encoded), encType); pair.decodePkcs8(password); this.addPair(pair, password); pair.lock(); return pair; } restoreAccounts(json, password) { const accounts = JSON.parse(util$7.u8aToString(utilCrypto.jsonDecrypt(json, password))); accounts.forEach((account) => { this.loadAccount(account, accountKey(account.address)); }); } saveAccount(pair, password) { this.addTimestamp(pair); const json = pair.toJson(password); this.keyring.addFromJson(json); this.accounts.add(this._store, pair.address, json, pair.type); return json; } saveAccountMeta(pair, meta) { const address = pair.address; this._store.get(accountKey(address), (json) => { pair.setMeta(meta); json.meta = pair.meta; this.accounts.add(this._store, address, json, pair.type); }); } saveAddress(address, meta, type = 'address') { const available = this.addresses.subject.getValue(); const json = available[address]?.json || { address, meta: { isRecent: undefined, whenCreated: Date.now() } }; Object.keys(meta).forEach((key) => { json.meta[key] = meta[key]; }); delete json.meta.isRecent; this.__internal__stores[type]().add(this._store, address, json); return json; } saveContract(address, meta) { return this.saveAddress(address, meta, 'contract'); } saveRecent(address) { const available = this.addresses.subject.getValue(); if (!available[address]) { this.addresses.add(this._store, address, { address, meta: { genesisHash: this.genesisHash, isRecent: true, whenCreated: Date.now() } }); } return this.addresses.subject.getValue()[address]; } } const packageInfo = { name: '@polkadot/ui-keyring', 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-ui-keyring.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-ui-keyring.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-ui-keyring.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-ui-keyring.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '3.6.4' }; const keyring = new Keyring(); exports.Keyring = Keyring; exports.keyring = keyring; exports.packageInfo = packageInfo; }));