@tonconnect/sdk 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tonconnect-sdk.min.js","mappings":"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","sources":["webpack://TonConnectSDK/./src/errors/address/index.ts","webpack://TonConnectSDK/./src/errors/address/wrong-address.error.ts","webpack://TonConnectSDK/./src/errors/binary/index.ts","webpack://TonConnectSDK/./src/errors/binary/parse-hex.error.ts","webpack://TonConnectSDK/./src/errors/dapp/dapp-metadata.error.ts","webpack://TonConnectSDK/./src/errors/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-content-error.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-not-found.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/user-rejects.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/index.ts","webpack://TonConnectSDK/./src/errors/protocol/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/bad-request.error.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/unknown-app.error.ts","webpack://TonConnectSDK/./src/errors/storage/index.ts","webpack://TonConnectSDK/./src/errors/storage/localstorage-not-found.error.ts","webpack://TonConnectSDK/./src/errors/ton-connect.error.ts","webpack://TonConnectSDK/./src/errors/unknown.error.ts","webpack://TonConnectSDK/./src/errors/wallet/index.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-already-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-injected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-support-feature.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/fetch-wallets.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/index.ts","webpack://TonConnectSDK/./src/index.ts","webpack://TonConnectSDK/./src/models/index.ts","webpack://TonConnectSDK/./src/models/methods/index.ts","webpack://TonConnectSDK/./src/models/wallet/index.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-connection-source.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-info.ts","webpack://TonConnectSDK/./src/parsers/connect-errors-parser.ts","webpack://TonConnectSDK/./src/parsers/rpc-parser.ts","webpack://TonConnectSDK/./src/parsers/send-transaction-parser.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-gateway.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-provider.ts","webpack://TonConnectSDK/./src/provider/injected/injected-provider.ts","webpack://TonConnectSDK/./src/resources/protocol.ts","webpack://TonConnectSDK/./src/storage/bridge-connection-storage.ts","webpack://TonConnectSDK/./src/storage/default-storage.ts","webpack://TonConnectSDK/./src/storage/http-bridge-gateway-storage.ts","webpack://TonConnectSDK/./src/ton-connect.ts","webpack://TonConnectSDK/./src/utils/address.ts","webpack://TonConnectSDK/./src/utils/url.ts","webpack://TonConnectSDK/./src/utils/web-api.ts","webpack://TonConnectSDK/./src/wallets-list-manager.ts","webpack://TonConnectSDK/../../node_modules/tweetnacl-util/nacl-util.js","webpack://TonConnectSDK/../../node_modules/tweetnacl/nacl-fast.js","webpack://TonConnectSDK/../protocol/lib/cjs/crypto/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/crypto/session-crypto.js","webpack://TonConnectSDK/../protocol/lib/cjs/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/CHAIN.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/app-message/connect-request/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/app-message/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/app-message/request/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-event/connect-event.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-event/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-response/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-response/send-transaction-rpc-response.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/base64.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/binary.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/web-api.js","webpack://TonConnectSDK/webpack/bootstrap","webpack://TonConnectSDK/webpack/startup"],"sourcesContent":["export { WrongAddressError } from './wrong-address.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed address is in incorrect format.\n */\nexport class WrongAddressError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n","export { ParseHexError } from './parse-hex.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed hex is in incorrect format.\n */\nexport class ParseHexError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n","export * from './protocol';\nexport * from './wallet';\nexport * from './storage';\nexport * from './wallets-manager';\nexport * from './address';\nexport * from './binary';\nexport { TonConnectError } from './ton-connect.error';\nexport { UnknownError } from './unknown.error';\n","export { UserRejectsError } from 'src/errors/protocol/events/connect/user-rejects.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n private static additionalMessage =\n '\\nPassed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n\n constructor(message?: string) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n private static additionalMessage =\n '\\nManifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n\n constructor(message?: string) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n","export * from './connect';\n","export * from './events';\nexport * from './responses';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","export { BadRequestError } from './bad-request.error';\nexport { UnknownAppError } from './unknown-app.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n","export { LocalstorageNotFoundError } from './localstorage-not-found.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n","/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n private static prefix = '[TON_CONNECT_SDK_ERROR]';\n\n constructor(message?: string, options?: ErrorOptions) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n","export { WalletAlreadyConnectedError } from './wallet-already-connected.error';\nexport { WalletNotConnectedError } from './wallet-not-connected.error';\nexport { WalletNotInjectedError } from './wallet-not-injected.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n","export { FetchWalletsError } from './fetch-wallets.error';\n","export * from './ton-connect';\nexport * from './models';\nexport * from './errors';\nexport { IStorage } from './storage/models/storage.interface';\nexport { TonConnect as default } from './ton-connect';\nexport { ITonConnect } from './ton-connect.interface';\nexport { CHAIN, DeviceInfo } from '@tonconnect/protocol';\nexport { toUserFriendlyAddress } from './utils/address';\n","export * from './wallet';\nexport * from './methods';\nexport { DappMetadata } from './dapp/dapp-metadata';\nexport { TonConnectOptions } from './ton-connect-options';\n","export * from './connect';\nexport * from './send-transaction';\n","export type { Account } from './account';\nexport type { Wallet } from './wallet';\nexport type {\n WalletConnectionSource,\n WalletConnectionSourceHTTP,\n WalletConnectionSourceJS\n} from './wallet-connection-source';\nexport {\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote,\n isWalletInfoInjected\n} from './wallet-info';\n","export type WalletConnectionSource = WalletConnectionSourceHTTP | WalletConnectionSourceJS;\n\nexport interface WalletConnectionSourceHTTP {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletConnectionSourceJS {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n}\n\nexport function isWalletConnectionSourceJS(\n value: WalletConnectionSource\n): value is WalletConnectionSourceJS {\n return 'jsBridgeKey' in value;\n}\n","export interface WalletInfoBase {\n /**\n * Name of the wallet.\n */\n name: string;\n\n /**\n * Url to the icon of the wallet. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format.\n */\n imageUrl: string;\n\n /**\n * Will be used in the protocol later.\n */\n tondns?: string;\n\n /**\n * Info or landing page of your wallet. May be useful for TON newcomers.\n */\n aboutUrl: string;\n}\n\nexport interface WalletInfoRemote extends WalletInfoBase {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Native wallet app deepLink. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n deepLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletInfoInjected extends WalletInfoBase {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n\n /**\n * Indicates if the wallet currently is injected to the webpage.\n */\n injected: boolean;\n\n /**\n * Indicates if the dapp is opened inside this wallet's browser.\n */\n embedded: boolean;\n}\n\nexport type WalletInfo =\n | WalletInfoRemote\n | WalletInfoInjected\n | (WalletInfoRemote & WalletInfoInjected);\n\nexport interface WalletInfoDTO {\n name: string;\n image: string;\n tondns?: string;\n about_url: string;\n universal_url: string;\n\n deepLink: string;\n bridge: (WalletInfoBridgeRemoteDTO | WalletInfoBridgeInjectedDTO)[];\n}\n\nexport interface WalletInfoBridgeRemoteDTO {\n type: 'sse';\n url: string;\n}\n\nexport interface WalletInfoBridgeInjectedDTO {\n type: 'js';\n key: string;\n}\n\nexport function isWalletInfoInjected(value: WalletInfo): value is WalletInfoInjected {\n return 'jsBridgeKey' in value;\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { CONNECT_EVENT_ERROR_CODES, ConnectEventError } from '@tonconnect/protocol';\n\nconst connectEventErrorsCodes: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> =\n {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n };\n\nclass ConnectErrorsParser {\n parseError(error: ConnectEventError['payload']): TonConnectError {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n\n return new ErrorConstructor(error.message);\n }\n}\n\nexport const connectErrorsParser = new ConnectErrorsParser();\n","import {\n AppRequest,\n RpcMethod,\n WalletResponse,\n WalletResponseError,\n WalletResponseSuccess\n} from '@tonconnect/protocol';\nimport { WithoutId } from 'src/utils/types';\n\nexport abstract class RpcParser<T extends RpcMethod> {\n abstract convertToRpcRequest(...args: unknown[]): WithoutId<AppRequest<T>>;\n\n abstract convertFromRpcResponse(rpcResponse: WithoutId<WalletResponseSuccess<T>>): unknown;\n\n abstract parseAndThrowError(response: WithoutId<WalletResponseError<T>>): never;\n\n public isError(\n response: WithoutId<WalletResponse<T>>\n ): response is WithoutId<WalletResponseError<T>> {\n return 'error' in response;\n }\n}\n","import {\n CONNECT_EVENT_ERROR_CODES,\n SEND_TRANSACTION_ERROR_CODES,\n SendTransactionRpcRequest,\n SendTransactionRpcResponseError,\n SendTransactionRpcResponseSuccess\n} from '@tonconnect/protocol';\nimport { BadRequestError, TonConnectError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { RpcParser } from 'src/parsers/rpc-parser';\nimport { WithoutId } from 'src/utils/types';\n\nconst sendTransactionErrors: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\n\nclass SendTransactionParser extends RpcParser<'sendTransaction'> {\n convertToRpcRequest(\n request: Omit<SendTransactionRequest, 'validUntil'> & { valid_until: number }\n ): WithoutId<SendTransactionRpcRequest> {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n\n parseAndThrowError(response: WithoutId<SendTransactionRpcResponseError>): never {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n\n throw new ErrorConstructor(response.error.message);\n }\n\n convertFromRpcResponse(\n rpcResponse: WithoutId<SendTransactionRpcResponseSuccess>\n ): SendTransactionResponse {\n return {\n boc: rpcResponse.result\n };\n }\n}\n\nexport const sendTransactionParser = new SendTransactionParser();\n","import { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { HttpBridgeGatewayStorage } from 'src/storage/http-bridge-gateway-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { addPathToUrl } from 'src/utils/url';\n\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n } catch (err) {\n console.error(err);\n }\n}\n\nexport class BridgeGateway {\n private readonly ssePath = 'events';\n\n private readonly postPath = 'message';\n\n private readonly heartbeatMessage = 'heartbeat';\n\n private readonly defaultTtl = 300;\n\n private eventSource: EventSource | undefined;\n\n private isClosed = false;\n\n private readonly bridgeGatewayStorage: HttpBridgeGatewayStorage;\n\n constructor(\n storage: IStorage,\n private readonly bridgeUrl: string,\n public readonly sessionId: string,\n private readonly listener: (msg: BridgeIncomingMessage) => void,\n private readonly errorsListener: (err: Event) => void\n ) {\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n\n public async registerSession(): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n\n const lastEventId = await this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n\n this.eventSource = new EventSource(url.toString());\n\n return new Promise((resolve, reject) => {\n this.eventSource!.onerror = reject;\n this.eventSource!.onopen! = (): void => {\n this.eventSource!.onerror = this.errorsHandler.bind(this);\n this.eventSource!.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n }\n\n public async send(message: Uint8Array, receiver: string, ttl?: number): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n await fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n }\n\n public close(): void {\n this.isClosed = true;\n this.eventSource?.close();\n }\n\n private errorsHandler(e: Event): void {\n if (!this.isClosed) {\n if (this.eventSource?.readyState === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n\n if (this.eventSource?.readyState === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n\n this.errorsListener(e);\n }\n }\n\n private async messagesHandler(e: MessageEvent<string>): Promise<void> {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n\n await this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n\n if (!this.isClosed) {\n let bridgeIncomingMessage: BridgeIncomingMessage;\n\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n } catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n\n this.listener(bridgeIncomingMessage);\n }\n }\n}\n","import {\n Base64,\n SessionCrypto,\n AppRequest,\n ConnectRequest,\n RpcMethod,\n WalletEvent,\n WalletResponse,\n WalletMessage,\n hexToByteArray,\n ConnectEventSuccess,\n TonAddressItemReply\n} from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletConnectionSourceHTTP } from 'src/models/wallet/wallet-connection-source';\nimport { BridgeGateway } from 'src/provider/bridge/bridge-gateway';\nimport { BridgeConnectionHttp } from 'src/provider/bridge/models/bridge-connection';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { BridgePartialSession, BridgeSession } from 'src/provider/bridge/models/bridge-session';\nimport { HTTPProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { PROTOCOL_VERSION } from 'src/resources/protocol';\n\nexport class BridgeProvider implements HTTPProvider {\n public static async fromStorage(storage: IStorage): Promise<BridgeProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n }\n\n public readonly type = 'http';\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private readonly pendingRequests = new Map<\n string,\n (response: WithoutId<WalletResponse<RpcMethod>>) => void\n >();\n\n private nextRequestId = 0;\n\n private session: BridgeSession | BridgePartialSession | null = null;\n\n private bridge: BridgeGateway | null = null;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(\n private readonly storage: IStorage,\n private readonly walletConnectionSource: WalletConnectionSourceHTTP\n ) {\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n\n public connect(message: ConnectRequest): string {\n this.bridge?.close();\n const sessionCrypto = new SessionCrypto();\n\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n this.bridge.registerSession();\n\n return this.generateUniversalLink(message);\n }\n\n public async restoreConnection(): Promise<void> {\n this.bridge?.close();\n const storedConnection = await this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n\n this.session = storedConnection.session;\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n storedConnection.session.sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n\n await this.bridge.registerSession();\n\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n }\n\n public sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n\n const encodedRequest = this.session!.sessionCrypto.encrypt(\n JSON.stringify({ ...request, id }),\n hexToByteArray(this.session.walletPublicKey)\n );\n\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n\n public closeConnection(): void {\n this.bridge?.close();\n this.listeners = [];\n this.session = null;\n this.bridge = null;\n }\n\n public disconnect(): Promise<void> {\n this.bridge?.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n\n public listen(callback: (e: WalletEvent) => void): () => void {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n\n private async gatewayListener(bridgeIncomingMessage: BridgeIncomingMessage): Promise<void> {\n const walletMessage: WalletMessage = JSON.parse(\n this.session!.sessionCrypto.decrypt(\n Base64.decode(bridgeIncomingMessage.message).toUint8Array(),\n hexToByteArray(bridgeIncomingMessage.from)\n )\n );\n\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n\n if (walletMessage.event === 'connect') {\n await this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n\n if (walletMessage.event === 'disconnect') {\n await this.removeBridgeAndSession();\n }\n\n this.listeners.forEach(listener => listener(walletMessage));\n }\n\n private async gatewayErrorsListener(e: Event): Promise<void> {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n }\n\n private async updateSession(\n connectEvent: ConnectEventSuccess,\n walletPublicKey: string\n ): Promise<void> {\n this.session = {\n ...this.session!,\n walletPublicKey\n };\n\n const tonAddrItem: TonAddressItemReply = connectEvent.payload.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply;\n\n const connectEventToSave: BridgeConnectionHttp['connectEvent'] = {\n ...connectEvent,\n payload: {\n ...connectEvent.payload,\n items: [tonAddrItem]\n }\n };\n\n await this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n }\n\n private async removeBridgeAndSession(): Promise<void> {\n this.session = null;\n this.bridge = null;\n await this.connectionStorage.removeConnection();\n }\n\n private generateUniversalLink(message: ConnectRequest): string {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session!.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n}\n","import { WalletNotInjectedError } from 'src/errors/wallet/wallet-not-injected.error';\nimport {\n AppRequest,\n RpcMethod,\n WalletResponse,\n ConnectRequest,\n WalletEvent,\n ConnectEvent\n} from '@tonconnect/protocol';\nimport { InjectedWalletApi } from 'src/provider/injected/models/injected-wallet-api';\nimport { InternalProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { getWindow } from 'src/utils/web-api';\nimport { PROTOCOL_VERSION } from 'src/resources/protocol';\n\ntype WindowWithTon<T extends string> = {\n [key in T]: {\n tonconnect: InjectedWalletApi;\n };\n} & Window;\n\nexport class InjectedProvider<T extends string = string> implements InternalProvider {\n private static window = getWindow();\n\n public static async fromStorage(storage: IStorage): Promise<InjectedProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(connection.jsBridgeKey);\n }\n\n public static isWalletInjected(injectedWalletKey: string): boolean {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n\n public static isInsideWalletBrowser(injectedWalletKey: string): boolean {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey]!.tonconnect.isWalletBrowser;\n }\n\n return false;\n }\n\n private static isWindowContainsWallet<T extends string>(\n window: Window | undefined,\n injectedWalletKey: string\n ): window is WindowWithTon<T> {\n return (\n !!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey as keyof Window] === 'object' &&\n 'tonconnect' in window[injectedWalletKey as keyof Window]\n );\n }\n\n public readonly type = 'injected';\n\n private unsubscribeCallback: (() => void) | null = null;\n\n private injectedWallet: InjectedWalletApi;\n\n private listenSubscriptions = false;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(injectedWalletKey: T) {\n const window: Window | undefined | WindowWithTon<T> = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n\n this.injectedWallet = window[injectedWalletKey]!.tonconnect!;\n }\n\n public connect(message: ConnectRequest, auto = false): void {\n this.injectedWallet\n .connect(PROTOCOL_VERSION, message, auto)\n .then(connectEvent => {\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n }\n this.listeners.forEach(listener => listener(connectEvent));\n })\n .catch(e => {\n const connectEventError: ConnectEvent = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e?.toString()\n }\n };\n\n this.listeners.forEach(listener => listener(connectEventError));\n });\n }\n\n public async restoreConnection(): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n this.listeners.forEach(listener => listener(connectEvent));\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n public closeConnection(): void {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n\n public disconnect(): Promise<void> {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return Promise.resolve();\n }\n\n private closeAllListeners(): void {\n this.listenSubscriptions = false;\n this.listeners = [];\n this.unsubscribeCallback?.();\n }\n\n public listen(eventsCallback: (e: WalletEvent) => void): () => void {\n this.listeners.push(eventsCallback);\n return () =>\n (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n\n public async sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return this.injectedWallet.send<T>({ ...request, id: '0' });\n }\n\n private makeSubscriptions(): void {\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n}\n","export const PROTOCOL_VERSION = 2;\n","import { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeSessionRaw } from 'src/provider/bridge/models/bridge-session-raw';\nimport {\n BridgeConnection,\n BridgeConnectionHttp,\n BridgeConnectionHttpRaw,\n BridgeConnectionInjected,\n BridgeConnectionRaw\n} from 'src/provider/bridge/models/bridge-connection';\nimport { IStorage } from 'src/storage/models/storage.interface';\n\nexport class BridgeConnectionStorage {\n private readonly storeKey = 'ton-connect-storage_bridge-connection';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeConnection(connection: BridgeConnection): Promise<void> {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n\n const rawSession: BridgeSessionRaw = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n\n const rawConnection: BridgeConnectionHttpRaw = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n\n public async removeConnection(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getConnection(): Promise<BridgeConnection | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n const connection: BridgeConnectionRaw = JSON.parse(stored);\n\n if (connection.type === 'injected') {\n return connection;\n }\n\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n }\n\n public async getHttpConnection(): Promise<BridgeConnectionHttp> {\n const connection = await this.getConnection();\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while nothing is stored'\n );\n }\n\n if (connection.type === 'injected') {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while injected connection is stored'\n );\n }\n\n return connection;\n }\n\n public async getInjectedConnection(): Promise<BridgeConnectionInjected> {\n const connection = await this.getConnection();\n\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while nothing is stored'\n );\n }\n\n if (connection?.type === 'http') {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while HTTP connection is stored'\n );\n }\n\n return connection;\n }\n\n public async storedConnectionType(): Promise<BridgeConnection['type'] | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection: BridgeConnection = JSON.parse(stored);\n return connection.type;\n }\n}\n","import { LocalstorageNotFoundError } from 'src/errors/storage/localstorage-not-found.error';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { getWindow } from 'src/utils/web-api';\n\nexport class DefaultStorage implements IStorage {\n private readonly window: Window;\n\n constructor() {\n const window = getWindow();\n\n if (!window?.localStorage) {\n throw new LocalstorageNotFoundError();\n }\n\n this.window = window;\n }\n\n public async getItem(key: string): Promise<string | null> {\n return Promise.resolve(this.window.localStorage.getItem(key));\n }\n\n public async removeItem(key: string): Promise<void> {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n }\n\n setItem(key: string, value: string): Promise<void> {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n","import { IStorage } from 'src/storage/models/storage.interface';\n\nexport class HttpBridgeGatewayStorage {\n private readonly storeKey = 'ton-connect-storage_http-bridge-gateway';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeLastEventId(lastEventId: string): Promise<void> {\n return this.storage.setItem(this.storeKey, lastEventId);\n }\n\n public async removeLastEventId(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getLastEventId(): Promise<string | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n return stored;\n }\n}\n","import {\n ConnectEventError,\n ConnectEventSuccess,\n ConnectRequest,\n SendTransactionRpcResponseSuccess,\n TonAddressItemReply,\n WalletEvent,\n TonProofItemReply,\n ConnectItem,\n Feature\n} from '@tonconnect/protocol';\nimport { DappMetadataError } from 'src/errors/dapp/dapp-metadata.error';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletAlreadyConnectedError } from 'src/errors/wallet/wallet-already-connected.error';\nimport { WalletNotConnectedError } from 'src/errors/wallet/wallet-not-connected.error';\nimport { WalletNotSupportFeatureError } from 'src/errors/wallet/wallet-not-support-feature.error';\nimport { Account, Wallet, WalletConnectionSource, WalletInfo } from 'src/models';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { ConnectAdditionalRequest } from 'src/models/methods/connect/connect-additional-request';\nimport { TonConnectOptions } from 'src/models/ton-connect-options';\nimport {\n isWalletConnectionSourceJS,\n WalletConnectionSourceJS\n} from 'src/models/wallet/wallet-connection-source';\nimport { connectErrorsParser } from 'src/parsers/connect-errors-parser';\nimport { sendTransactionParser } from 'src/parsers/send-transaction-parser';\nimport { BridgeProvider } from 'src/provider/bridge/bridge-provider';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\nimport { Provider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { DefaultStorage } from 'src/storage/default-storage';\nimport { ITonConnect } from 'src/ton-connect.interface';\nimport { getWebPageManifest } from 'src/utils/web-api';\nimport { WalletsListManager } from 'src/wallets-list-manager';\n\nexport class TonConnect implements ITonConnect {\n private static readonly walletsList = new WalletsListManager();\n\n /**\n * Returns available wallets list.\n */\n public static getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\n\n private readonly walletsList = new WalletsListManager();\n\n private readonly dappSettings: Required<TonConnectOptions>;\n\n private readonly bridgeConnectionStorage: BridgeConnectionStorage;\n\n private _wallet: Wallet | null = null;\n\n private provider: Provider | null = null;\n\n private statusChangeSubscriptions: ((walletInfo: Wallet | null) => void)[] = [];\n\n private statusChangeErrorSubscriptions: ((err: TonConnectError) => void)[] = [];\n\n /**\n * Shows if the wallet is connected right now.\n */\n public get connected(): boolean {\n return this._wallet !== null;\n }\n\n /**\n * Current connected account or null if no account is connected.\n */\n public get account(): Account | null {\n return this._wallet?.account || null;\n }\n\n /**\n * Current connected wallet or null if no account is connected.\n */\n public get wallet(): Wallet | null {\n return this._wallet;\n }\n\n private set wallet(value: Wallet | null) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n\n constructor(options?: TonConnectOptions) {\n this.dappSettings = {\n manifestUrl: options?.manifestUrl || getWebPageManifest(),\n storage: options?.storage || new DefaultStorage()\n };\n\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError(\n 'Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest'\n );\n }\n\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n\n /**\n * Returns available wallets list.\n */\n public getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\n\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n public onStatusChange(\n callback: (wallet: Wallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): () => void {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(\n item => item !== callback\n );\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(\n item => item !== errorsHandler\n );\n }\n };\n }\n\n /**\n * Generates universal link for an external wallet and subscribes to the wallet's bridge, or sends connect request to the injected wallet.\n * @param wallet wallet's bridge url and universal link for an external wallet or jsBridge key for the injected wallet.\n * @param request (optional) additional request to pass to the wallet while connect (currently only ton_proof is available).\n * @returns universal link if external wallet was passed or void for the injected wallet.\n */\n public connect<T extends WalletConnectionSource>(\n wallet: T,\n request?: ConnectAdditionalRequest\n ): T extends WalletConnectionSourceJS ? void : string;\n public connect(\n wallet: WalletConnectionSource,\n request?: ConnectAdditionalRequest\n ): void | string {\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n\n this.provider?.closeConnection();\n this.provider = this.createProvider(wallet);\n\n return this.provider.connect(this.createConnectRequest(request));\n }\n\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n public async restoreConnection(): Promise<void> {\n const [bridgeConnectionType, embeddedWallet] = await Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = await BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = await InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = await this.createProvider(embeddedWallet);\n } else {\n return;\n }\n }\n\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n }\n\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n public async sendTransaction(\n transaction: SendTransactionRequest\n ): Promise<SendTransactionResponse> {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n\n const { validUntil, ...tx } = transaction;\n const response = await this.provider!.sendRequest(\n sendTransactionParser.convertToRpcRequest({ ...tx, valid_until: validUntil })\n );\n\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n\n return sendTransactionParser.convertFromRpcResponse(\n response as SendTransactionRpcResponseSuccess\n );\n }\n\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n await this.provider!.disconnect();\n this.onWalletDisconnected();\n }\n\n private createProvider(wallet: WalletConnectionSource): Provider {\n let provider: Provider;\n\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(wallet.jsBridgeKey);\n } else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n\n private walletEventsListener(e: WalletEvent): void {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n\n private onWalletConnected(connectEvent: ConnectEventSuccess['payload']): void {\n const tonAccountItem: TonAddressItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply | undefined;\n\n const tonProofItem: TonProofItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_proof'\n ) as TonProofItemReply | undefined;\n\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n\n const wallet: Wallet = {\n device: connectEvent.device,\n provider: this.provider!.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit\n }\n };\n\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n\n this.wallet = wallet;\n }\n\n private onWalletConnectError(connectEventError: ConnectEventError['payload']): void {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n\n console.debug(error);\n\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n\n private onWalletDisconnected(): void {\n this.wallet = null;\n }\n\n private checkConnection(): void | never {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n\n private checkFeatureSupport(feature: Feature): void | never {\n if (!this.wallet?.device.features.includes(feature)) {\n throw new WalletNotSupportFeatureError();\n }\n }\n\n private createConnectRequest(request?: ConnectAdditionalRequest): ConnectRequest {\n const items: ConnectItem[] = [\n {\n name: 'ton_addr'\n }\n ];\n\n if (request?.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\n","import { WrongAddressError, ParseHexError } from 'src/errors';\nimport { Base64 } from '@tonconnect/protocol';\n\n/**\n * Converts raw TON address to bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses}\n * @param hexAddress raw TON address formatted as \"0:<hex string without 0x>\".\n */\nexport function toUserFriendlyAddress(hexAddress: string): string {\n const { wc, hex } = parseHexAddress(hexAddress);\n\n const bounceableTag = 0x11;\n const addr = new Int8Array(34);\n addr[0] = bounceableTag;\n addr[1] = wc;\n addr.set(hex, 2);\n\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n\n let addressBase64 = Base64.encode(addressWithChecksum);\n\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction parseHexAddress(hexAddress: string): { wc: 0 | -1; hex: Uint8Array } {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(\n `Wrong address ${hexAddress}. Address must include \":\" only once.`\n );\n }\n\n const wc = parseInt(parts[0]!);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(\n `Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`\n );\n }\n\n const hex = parts[1];\n if (hex?.length !== 64) {\n throw new WrongAddressError(\n `Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex?.length} received.`\n );\n }\n\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\n\nfunction crc16(data: ArrayLike<number>): Uint8Array {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\n\nconst toByteMap: Record<string, number> = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring]!;\n }\n return result;\n}\n","export function removeUrlLastSlash(url: string): string {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n\n return url;\n}\n\nexport function addPathToUrl(url: string, path: string): string {\n return removeUrlLastSlash(url) + '/' + path;\n}\n","export function getWindow(): Window | undefined {\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n return window;\n}\n\nexport function getDocument(): Document | undefined {\n if (typeof document === 'undefined') {\n return undefined;\n }\n\n return document;\n}\n\nexport function getWebPageManifest(): string {\n const origin = getWindow()?.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n\n return '';\n}\n","import { FetchWalletsError } from 'src/errors/wallets-manager/fetch-wallets.error';\nimport {\n WalletInfoRemote,\n WalletInfoInjected,\n WalletInfo,\n WalletInfoDTO,\n isWalletInfoInjected\n} from 'src/models/wallet/wallet-info';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\n\nexport class WalletsListManager {\n private walletsListCache: Promise<WalletInfo[]> | null = null;\n\n private readonly walletsListSource =\n 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n\n public async getWallets(): Promise<WalletInfo[]> {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n\n return this.walletsListCache;\n }\n\n public async getEmbeddedWallet(): Promise<WalletInfoInjected | null> {\n const walletsList = await this.getWallets();\n const injectedWallets = walletsList.filter(isWalletInfoInjected);\n\n if (injectedWallets.length !== 1) {\n return null;\n }\n\n return injectedWallets[0]!.embedded ? injectedWallets[0]! : null;\n }\n\n private async fetchWalletsList(): Promise<WalletInfo[]> {\n try {\n const walletsResponse = await fetch(this.walletsListSource);\n const walletsList: WalletInfoDTO[] = await walletsResponse.json();\n\n if (\n !Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))\n ) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n } catch (e) {\n throw new FetchWalletsError(e);\n }\n }\n\n private walletConfigDTOListToWalletConfigList(walletConfigDTO: WalletInfoDTO[]): WalletInfo[] {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig: WalletInfo = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n } as WalletInfo;\n\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n (walletConfig as WalletInfoRemote).bridgeUrl = bridge.url;\n (walletConfig as WalletInfoRemote).universalLink =\n walletConfigDTO.universal_url;\n (walletConfig as WalletInfoRemote).deepLink = walletConfigDTO.deepLink;\n }\n\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n (walletConfig as WalletInfoInjected).jsBridgeKey = jsBridgeKey;\n (walletConfig as WalletInfoInjected).injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n (walletConfig as WalletInfoInjected).embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n\n return walletConfig;\n });\n }\n\n private isCorrectWalletConfigDTO(value: unknown): value is WalletInfoDTO {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n\n if (\n !('bridge' in value) ||\n !Array.isArray((value as { bridge: unknown }).bridge) ||\n !(value as { bridge: unknown[] }).bridge.length\n ) {\n return false;\n }\n\n const bridge = (value as { bridge: unknown[] }).bridge;\n\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n\n const sseBridge = bridge.find(item => (item as { type: string }).type === 'sse');\n\n if (sseBridge) {\n if (\n !('url' in sseBridge) ||\n !(sseBridge as { url: string }).url ||\n !(value as { universal_url: string }).universal_url\n ) {\n return false;\n }\n }\n\n const jsBridge = bridge.find(item => (item as { type: string }).type === 'js');\n\n if (jsBridge) {\n if (!('key' in jsBridge) || !(jsBridge as { key: string }).key) {\n return false;\n }\n }\n\n return true;\n }\n}\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nvar session_crypto_1 = require(\"./session-crypto\");\nObject.defineProperty(exports, \"SessionCrypto\", { enumerable: true, get: function () { return session_crypto_1.SessionCrypto; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nconst utils_1 = require(\"../utils\");\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nif ((0, utils_1.isNode)()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = (0, utils_1.toHexString)(this.keyPair.publicKey);\n }\n createKeypair() {\n return tweetnacl_1.default.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: (0, utils_1.hexToByteArray)(keyPair.publicKey),\n secretKey: (0, utils_1.hexToByteArray)(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = tweetnacl_1.default.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return (0, utils_1.concatUint8Arrays)(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = (0, utils_1.splitToUint8Arrays)(message, this.nonceLength);\n const decrypted = tweetnacl_1.default.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error(`Decryption error: \\n message: ${message.toString()} \\n sender pubkey: ${senderPublicKey.toString()} \\n keypair pubkey: ${this.keyPair.publicKey.toString()} \\n keypair secretkey: ${this.keyPair.secretKey.toString()}`);\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: (0, utils_1.toHexString)(this.keyPair.publicKey),\n secretKey: (0, utils_1.toHexString)(this.keyPair.secretKey)\n };\n }\n}\nexports.SessionCrypto = SessionCrypto;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./crypto\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN = exports.CHAIN || (exports.CHAIN = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./request\"), exports);\n__exportStar(require(\"./connect-request\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\n__exportStar(require(\"./app-message\"), exports);\n__exportStar(require(\"./wallet-message\"), exports);\nvar CHAIN_1 = require(\"./CHAIN\");\nObject.defineProperty(exports, \"CHAIN\", { enumerable: true, get: function () { return CHAIN_1.CHAIN; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./wallet-event\"), exports);\n__exportStar(require(\"./wallet-response\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_ITEM_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES || (exports.CONNECT_EVENT_ERROR_CODES = {}));\nvar CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES = exports.CONNECT_ITEM_ERROR_CODES || (exports.CONNECT_ITEM_ERROR_CODES = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar connect_event_1 = require(\"./connect-event\");\nObject.defineProperty(exports, \"CONNECT_EVENT_ERROR_CODES\", { enumerable: true, get: function () { return connect_event_1.CONNECT_EVENT_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar send_transaction_rpc_response_1 = require(\"./send-transaction-rpc-response\");\nObject.defineProperty(exports, \"SEND_TRANSACTION_ERROR_CODES\", { enumerable: true, get: function () { return send_transaction_rpc_response_1.SEND_TRANSACTION_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES = exports.SEND_TRANSACTION_ERROR_CODES || (exports.SEND_TRANSACTION_ERROR_CODES = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = void 0;\nconst tweetnacl_util_1 = __importDefault(require(\"tweetnacl-util\"));\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = tweetnacl_util_1.default.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return tweetnacl_util_1.default.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = tweetnacl_util_1.default.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return tweetnacl_util_1.default.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(tweetnacl_util_1.default.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexports.Base64 = {\n encode,\n decode\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = void 0;\nfunction concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexports.concatUint8Arrays = concatUint8Arrays;\nfunction splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexports.splitToUint8Arrays = splitToUint8Arrays;\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexports.toHexString = toHexString;\nfunction hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\nexports.hexToByteArray = hexToByteArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = exports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = exports.Base64 = void 0;\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"Base64\", { enumerable: true, get: function () { return base64_1.Base64; } });\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"concatUint8Arrays\", { enumerable: true, get: function () { return binary_1.concatUint8Arrays; } });\nObject.defineProperty(exports, \"splitToUint8Arrays\", { enumerable: true, get: function () { return binary_1.splitToUint8Arrays; } });\nObject.defineProperty(exports, \"toHexString\", { enumerable: true, get: function () { return binary_1.toHexString; } });\nObject.defineProperty(exports, \"hexToByteArray\", { enumerable: true, get: function () { return binary_1.hexToByteArray; } });\nvar web_api_1 = require(\"./web-api\");\nObject.defineProperty(exports, \"isNode\", { enumerable: true, get: function () { return web_api_1.isNode; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = void 0;\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\nexports.isNode = isNode;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4027);\n"],"names":["WrongAddressError","TonConnectError","constructor","args","super","Object","setPrototypeOf","this","prototype","ParseHexError","DappMetadataError","UnknownError","UserRejectsError","ManifestContentErrorError","message","additionalMessage","ManifestNotFoundError","BadRequestError","UnknownAppError","LocalstorageNotFoundError","Error","options","prefix","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotInjectedError","WalletNotSupportFeatureError","FetchWalletsError","TonConnect","CHAIN","toUserFriendlyAddress","isWalletInfoInjected","value","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","isError","response","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","RpcParser","convertToRpcRequest","request","method","params","JSON","stringify","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","result","sendTransactionParser","isNode","eval","err","console","BridgeGateway","storage","bridgeUrl","sessionId","listener","errorsListener","ssePath","postPath","heartbeatMessage","defaultTtl","isClosed","bridgeGatewayStorage","HttpBridgeGatewayStorage","registerSession","url","URL","addPathToUrl","searchParams","append","lastEventId","getLastEventId","eventSource","EventSource","toString","Promise","resolve","reject","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","Base64","encode","close","e","readyState","CLOSED","CONNECTING","debug","data","storeLastEventId","bridgeIncomingMessage","parse","BridgeProvider","walletConnectionSource","type","pendingRequests","Map","nextRequestId","session","bridge","listeners","connectionStorage","BridgeConnectionStorage","static","bridgeConnectionStorage","connection","getHttpConnection","connect","sessionCrypto","SessionCrypto","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","forEach","connectEvent","sendRequest","id","encodedRequest","encrypt","hexToByteArray","walletPublicKey","catch","set","closeConnection","disconnect","removeBridgeAndSession","listen","callback","push","filter","walletMessage","decrypt","decode","toUint8Array","from","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","storeConnection","removeConnection","universalLink","PROTOCOL_VERSION","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","window","isWindowContainsWallet","injectedWallet","tonconnect","getInjectedConnection","jsBridgeKey","isWalletBrowser","auto","then","makeSubscriptions","connectEventError","closeAllListeners","eventsCallback","getWindow","storeKey","setItem","rawSession","sessionKeyPair","stringifyKeypair","rawConnection","removeItem","getConnection","stored","getItem","storedConnectionType","localStorage","key","removeLastEventId","walletsList","WalletsListManager","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","getWebPageManifest","DefaultStorage","getWallets","connected","account","wallet","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","all","getEmbeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","checkFeatureSupport","validUntil","tx","valid_until","onWalletDisconnected","isWalletConnectionSourceJS","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","walletStateInit","connectItems","tonProof","feature","features","includes","hexAddress","wc","hex","parts","split","length","parseInt","hexToBytes","parseHexAddress","addr","Int8Array","addressWithChecksum","Uint8Array","reg","byte","mask","Math","floor","crc16","replace","toByteMap","ord","s","length2","toLowerCase","i","doubled","hexSubstring","substring","hasOwnProperty","removeUrlLastSlash","slice","path","document","origin","location","walletsListCache","walletsListSource","fetchWalletsList","injectedWallets","embedded","walletsResponse","json","Array","isArray","every","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","map","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","universal_url","deepLink","injected","isWalletInjected","isInsideWalletBrowser","some","sseBridge","jsBridge","root","f","module","exports","nacl","util","validateBase64","test","TypeError","decodeUTF8","d","unescape","encodeURIComponent","b","charCodeAt","encodeUTF8","arr","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","encodeBase64","decodeBase64","call","len","btoa","gf","init","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","k","c","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","a","car25519","v","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","g","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","arguments","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","min","defineProperty","session_crypto_1","enumerable","__importDefault","mod","__esModule","utils_1","tweetnacl_1","createKeypairFromString","createKeypair","toHexString","default","createNonce","receiverPublicKey","encodedMessage","TextEncoder","encrypted","concatUint8Arrays","senderPublicKey","internalMessage","splitToUint8Arrays","decrypted","TextDecoder","__createBinding","create","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","__exportStar","CHAIN_1","CONNECT_ITEM_ERROR_CODES","connect_event_1","send_transaction_rpc_response_1","tweetnacl_util_1","urlSafe","uint8Array","encoded","encodeUint8Array","decodedUint8Array","decodeToUint8Array","toObject","buffer1","buffer2","mergedArray","array","index","byteArray","hexString","base64_1","binary_1","web_api_1","process","versions","node","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}
1
+ {"version":3,"file":"tonconnect-sdk.min.js","mappings":"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","sources":["webpack://TonConnectSDK/./src/errors/address/index.ts","webpack://TonConnectSDK/./src/errors/address/wrong-address.error.ts","webpack://TonConnectSDK/./src/errors/binary/index.ts","webpack://TonConnectSDK/./src/errors/binary/parse-hex.error.ts","webpack://TonConnectSDK/./src/errors/dapp/dapp-metadata.error.ts","webpack://TonConnectSDK/./src/errors/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-content-error.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-not-found.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/user-rejects.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/index.ts","webpack://TonConnectSDK/./src/errors/protocol/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/bad-request.error.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/unknown-app.error.ts","webpack://TonConnectSDK/./src/errors/storage/index.ts","webpack://TonConnectSDK/./src/errors/storage/localstorage-not-found.error.ts","webpack://TonConnectSDK/./src/errors/ton-connect.error.ts","webpack://TonConnectSDK/./src/errors/unknown.error.ts","webpack://TonConnectSDK/./src/errors/wallet/index.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-already-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-injected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-support-feature.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/fetch-wallets.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/index.ts","webpack://TonConnectSDK/./src/index.ts","webpack://TonConnectSDK/./src/models/index.ts","webpack://TonConnectSDK/./src/models/methods/index.ts","webpack://TonConnectSDK/./src/models/wallet/index.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-connection-source.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-info.ts","webpack://TonConnectSDK/./src/parsers/connect-errors-parser.ts","webpack://TonConnectSDK/./src/parsers/rpc-parser.ts","webpack://TonConnectSDK/./src/parsers/send-transaction-parser.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-gateway.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-provider.ts","webpack://TonConnectSDK/./src/provider/injected/injected-provider.ts","webpack://TonConnectSDK/./src/resources/protocol.ts","webpack://TonConnectSDK/./src/storage/bridge-connection-storage.ts","webpack://TonConnectSDK/./src/storage/default-storage.ts","webpack://TonConnectSDK/./src/storage/http-bridge-gateway-storage.ts","webpack://TonConnectSDK/./src/ton-connect.ts","webpack://TonConnectSDK/./src/utils/address.ts","webpack://TonConnectSDK/./src/utils/url.ts","webpack://TonConnectSDK/./src/utils/web-api.ts","webpack://TonConnectSDK/./src/wallets-list-manager.ts","webpack://TonConnectSDK/../../node_modules/tweetnacl-util/nacl-util.js","webpack://TonConnectSDK/../../node_modules/tweetnacl/nacl-fast.js","webpack://TonConnectSDK/../protocol/lib/cjs/crypto/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/crypto/session-crypto.js","webpack://TonConnectSDK/../protocol/lib/cjs/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/CHAIN.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/app-message/connect-request/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/app-message/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/app-message/request/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-event/connect-event.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-event/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-response/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/models/wallet-message/wallet-response/send-transaction-rpc-response.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/base64.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/binary.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/index.js","webpack://TonConnectSDK/../protocol/lib/cjs/utils/web-api.js","webpack://TonConnectSDK/webpack/bootstrap","webpack://TonConnectSDK/webpack/startup"],"sourcesContent":["export { WrongAddressError } from './wrong-address.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed address is in incorrect format.\n */\nexport class WrongAddressError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n","export { ParseHexError } from './parse-hex.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed hex is in incorrect format.\n */\nexport class ParseHexError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n","export * from './protocol';\nexport * from './wallet';\nexport * from './storage';\nexport * from './wallets-manager';\nexport * from './address';\nexport * from './binary';\nexport { TonConnectError } from './ton-connect.error';\nexport { UnknownError } from './unknown.error';\n","export { UserRejectsError } from 'src/errors/protocol/events/connect/user-rejects.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n private static additionalMessage =\n '\\nPassed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n\n constructor(message?: string) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n private static additionalMessage =\n '\\nManifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n\n constructor(message?: string) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n","export * from './connect';\n","export * from './events';\nexport * from './responses';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","export { BadRequestError } from './bad-request.error';\nexport { UnknownAppError } from './unknown-app.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n","export { LocalstorageNotFoundError } from './localstorage-not-found.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n","/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n private static prefix = '[TON_CONNECT_SDK_ERROR]';\n\n constructor(message?: string, options?: ErrorOptions) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n","export { WalletAlreadyConnectedError } from './wallet-already-connected.error';\nexport { WalletNotConnectedError } from './wallet-not-connected.error';\nexport { WalletNotInjectedError } from './wallet-not-injected.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n","export { FetchWalletsError } from './fetch-wallets.error';\n","export * from './ton-connect';\nexport * from './models';\nexport * from './errors';\nexport { IStorage } from './storage/models/storage.interface';\nexport { TonConnect as default } from './ton-connect';\nexport { ITonConnect } from './ton-connect.interface';\nexport { CHAIN, DeviceInfo } from '@tonconnect/protocol';\nexport { toUserFriendlyAddress } from './utils/address';\n","export * from './wallet';\nexport * from './methods';\nexport { DappMetadata } from './dapp/dapp-metadata';\nexport { TonConnectOptions } from './ton-connect-options';\n","export * from './connect';\nexport * from './send-transaction';\n","export type { Account } from './account';\nexport type { Wallet } from './wallet';\nexport type {\n WalletConnectionSource,\n WalletConnectionSourceHTTP,\n WalletConnectionSourceJS\n} from './wallet-connection-source';\nexport {\n WalletInfo,\n WalletInfoBase,\n WalletInfoInjected,\n WalletInfoRemote,\n isWalletInfoInjected\n} from './wallet-info';\n","export type WalletConnectionSource = WalletConnectionSourceHTTP | WalletConnectionSourceJS;\n\nexport interface WalletConnectionSourceHTTP {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletConnectionSourceJS {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n}\n\nexport function isWalletConnectionSourceJS(\n value: WalletConnectionSource\n): value is WalletConnectionSourceJS {\n return 'jsBridgeKey' in value;\n}\n","export interface WalletInfoBase {\n /**\n * Name of the wallet.\n */\n name: string;\n\n /**\n * Url to the icon of the wallet. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format.\n */\n imageUrl: string;\n\n /**\n * Will be used in the protocol later.\n */\n tondns?: string;\n\n /**\n * Info or landing page of your wallet. May be useful for TON newcomers.\n */\n aboutUrl: string;\n}\n\nexport interface WalletInfoRemote extends WalletInfoBase {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Native wallet app deepLink. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n deepLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletInfoInjected extends WalletInfoBase {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n\n /**\n * Indicates if the wallet currently is injected to the webpage.\n */\n injected: boolean;\n\n /**\n * Indicates if the dapp is opened inside this wallet's browser.\n */\n embedded: boolean;\n}\n\nexport type WalletInfo =\n | WalletInfoRemote\n | WalletInfoInjected\n | (WalletInfoRemote & WalletInfoInjected);\n\nexport interface WalletInfoDTO {\n name: string;\n image: string;\n tondns?: string;\n about_url: string;\n universal_url: string;\n\n deepLink: string;\n bridge: (WalletInfoBridgeRemoteDTO | WalletInfoBridgeInjectedDTO)[];\n}\n\nexport interface WalletInfoBridgeRemoteDTO {\n type: 'sse';\n url: string;\n}\n\nexport interface WalletInfoBridgeInjectedDTO {\n type: 'js';\n key: string;\n}\n\nexport function isWalletInfoInjected(value: WalletInfo): value is WalletInfoInjected {\n return 'jsBridgeKey' in value;\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { CONNECT_EVENT_ERROR_CODES, ConnectEventError } from '@tonconnect/protocol';\n\nconst connectEventErrorsCodes: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> =\n {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n };\n\nclass ConnectErrorsParser {\n parseError(error: ConnectEventError['payload']): TonConnectError {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n\n return new ErrorConstructor(error.message);\n }\n}\n\nexport const connectErrorsParser = new ConnectErrorsParser();\n","import {\n AppRequest,\n RpcMethod,\n WalletResponse,\n WalletResponseError,\n WalletResponseSuccess\n} from '@tonconnect/protocol';\nimport { WithoutId } from 'src/utils/types';\n\nexport abstract class RpcParser<T extends RpcMethod> {\n abstract convertToRpcRequest(...args: unknown[]): WithoutId<AppRequest<T>>;\n\n abstract convertFromRpcResponse(rpcResponse: WithoutId<WalletResponseSuccess<T>>): unknown;\n\n abstract parseAndThrowError(response: WithoutId<WalletResponseError<T>>): never;\n\n public isError(\n response: WithoutId<WalletResponse<T>>\n ): response is WithoutId<WalletResponseError<T>> {\n return 'error' in response;\n }\n}\n","import {\n CONNECT_EVENT_ERROR_CODES,\n SEND_TRANSACTION_ERROR_CODES,\n SendTransactionRpcRequest,\n SendTransactionRpcResponseError,\n SendTransactionRpcResponseSuccess\n} from '@tonconnect/protocol';\nimport { BadRequestError, TonConnectError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { RpcParser } from 'src/parsers/rpc-parser';\nimport { WithoutId } from 'src/utils/types';\n\nconst sendTransactionErrors: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\n\nclass SendTransactionParser extends RpcParser<'sendTransaction'> {\n convertToRpcRequest(\n request: Omit<SendTransactionRequest, 'validUntil'> & { valid_until: number }\n ): WithoutId<SendTransactionRpcRequest> {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n\n parseAndThrowError(response: WithoutId<SendTransactionRpcResponseError>): never {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n\n throw new ErrorConstructor(response.error.message);\n }\n\n convertFromRpcResponse(\n rpcResponse: WithoutId<SendTransactionRpcResponseSuccess>\n ): SendTransactionResponse {\n return {\n boc: rpcResponse.result\n };\n }\n}\n\nexport const sendTransactionParser = new SendTransactionParser();\n","import { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { HttpBridgeGatewayStorage } from 'src/storage/http-bridge-gateway-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { addPathToUrl } from 'src/utils/url';\n\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n } catch (err) {\n console.error(err);\n }\n}\n\nexport class BridgeGateway {\n private readonly ssePath = 'events';\n\n private readonly postPath = 'message';\n\n private readonly heartbeatMessage = 'heartbeat';\n\n private readonly defaultTtl = 300;\n\n private eventSource: EventSource | undefined;\n\n private isClosed = false;\n\n private readonly bridgeGatewayStorage: HttpBridgeGatewayStorage;\n\n constructor(\n storage: IStorage,\n private readonly bridgeUrl: string,\n public readonly sessionId: string,\n private readonly listener: (msg: BridgeIncomingMessage) => void,\n private readonly errorsListener: (err: Event) => void\n ) {\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n\n public async registerSession(): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n\n const lastEventId = await this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n\n this.eventSource = new EventSource(url.toString());\n\n return new Promise((resolve, reject) => {\n this.eventSource!.onerror = reject;\n this.eventSource!.onopen! = (): void => {\n this.eventSource!.onerror = this.errorsHandler.bind(this);\n this.eventSource!.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n }\n\n public async send(message: Uint8Array, receiver: string, ttl?: number): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n await fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n }\n\n public close(): void {\n this.isClosed = true;\n this.eventSource?.close();\n }\n\n private errorsHandler(e: Event): void {\n if (!this.isClosed) {\n if (this.eventSource?.readyState === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n\n if (this.eventSource?.readyState === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n\n this.errorsListener(e);\n }\n }\n\n private async messagesHandler(e: MessageEvent<string>): Promise<void> {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n\n await this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n\n if (!this.isClosed) {\n let bridgeIncomingMessage: BridgeIncomingMessage;\n\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n } catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n\n this.listener(bridgeIncomingMessage);\n }\n }\n}\n","import {\n Base64,\n SessionCrypto,\n AppRequest,\n ConnectRequest,\n RpcMethod,\n WalletEvent,\n WalletResponse,\n WalletMessage,\n hexToByteArray,\n ConnectEventSuccess,\n TonAddressItemReply\n} from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletConnectionSourceHTTP } from 'src/models/wallet/wallet-connection-source';\nimport { BridgeGateway } from 'src/provider/bridge/bridge-gateway';\nimport { BridgeConnectionHttp } from 'src/provider/bridge/models/bridge-connection';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { BridgePartialSession, BridgeSession } from 'src/provider/bridge/models/bridge-session';\nimport { HTTPProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { PROTOCOL_VERSION } from 'src/resources/protocol';\n\nexport class BridgeProvider implements HTTPProvider {\n public static async fromStorage(storage: IStorage): Promise<BridgeProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n }\n\n public readonly type = 'http';\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private readonly pendingRequests = new Map<\n string,\n (response: WithoutId<WalletResponse<RpcMethod>>) => void\n >();\n\n private nextRequestId = 0;\n\n private session: BridgeSession | BridgePartialSession | null = null;\n\n private bridge: BridgeGateway | null = null;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(\n private readonly storage: IStorage,\n private readonly walletConnectionSource: WalletConnectionSourceHTTP\n ) {\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n\n public connect(message: ConnectRequest): string {\n this.bridge?.close();\n const sessionCrypto = new SessionCrypto();\n\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n this.bridge.registerSession();\n\n return this.generateUniversalLink(message);\n }\n\n public async restoreConnection(): Promise<void> {\n this.bridge?.close();\n const storedConnection = await this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n\n this.session = storedConnection.session;\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n storedConnection.session.sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n\n await this.bridge.registerSession();\n\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n }\n\n public sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n\n const encodedRequest = this.session!.sessionCrypto.encrypt(\n JSON.stringify({ ...request, id }),\n hexToByteArray(this.session.walletPublicKey)\n );\n\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n\n public closeConnection(): void {\n this.bridge?.close();\n this.listeners = [];\n this.session = null;\n this.bridge = null;\n }\n\n public disconnect(): Promise<void> {\n this.bridge?.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n\n public listen(callback: (e: WalletEvent) => void): () => void {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n\n private async gatewayListener(bridgeIncomingMessage: BridgeIncomingMessage): Promise<void> {\n const walletMessage: WalletMessage = JSON.parse(\n this.session!.sessionCrypto.decrypt(\n Base64.decode(bridgeIncomingMessage.message).toUint8Array(),\n hexToByteArray(bridgeIncomingMessage.from)\n )\n );\n\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n\n if (walletMessage.event === 'connect') {\n await this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n\n if (walletMessage.event === 'disconnect') {\n await this.removeBridgeAndSession();\n }\n\n this.listeners.forEach(listener => listener(walletMessage));\n }\n\n private async gatewayErrorsListener(e: Event): Promise<void> {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n }\n\n private async updateSession(\n connectEvent: ConnectEventSuccess,\n walletPublicKey: string\n ): Promise<void> {\n this.session = {\n ...this.session!,\n walletPublicKey\n };\n\n const tonAddrItem: TonAddressItemReply = connectEvent.payload.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply;\n\n const connectEventToSave: BridgeConnectionHttp['connectEvent'] = {\n ...connectEvent,\n payload: {\n ...connectEvent.payload,\n items: [tonAddrItem]\n }\n };\n\n await this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n }\n\n private async removeBridgeAndSession(): Promise<void> {\n this.session = null;\n this.bridge = null;\n await this.connectionStorage.removeConnection();\n }\n\n private generateUniversalLink(message: ConnectRequest): string {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session!.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n}\n","import { WalletNotInjectedError } from 'src/errors/wallet/wallet-not-injected.error';\nimport {\n AppRequest,\n RpcMethod,\n WalletResponse,\n ConnectRequest,\n WalletEvent,\n ConnectEvent\n} from '@tonconnect/protocol';\nimport { InjectedWalletApi } from 'src/provider/injected/models/injected-wallet-api';\nimport { InternalProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { getWindow } from 'src/utils/web-api';\nimport { PROTOCOL_VERSION } from 'src/resources/protocol';\n\ntype WindowWithTon<T extends string> = {\n [key in T]: {\n tonconnect: InjectedWalletApi;\n };\n} & Window;\n\nexport class InjectedProvider<T extends string = string> implements InternalProvider {\n private static window = getWindow();\n\n public static async fromStorage(storage: IStorage): Promise<InjectedProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(storage, connection.jsBridgeKey);\n }\n\n public static isWalletInjected(injectedWalletKey: string): boolean {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n\n public static isInsideWalletBrowser(injectedWalletKey: string): boolean {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey]!.tonconnect.isWalletBrowser;\n }\n\n return false;\n }\n\n private static isWindowContainsWallet<T extends string>(\n window: Window | undefined,\n injectedWalletKey: string\n ): window is WindowWithTon<T> {\n return (\n !!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey as keyof Window] === 'object' &&\n 'tonconnect' in window[injectedWalletKey as keyof Window]\n );\n }\n\n public readonly type = 'injected';\n\n private unsubscribeCallback: (() => void) | null = null;\n\n private injectedWallet: InjectedWalletApi;\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private listenSubscriptions = false;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(storage: IStorage, private readonly injectedWalletKey: T) {\n const window: Window | undefined | WindowWithTon<T> = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n\n this.connectionStorage = new BridgeConnectionStorage(storage);\n this.injectedWallet = window[injectedWalletKey]!.tonconnect!;\n }\n\n public connect(message: ConnectRequest): void {\n this._connect(PROTOCOL_VERSION, message);\n }\n\n public async restoreConnection(): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listeners.forEach(listener => listener(connectEvent));\n } else {\n await this.connectionStorage.removeConnection();\n }\n } catch (e) {\n await this.connectionStorage.removeConnection();\n console.error(e);\n }\n }\n\n public closeConnection(): void {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n\n public disconnect(): Promise<void> {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return this.connectionStorage.removeConnection();\n }\n\n private closeAllListeners(): void {\n this.listenSubscriptions = false;\n this.listeners = [];\n this.unsubscribeCallback?.();\n }\n\n public listen(eventsCallback: (e: WalletEvent) => void): () => void {\n this.listeners.push(eventsCallback);\n return () =>\n (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n\n public async sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return this.injectedWallet.send<T>({ ...request, id: '0' });\n }\n\n private async _connect(protocolVersion: number, message: ConnectRequest): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.connect(protocolVersion, message);\n\n if (connectEvent.event === 'connect') {\n await this.updateSession();\n this.makeSubscriptions();\n }\n this.listeners.forEach(listener => listener(connectEvent));\n } catch (e) {\n console.debug(e);\n const connectEventError: ConnectEvent = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e?.toString()\n }\n };\n\n this.listeners.forEach(listener => listener(connectEventError));\n }\n }\n\n private makeSubscriptions(): void {\n this.listenSubscriptions = true;\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n\n private updateSession(): Promise<void> {\n return this.connectionStorage.storeConnection({\n type: 'injected',\n jsBridgeKey: this.injectedWalletKey\n });\n }\n}\n","export const PROTOCOL_VERSION = 2;\n","import { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeSessionRaw } from 'src/provider/bridge/models/bridge-session-raw';\nimport {\n BridgeConnection,\n BridgeConnectionHttp,\n BridgeConnectionHttpRaw,\n BridgeConnectionInjected,\n BridgeConnectionRaw\n} from 'src/provider/bridge/models/bridge-connection';\nimport { IStorage } from 'src/storage/models/storage.interface';\n\nexport class BridgeConnectionStorage {\n private readonly storeKey = 'ton-connect-storage_bridge-connection';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeConnection(connection: BridgeConnection): Promise<void> {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n\n const rawSession: BridgeSessionRaw = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n\n const rawConnection: BridgeConnectionHttpRaw = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n\n public async removeConnection(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getConnection(): Promise<BridgeConnection | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n const connection: BridgeConnectionRaw = JSON.parse(stored);\n\n if (connection.type === 'injected') {\n return connection;\n }\n\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n }\n\n public async getHttpConnection(): Promise<BridgeConnectionHttp> {\n const connection = await this.getConnection();\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while nothing is stored'\n );\n }\n\n if (connection.type === 'injected') {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while injected connection is stored'\n );\n }\n\n return connection;\n }\n\n public async getInjectedConnection(): Promise<BridgeConnectionInjected> {\n const connection = await this.getConnection();\n\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while nothing is stored'\n );\n }\n\n if (connection?.type === 'http') {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while HTTP connection is stored'\n );\n }\n\n return connection;\n }\n\n public async storedConnectionType(): Promise<BridgeConnection['type'] | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection: BridgeConnection = JSON.parse(stored);\n return connection.type;\n }\n}\n","import { LocalstorageNotFoundError } from 'src/errors/storage/localstorage-not-found.error';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { getWindow } from 'src/utils/web-api';\n\nexport class DefaultStorage implements IStorage {\n private readonly window: Window;\n\n constructor() {\n const window = getWindow();\n\n if (!window?.localStorage) {\n throw new LocalstorageNotFoundError();\n }\n\n this.window = window;\n }\n\n public async getItem(key: string): Promise<string | null> {\n return Promise.resolve(this.window.localStorage.getItem(key));\n }\n\n public async removeItem(key: string): Promise<void> {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n }\n\n setItem(key: string, value: string): Promise<void> {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n","import { IStorage } from 'src/storage/models/storage.interface';\n\nexport class HttpBridgeGatewayStorage {\n private readonly storeKey = 'ton-connect-storage_http-bridge-gateway';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeLastEventId(lastEventId: string): Promise<void> {\n return this.storage.setItem(this.storeKey, lastEventId);\n }\n\n public async removeLastEventId(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getLastEventId(): Promise<string | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n return stored;\n }\n}\n","import {\n ConnectEventError,\n ConnectEventSuccess,\n ConnectRequest,\n SendTransactionRpcResponseSuccess,\n TonAddressItemReply,\n WalletEvent,\n TonProofItemReply,\n ConnectItem,\n Feature\n} from '@tonconnect/protocol';\nimport { DappMetadataError } from 'src/errors/dapp/dapp-metadata.error';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletAlreadyConnectedError } from 'src/errors/wallet/wallet-already-connected.error';\nimport { WalletNotConnectedError } from 'src/errors/wallet/wallet-not-connected.error';\nimport { WalletNotSupportFeatureError } from 'src/errors/wallet/wallet-not-support-feature.error';\nimport { Account, Wallet, WalletConnectionSource, WalletInfo } from 'src/models';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { ConnectAdditionalRequest } from 'src/models/methods/connect/connect-additional-request';\nimport { TonConnectOptions } from 'src/models/ton-connect-options';\nimport {\n isWalletConnectionSourceJS,\n WalletConnectionSourceJS\n} from 'src/models/wallet/wallet-connection-source';\nimport { connectErrorsParser } from 'src/parsers/connect-errors-parser';\nimport { sendTransactionParser } from 'src/parsers/send-transaction-parser';\nimport { BridgeProvider } from 'src/provider/bridge/bridge-provider';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\nimport { Provider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { DefaultStorage } from 'src/storage/default-storage';\nimport { ITonConnect } from 'src/ton-connect.interface';\nimport { getWebPageManifest } from 'src/utils/web-api';\nimport { WalletsListManager } from 'src/wallets-list-manager';\n\nexport class TonConnect implements ITonConnect {\n private static readonly walletsList = new WalletsListManager();\n\n /**\n * Check if specified wallet is injected and available to use with the app.\n * @param walletJSKey target wallet's js bridge key.\n */\n public static isWalletInjected = (walletJSKey: string): boolean =>\n InjectedProvider.isWalletInjected(walletJSKey);\n\n /**\n * Check if the app is opened inside specified wallet's browser.\n * @param walletJSKey target wallet's js bridge key.\n */\n public static isInsideWalletBrowser = (walletJSKey: string): boolean =>\n InjectedProvider.isInsideWalletBrowser(walletJSKey);\n\n /**\n * Returns available wallets list.\n */\n public static getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\n\n private readonly walletsList = new WalletsListManager();\n\n private readonly dappSettings: Omit<Required<TonConnectOptions>, 'walletsListSource'>;\n\n private readonly bridgeConnectionStorage: BridgeConnectionStorage;\n\n private _wallet: Wallet | null = null;\n\n private provider: Provider | null = null;\n\n private statusChangeSubscriptions: ((walletInfo: Wallet | null) => void)[] = [];\n\n private statusChangeErrorSubscriptions: ((err: TonConnectError) => void)[] = [];\n\n /**\n * Shows if the wallet is connected right now.\n */\n public get connected(): boolean {\n return this._wallet !== null;\n }\n\n /**\n * Current connected account or null if no account is connected.\n */\n public get account(): Account | null {\n return this._wallet?.account || null;\n }\n\n /**\n * Current connected wallet or null if no account is connected.\n */\n public get wallet(): Wallet | null {\n return this._wallet;\n }\n\n private set wallet(value: Wallet | null) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n\n constructor(options?: TonConnectOptions) {\n this.dappSettings = {\n manifestUrl: options?.manifestUrl || getWebPageManifest(),\n storage: options?.storage || new DefaultStorage()\n };\n\n this.walletsList = new WalletsListManager(options?.walletsListSource);\n\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError(\n 'Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest'\n );\n }\n\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n\n /**\n * Returns available wallets list.\n */\n public getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\n\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n public onStatusChange(\n callback: (wallet: Wallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): () => void {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(\n item => item !== callback\n );\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(\n item => item !== errorsHandler\n );\n }\n };\n }\n\n /**\n * Generates universal link for an external wallet and subscribes to the wallet's bridge, or sends connect request to the injected wallet.\n * @param wallet wallet's bridge url and universal link for an external wallet or jsBridge key for the injected wallet.\n * @param request (optional) additional request to pass to the wallet while connect (currently only ton_proof is available).\n * @returns universal link if external wallet was passed or void for the injected wallet.\n */\n public connect<T extends WalletConnectionSource>(\n wallet: T,\n request?: ConnectAdditionalRequest\n ): T extends WalletConnectionSourceJS ? void : string;\n public connect(\n wallet: WalletConnectionSource,\n request?: ConnectAdditionalRequest\n ): void | string {\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n\n this.provider?.closeConnection();\n this.provider = this.createProvider(wallet);\n\n return this.provider.connect(this.createConnectRequest(request));\n }\n\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n public async restoreConnection(): Promise<void> {\n const [bridgeConnectionType, embeddedWallet] = await Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = await BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = await InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = await this.createProvider(embeddedWallet);\n } else {\n return;\n }\n }\n\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n }\n\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n public async sendTransaction(\n transaction: SendTransactionRequest\n ): Promise<SendTransactionResponse> {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n\n const { validUntil, ...tx } = transaction;\n const response = await this.provider!.sendRequest(\n sendTransactionParser.convertToRpcRequest({ ...tx, valid_until: validUntil })\n );\n\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n\n return sendTransactionParser.convertFromRpcResponse(\n response as SendTransactionRpcResponseSuccess\n );\n }\n\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n await this.provider!.disconnect();\n this.onWalletDisconnected();\n }\n\n private createProvider(wallet: WalletConnectionSource): Provider {\n let provider: Provider;\n\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(this.dappSettings.storage, wallet.jsBridgeKey);\n } else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n\n private walletEventsListener(e: WalletEvent): void {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n\n private onWalletConnected(connectEvent: ConnectEventSuccess['payload']): void {\n const tonAccountItem: TonAddressItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply | undefined;\n\n const tonProofItem: TonProofItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_proof'\n ) as TonProofItemReply | undefined;\n\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n\n const wallet: Wallet = {\n device: connectEvent.device,\n provider: this.provider!.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit\n }\n };\n\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n\n this.wallet = wallet;\n }\n\n private onWalletConnectError(connectEventError: ConnectEventError['payload']): void {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n\n console.debug(error);\n\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n\n private onWalletDisconnected(): void {\n this.wallet = null;\n }\n\n private checkConnection(): void | never {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n\n private checkFeatureSupport(feature: Feature): void | never {\n if (!this.wallet?.device.features.includes(feature)) {\n throw new WalletNotSupportFeatureError();\n }\n }\n\n private createConnectRequest(request?: ConnectAdditionalRequest): ConnectRequest {\n const items: ConnectItem[] = [\n {\n name: 'ton_addr'\n }\n ];\n\n if (request?.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\n","import { WrongAddressError, ParseHexError } from 'src/errors';\nimport { Base64 } from '@tonconnect/protocol';\n\n/**\n * Converts raw TON address to bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses}\n * @param hexAddress raw TON address formatted as \"0:<hex string without 0x>\".\n */\nexport function toUserFriendlyAddress(hexAddress: string): string {\n const { wc, hex } = parseHexAddress(hexAddress);\n\n const bounceableTag = 0x11;\n const addr = new Int8Array(34);\n addr[0] = bounceableTag;\n addr[1] = wc;\n addr.set(hex, 2);\n\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n\n let addressBase64 = Base64.encode(addressWithChecksum);\n\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction parseHexAddress(hexAddress: string): { wc: 0 | -1; hex: Uint8Array } {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(\n `Wrong address ${hexAddress}. Address must include \":\" only once.`\n );\n }\n\n const wc = parseInt(parts[0]!);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(\n `Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`\n );\n }\n\n const hex = parts[1];\n if (hex?.length !== 64) {\n throw new WrongAddressError(\n `Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex?.length} received.`\n );\n }\n\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\n\nfunction crc16(data: ArrayLike<number>): Uint8Array {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\n\nconst toByteMap: Record<string, number> = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring]!;\n }\n return result;\n}\n","export function removeUrlLastSlash(url: string): string {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n\n return url;\n}\n\nexport function addPathToUrl(url: string, path: string): string {\n return removeUrlLastSlash(url) + '/' + path;\n}\n","export function getWindow(): Window | undefined {\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n return window;\n}\n\nexport function getDocument(): Document | undefined {\n if (typeof document === 'undefined') {\n return undefined;\n }\n\n return document;\n}\n\nexport function getWebPageManifest(): string {\n const origin = getWindow()?.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n\n return '';\n}\n","import { FetchWalletsError } from 'src/errors/wallets-manager/fetch-wallets.error';\nimport {\n WalletInfoRemote,\n WalletInfoInjected,\n WalletInfo,\n WalletInfoDTO,\n isWalletInfoInjected\n} from 'src/models/wallet/wallet-info';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\n\nexport class WalletsListManager {\n private walletsListCache: Promise<WalletInfo[]> | null = null;\n\n private readonly walletsListSource: string =\n 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n\n constructor(walletsListSource?: string) {\n if (walletsListSource) {\n this.walletsListSource = walletsListSource;\n }\n }\n\n public async getWallets(): Promise<WalletInfo[]> {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n\n return this.walletsListCache;\n }\n\n public async getEmbeddedWallet(): Promise<WalletInfoInjected | null> {\n const walletsList = await this.getWallets();\n const embeddedWallets = walletsList.filter(\n item => isWalletInfoInjected(item) && item.embedded\n ) as WalletInfoInjected[];\n\n if (embeddedWallets.length !== 1) {\n return null;\n }\n\n return embeddedWallets[0]!;\n }\n\n private async fetchWalletsList(): Promise<WalletInfo[]> {\n try {\n const walletsResponse = await fetch(this.walletsListSource);\n const walletsList: WalletInfoDTO[] = await walletsResponse.json();\n\n if (\n !Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))\n ) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n } catch (e) {\n throw new FetchWalletsError(e);\n }\n }\n\n private walletConfigDTOListToWalletConfigList(walletConfigDTO: WalletInfoDTO[]): WalletInfo[] {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig: WalletInfo = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n } as WalletInfo;\n\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n (walletConfig as WalletInfoRemote).bridgeUrl = bridge.url;\n (walletConfig as WalletInfoRemote).universalLink =\n walletConfigDTO.universal_url;\n (walletConfig as WalletInfoRemote).deepLink = walletConfigDTO.deepLink;\n }\n\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n (walletConfig as WalletInfoInjected).jsBridgeKey = jsBridgeKey;\n (walletConfig as WalletInfoInjected).injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n (walletConfig as WalletInfoInjected).embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n\n return walletConfig;\n });\n }\n\n private isCorrectWalletConfigDTO(value: unknown): value is WalletInfoDTO {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n\n if (\n !('bridge' in value) ||\n !Array.isArray((value as { bridge: unknown }).bridge) ||\n !(value as { bridge: unknown[] }).bridge.length\n ) {\n return false;\n }\n\n const bridge = (value as { bridge: unknown[] }).bridge;\n\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n\n const sseBridge = bridge.find(item => (item as { type: string }).type === 'sse');\n\n if (sseBridge) {\n if (\n !('url' in sseBridge) ||\n !(sseBridge as { url: string }).url ||\n !(value as { universal_url: string }).universal_url\n ) {\n return false;\n }\n }\n\n const jsBridge = bridge.find(item => (item as { type: string }).type === 'js');\n\n if (jsBridge) {\n if (!('key' in jsBridge) || !(jsBridge as { key: string }).key) {\n return false;\n }\n }\n\n return true;\n }\n}\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nvar session_crypto_1 = require(\"./session-crypto\");\nObject.defineProperty(exports, \"SessionCrypto\", { enumerable: true, get: function () { return session_crypto_1.SessionCrypto; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nconst utils_1 = require(\"../utils\");\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nif ((0, utils_1.isNode)()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = (0, utils_1.toHexString)(this.keyPair.publicKey);\n }\n createKeypair() {\n return tweetnacl_1.default.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: (0, utils_1.hexToByteArray)(keyPair.publicKey),\n secretKey: (0, utils_1.hexToByteArray)(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = tweetnacl_1.default.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return (0, utils_1.concatUint8Arrays)(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = (0, utils_1.splitToUint8Arrays)(message, this.nonceLength);\n const decrypted = tweetnacl_1.default.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error(`Decryption error: \\n message: ${message.toString()} \\n sender pubkey: ${senderPublicKey.toString()} \\n keypair pubkey: ${this.keyPair.publicKey.toString()} \\n keypair secretkey: ${this.keyPair.secretKey.toString()}`);\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: (0, utils_1.toHexString)(this.keyPair.publicKey),\n secretKey: (0, utils_1.toHexString)(this.keyPair.secretKey)\n };\n }\n}\nexports.SessionCrypto = SessionCrypto;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./crypto\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN = exports.CHAIN || (exports.CHAIN = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./request\"), exports);\n__exportStar(require(\"./connect-request\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\n__exportStar(require(\"./app-message\"), exports);\n__exportStar(require(\"./wallet-message\"), exports);\nvar CHAIN_1 = require(\"./CHAIN\");\nObject.defineProperty(exports, \"CHAIN\", { enumerable: true, get: function () { return CHAIN_1.CHAIN; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./wallet-event\"), exports);\n__exportStar(require(\"./wallet-response\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_ITEM_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES || (exports.CONNECT_EVENT_ERROR_CODES = {}));\nvar CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES = exports.CONNECT_ITEM_ERROR_CODES || (exports.CONNECT_ITEM_ERROR_CODES = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar connect_event_1 = require(\"./connect-event\");\nObject.defineProperty(exports, \"CONNECT_EVENT_ERROR_CODES\", { enumerable: true, get: function () { return connect_event_1.CONNECT_EVENT_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar send_transaction_rpc_response_1 = require(\"./send-transaction-rpc-response\");\nObject.defineProperty(exports, \"SEND_TRANSACTION_ERROR_CODES\", { enumerable: true, get: function () { return send_transaction_rpc_response_1.SEND_TRANSACTION_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES = exports.SEND_TRANSACTION_ERROR_CODES || (exports.SEND_TRANSACTION_ERROR_CODES = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = void 0;\nconst tweetnacl_util_1 = __importDefault(require(\"tweetnacl-util\"));\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = tweetnacl_util_1.default.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return tweetnacl_util_1.default.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = tweetnacl_util_1.default.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return tweetnacl_util_1.default.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(tweetnacl_util_1.default.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexports.Base64 = {\n encode,\n decode\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = void 0;\nfunction concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexports.concatUint8Arrays = concatUint8Arrays;\nfunction splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexports.splitToUint8Arrays = splitToUint8Arrays;\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexports.toHexString = toHexString;\nfunction hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\nexports.hexToByteArray = hexToByteArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = exports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = exports.Base64 = void 0;\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"Base64\", { enumerable: true, get: function () { return base64_1.Base64; } });\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"concatUint8Arrays\", { enumerable: true, get: function () { return binary_1.concatUint8Arrays; } });\nObject.defineProperty(exports, \"splitToUint8Arrays\", { enumerable: true, get: function () { return binary_1.splitToUint8Arrays; } });\nObject.defineProperty(exports, \"toHexString\", { enumerable: true, get: function () { return binary_1.toHexString; } });\nObject.defineProperty(exports, \"hexToByteArray\", { enumerable: true, get: function () { return binary_1.hexToByteArray; } });\nvar web_api_1 = require(\"./web-api\");\nObject.defineProperty(exports, \"isNode\", { enumerable: true, get: function () { return web_api_1.isNode; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = void 0;\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\nexports.isNode = isNode;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4027);\n"],"names":["WrongAddressError","TonConnectError","constructor","args","super","Object","setPrototypeOf","this","prototype","ParseHexError","DappMetadataError","UnknownError","UserRejectsError","ManifestContentErrorError","message","additionalMessage","ManifestNotFoundError","BadRequestError","UnknownAppError","LocalstorageNotFoundError","Error","options","prefix","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotInjectedError","WalletNotSupportFeatureError","FetchWalletsError","TonConnect","CHAIN","toUserFriendlyAddress","isWalletInfoInjected","value","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","isError","response","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","RpcParser","convertToRpcRequest","request","method","params","JSON","stringify","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","result","sendTransactionParser","isNode","eval","err","console","BridgeGateway","storage","bridgeUrl","sessionId","listener","errorsListener","ssePath","postPath","heartbeatMessage","defaultTtl","isClosed","bridgeGatewayStorage","HttpBridgeGatewayStorage","registerSession","url","URL","addPathToUrl","searchParams","append","lastEventId","getLastEventId","eventSource","EventSource","toString","Promise","resolve","reject","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","Base64","encode","close","e","readyState","CLOSED","CONNECTING","debug","data","storeLastEventId","bridgeIncomingMessage","parse","BridgeProvider","walletConnectionSource","type","pendingRequests","Map","nextRequestId","session","bridge","listeners","connectionStorage","BridgeConnectionStorage","static","bridgeConnectionStorage","connection","getHttpConnection","connect","sessionCrypto","SessionCrypto","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","forEach","connectEvent","sendRequest","id","encodedRequest","encrypt","hexToByteArray","walletPublicKey","catch","set","closeConnection","disconnect","removeBridgeAndSession","listen","callback","push","filter","walletMessage","decrypt","decode","toUint8Array","from","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","storeConnection","removeConnection","universalLink","PROTOCOL_VERSION","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","window","isWindowContainsWallet","injectedWallet","tonconnect","getInjectedConnection","jsBridgeKey","isWalletBrowser","_connect","makeSubscriptions","closeAllListeners","eventsCallback","protocolVersion","connectEventError","getWindow","storeKey","setItem","rawSession","sessionKeyPair","stringifyKeypair","rawConnection","removeItem","getConnection","stored","getItem","storedConnectionType","localStorage","key","removeLastEventId","walletsList","WalletsListManager","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","getWebPageManifest","DefaultStorage","walletsListSource","getWallets","connected","account","wallet","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","all","getEmbeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","checkFeatureSupport","validUntil","tx","valid_until","onWalletDisconnected","isWalletConnectionSourceJS","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","walletStateInit","connectItems","tonProof","feature","features","includes","isWalletInjected","walletJSKey","isInsideWalletBrowser","hexAddress","wc","hex","parts","split","length","parseInt","hexToBytes","parseHexAddress","addr","Int8Array","addressWithChecksum","Uint8Array","reg","byte","mask","Math","floor","crc16","replace","toByteMap","ord","s","length2","toLowerCase","i","doubled","hexSubstring","substring","hasOwnProperty","removeUrlLastSlash","slice","path","document","origin","location","walletsListCache","fetchWalletsList","embeddedWallets","embedded","walletsResponse","json","Array","isArray","every","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","map","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","universal_url","deepLink","injected","some","sseBridge","jsBridge","root","f","module","exports","nacl","util","validateBase64","test","TypeError","decodeUTF8","d","unescape","encodeURIComponent","b","charCodeAt","encodeUTF8","arr","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","encodeBase64","decodeBase64","call","len","btoa","gf","init","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","k","c","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","a","car25519","v","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","g","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","arguments","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","min","defineProperty","session_crypto_1","enumerable","__importDefault","mod","__esModule","utils_1","tweetnacl_1","createKeypairFromString","createKeypair","toHexString","default","createNonce","receiverPublicKey","encodedMessage","TextEncoder","encrypted","concatUint8Arrays","senderPublicKey","internalMessage","splitToUint8Arrays","decrypted","TextDecoder","__createBinding","create","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","__exportStar","CHAIN_1","CONNECT_ITEM_ERROR_CODES","connect_event_1","send_transaction_rpc_response_1","tweetnacl_util_1","urlSafe","uint8Array","encoded","encodeUint8Array","decodedUint8Array","decodeToUint8Array","toObject","buffer1","buffer2","mergedArray","array","index","byteArray","hexString","base64_1","binary_1","web_api_1","process","versions","node","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}